Ubuntu PXE安装服务器部署
Ubuntu PXE安装服务器部署
通过PXE自动进行服务器操作系统的安装是大规模服务器运维过程中的必要手段,本文档详细描述PXE服务器的部署和配置。
PXE自动服务器安装原理(以下内容来自互联网)
PXE(Pre-boot execution environment)是intel公司开发的一个技术,支持工作站从远程服务器上下载镜像,并由此启动操作系统。在启动过程中,终端请求分配IP地址,在使用TFTP协议下载一个启动软件包到本地内存中执行,最后由这个启动软件包完成终端基本软件的设置,从而完成操作系统的安装。
PXE的工作流程如下:
PXE服务器需要提供的服务
在通过PXE安装ubuntu操作系统时,PXE服务器需要提供如下4个服务
DHCP: dhcp服务用于在OS安装过程中进行IP地址的分配。
TFTP:TFTP服务用于OS安装过程中请求下载系统引导文件。
NFS:NFS服务用于OS安装过程请求下载内核镜像和对应配置文件。
HTTP:HTTP服务用于Ubuntu安装过程中请求软件包
DHCP服务安装和配置
DHCP服务用于向客户端动态分配IP地址。我们当前使用软件isc-dhcp-server提供DHCP服务。
安装:
在ununtu系统下,通过执行apt-get install isc-dhcp-server完成安装。
配置:
1:修改/etc/default/isc-dhcp-server配置文件,指定提供dhcp服务的网口
例如:通过本地ens38网口对外提供dhcp服务,在修改该文件,将INTERFACESv4和INTERFACESv6内容指定为ens38网口
2:修改/etc/dhcp/dhcpd.conf配置文件,指定动态分配IP地址时的IP地址端,下载的文件名称等信息。
修改dhcpd.conf文件中的 subnet配置域,如下是一个具体例子:
配置参数说明:
filename |
PXE引导启动文件名称,当前固定为 pxelinux.0 |
next-server |
TFTP服务器地址(可以与DHCP服务共服务器部署,也可以分部署) |
allow booting |
允许在该段PXE |
allow bootp |
允许在该段PXE |
range |
描述分配的IP地址段 |
Option routers |
描述的网关地址 |
Option subnet-mask |
掩码 |
Option broadcast-address |
广播地址 |
如果要根据MAC地址为服务器分配固定的IP地址,则需要打开host配置,样例如下:
TFTP服务安装和配置
TFTP服务用于在启动阶段向客户段提供引导文件,当前我们使用tftpd-hpa提供tftp服务
安装:
在Ubuntu下通过如下命令安装tftpd-hpa服务。
apt-get install tftpd-hpa
配置:
修改/etc/default/tftpd-hpa文件,修改tftp服务指定的根目录,配置样例如下:
nfs服务安装和配置
NFS服务可以提供给安装阶段下载内核文件
安装:
在ubuntu下通过如下方式安装nfs服务。
apt get-install nfs-kernel-server
配置:
修改/etc/exports文件,为nfs指定服务根目录,配置样例如下:
HTTP服务的安装和配置
在软件包安装过程中,http为Ubuntu提供软件源服务。在这里,我们使用apache提供http服务。
安装:
执行apt-get install apache2进行安装。
配置:
安装完成后,修改/etc/apache2/sites-available/000-default.conf文件,为其指定http服务根目录,配置样例如下:
注意配置文件中的 DocumentRoot项和Directory标签,这两个位置与后面OS安装相关,详细信息后面说明。
被安装OS文件准备
我们从标准的ubuntu ISO镜像文件中获取系统安装的文件。
1:使用mount命令挂载Ubuntu ISO镜像文件,这里以ubuntu Server版本为例子,将ISO镜像文件挂载到1604目录
mount -t iso9660 ubuntu-16.04.5-server-amd64.iso 1604
2:为TFTP根目录准备安装引导文件
TFTP根目录需要包含以下内容
其中pxelinux.cfg是一个目录,包括内容如下:
从挂载1604/install/netboot/ubuntu-installer/amd64目录下拷贝pxelinux.0到tftp服务根目录/opt/tftp
从挂载1604/install/netboot/ubuntu-installer/amd64/boot-screens目录下拷贝ldlinux.c32,libcom32.c32,libutil.c32,vesamenu.c32文件到tftp服务根目录/opt/tftp
在tftp服务根目录/opt/tftp目录下创建pxelinux.cfg目录,并在该目录下创建配置文件default和 pxe.conf(当前文件内容为空,后面章节补充内容)
3:在PXE安装OS过程中,需要通过NFS或HTTP服务下载内核映像文件到客户端服务器,因此我们在tftp服务根目录下创建一个OS安装目录,以组织不同的OS安装文件(这样,tftp在访问时也可以通过相对路径进行访问)
- 在tftp根目录/opt/tftp目录下创建目录OSInstall用来保存我们所有可能的OS信息。
对于安装ubuntu系统,我们在OSInstall目录下创建子级目录ubuntu用于保存安装文件。
考虑到ubuntu还有不同的发现版本,因此可以在ubuntu目录下在创建版本目录,比如说16.04表示Ubuntu 16.04的安装文件所在目录。
目录结构如下(该目录根据具体要求创建,无特殊要求)
- 拷贝ubunt ISO挂载目录下的所有文件到 OSInstall/ubuntu/16.04目录
注意:由于cp拷贝的时候使用通配*无法将.disk拷贝到目的目录,因此需要单独拷贝一次.disk目录内容。
- 修改nfs服务配置,将/opt/tftp/OSInstall目录共享出去
修改/etc/exports文件,将nfs的共享根目录修改为/opt/tftp/OSInstall
4)修改http服务配置,将/opt/tftp/OSInstall目录设置为http服务根目录
4:准备自动化安装配置文件ks.cfg
在安装系统过程中,当系统提示选择语言,键盘等信息时,如果不想人工操作,则可以通过该配置文件交由系统自动完成。该文件是一个文本文件,其内容如下:
编辑完成该文件后,考虑到不同的操作系选择不一样,因此建议将该文件拷贝到具体操作系统目录下,例如拷贝到OSInstall/ubuntu/16.04/目录
配置文件编写
在PXE安装过程中,需要编写的配置文件主要包括3个,即tftp根目录下的pxelinux.cfg子目录内的default和pxe.conf文件,
其中pxe.conf文件描述引导启动过程中启动菜单选项。Default文件描述启动引导启动使用的文件信息。
此外还有一个文件ks.cfg用于描述系统安装过程中的自动响应,该文件我们放置于每个操作系统文件的根目录下。
pxe.conf文件内容:
Default文件内容如下:
ks.cfg文件内容如下: