PXE自动服务器安装原理
PXE(Pre-boot execution environment)是intel公司开发的一个技术,支持工作站从远程服务器上下载镜像,并由此启动操作系统。在启动过程中,终端请求分配IP地址,在使用TFTP协议下载一个启动软件包到本地内存中执行,最后由这个启动软件包完成终端基本软件的设置,从而完成操作系统的安装,其工作流程如下:
PXE自动安装需要部署的服务
在通过PXE安装ubuntu操作系统时,PXE服务器需要提供如下4个服务
DHCP: dhcp服务用于在OS安装过程中进行IP地址的分配。
TFTP:TFTP服务用于OS安装过程中请求下载系统引导文件。
HTTP:HTTP服务用于Ubuntu安装过程中请求软件包
DHCP服务安装和配置
DHCP服务用于向客户端动态分配IP地址,可以使用isc-dhcp-server提供DHCP服务,在ubuntu系统下,可以通过apt安装该服务。
apt-get install isc-dhcp-server
isc-dhcp-server的配置涉及到两个配置文件。
1:/etc/default/isc-dhcp-server配置文件,该配置文件主要用于指定在哪个网口上提供DHCP服务。
如下是配置样例(比较简单):
2:/etc/dhcp/dhcpd.conf配置文件,该配置文件用于描述dhcp服务如何分配ip地址
如下是一个样例:
TFTP服务安装和配置
TFTP服务用于在启动阶段向客户段提供引导文件,在ubuntu系统下,可以通过tftpd-hpa提供tftp服务,可以通过apt进行安装。
apt-get install tftpd-hpa
tftpd-hpa的配置文件位于/etc/default/tftpd-hpa位置,如下是一个配置样例:
注意:关键配置项TFTP_DIRECTORY用于描述tftp服务所使用的根目录,需要根据部署情况进行调整,其他配置参数可以不做变化。
TFTP_DIRECTORY参数指定的目录下保存PXE安装时所使用到的initrd,ldlinux.c32,pxelinux.0,vmlinuz文件,以及pxelinux.cfg目录。
HTTP服务的安装和配置
通过PXE自动安装Ubuntu 20.04版本时,通过http服务提供了ISO镜像文件及自动配置文件。在Ubuntu系统下可以通过apach2提供http服务,可以通过如下命令进行安装。
apt-get install apache2
apache2的配置文件位于/etc/apache2/sites-available/000-default.conf路径,如下是一个配置样例:
注意配置参数DocumentRoot和Directory,这两个参数取值保持相同,指定了http服务所使用的根目录,在该目录下放置Ubuntu20.04的ISO镜像文件以及自动配置文件。
PXE安装文件准备
通过PXE自动安装Ubuntu20.04时,还需要准备如下的一些文件
1:ubuntu-20.04.1-live-server-amd64.iso镜像文件(用于提取内核及安装包,可以从Ubuntu官网下载)
2:pxelinux.0(pxe引导文件,需要从ubuntu官网下载)
3:ldlinux.c32(该文件可以从ubuntu-20.04.1-live-server-amd64.iso镜像文件中找到)
4:vmlinuz Linux内核文件(该文件可以从ubuntu-20.04.1-live-server-amd64.iso镜像文件中找到)
5:initrd 临时根文件镜像(该文件可以从ubuntu-20.04.1-live-server-amd64.iso镜像文件中找到)
6:default 配置文件(该文件需要手工编写,用于描述内核如何引导启动)
7:user-data 配置文件(该文件需要手工编写,用于指示ubuntu在安装过程中选择合适的语言,键盘等信息,Ubuntu20版本新引入,可以用于替换以前preseed方式)
8:meta-data 配置文件(一个空文件,与user-data配合使用)。
以上几个文件中,pxelinux.0,ldlinux.c32,vmlinuz ,initrd 需要放置在tftp服务根目录下:default 文件需要放置在tftp服务根目录下的pxelinux.cfg子目录;ubuntu-20.04.1-live-server-amd64.iso,user-data ,meta-data需要放置在http服务根目录下。
此外default 配置文件需要手工编写,在Ubuntu20.04场景下,其内容可以如下所示:
LABEL install
KERNEL vmlinuz
INITRD initrd
APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://192.168.1.1/ubuntu-20.04.1-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://192.168.1.1/
user-data文件是Ubuntu20版本用于描述自动安装的一个配置文件(yaml格式),一个最简单的user-data配置文件内容如下(更复杂灵活的配置,可以参考Ubuntu官网进行编写):
#cloud-config
autoinstall:
version: 1
identity:
hostname: ubuntu-server
password: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0"
username: ubuntu
这个user-data配置文件只简单的指定了系统安装时需要的“username”和“password”,通过该文件也可以进行更灵活的安装配置,例如设置网络,分区等信息。(默认用户名和密码都是ubuntu)。
以上工作内容,本人写了一个简单的shell脚本进行自动完成,可以在github如下位置找到。
https://github.com/georgeliwei/ToolCode/tree/master/autoPxe
附:如果该文章对你有所帮助,请尽情打赏!!!