pxe装机的原理
原理图
第一步 获取pxe启动
- 当设备通过pxe获取地址时,它会进入一个嵌入在网卡固件中的小型操作系统(PXE ROM)来执行DHCP通信。PXE ROM会发送DHCP Discover(dhcp发现)广播消息,使用随机端口和DHCP服务器的67号端口通信,以获取网络配置信息
可以看到,pxe rom发送一个dhcp发现报文到广播中,15.135收到了这个报文,并回包给pxe rom,其中包含可用地址,pxe rom收到报文后,从这里面的IP地址挑选一个,并且回包给15.135(包含pxe rom挑选的地址),让他确认地址时候可用,15.135确认可用后,把IP、网关、掩码等关键信息发送给pxe rom,同时dhcp服务器告诉pxe rom,tftp服务器有pxelinux.0文件。
第二步 加载pxelinux.0-→ldlinux.c32-→default
开始传输pxelinux.0文件
PXE客户端下载完pxelinux.0文件后,会在RAM(可以理解在内存中)加载,然后让客户端请求ldlinux.c32文件并加载,加载完成后,使用轮询的方式加载pxelinux.cfg下的文件
pxelinux.cfg/default内容
root@Master-01:/srv/tftp/debian-installer/amd64/pxelinux.cfg# cat default
DEFAULT debian
LABEL debian
KERNEL debian-installer/amd64/linux
APPEND vga=788 fb=false initrd=/debian-installer/amd64/initrd.gz netcfg/choose_interface=auto auto=true priority=critical url=http://192.168.15.135/preseed.cfg console=tty0 selinux=0 biosdevname=0
IPAPPEND 2
DEFAULT #默认引导
LABEL #引导选项名称
KERNEL #指定内核文件
APPEND #要传递给内核的启动参数
其中debian-installer/amd64/linux
它主要负责引导和初始化安装程序,同时向内核传递APPEND的内容,其中主要有:
initrd.gz
文件,它主要是加载一个临时的文件系统和驱动程序,当加载完成后,initrd.gz将被卸载
preseed.cfg
文件,应答文件。
决定系统版本的是netboot.tar.gz,debian官网下载的网络装机文件
自己总结
首先服务器启动,运行网卡固件中的pxe rom(提供DHCP功能),发送dhcp请求,dhcp服务器分配IP并指定tftp地址和pxelinux.0文件,加载pxelinux.0(网络引导加载程序)文件后加载ldlinux.c32文件(syslinux引导文件,提供了额外的功能和库支持),他们两个的功能组合起来功能加载并运行pxelinux.cfg下的default文件中指定的kernel和initrd.gz,当加载完毕后,pxelinux.0和ldlinux.c32将被卸载并释放空间。之后按照应答文件,自动安装。以上步骤都在内存中进行
ChatGpt总结
根据您提供的信息,这是一种典型的基于PXE(Preboot Execution Environment)的网络引导过程。下面是对每个步骤的解释:
1. 服务器启动并加载网卡固件中的PXE ROM:在服务器启动时,网卡固件中的PXE ROM会被加载。PXE ROM是一段固件代码,它提供了网络引导所需的功能,包括DHCP(动态主机配置协议)。
2. 发送DHCP请求:一旦服务器启动并加载了PXE ROM,它会发送一个DHCP请求广播,以获取网络配置信息,包括IP地址、子网掩码、网关等。
3. DHCP服务器分配IP并提供TFTP地址和pxelinux.0文件:DHCP服务器接收到服务器的DHCP请求后,会为服务器分配一个IP地址,并返回给服务器一个TFTP(Trivial File Transfer Protocol)服务器的地址以及一个名为"pxelinux.0"的文件。
4. 加载pxelinux.0文件:服务器接收到TFTP服务器地址和"pxelinux.0"文件名后,使用TFTP协议从TFTP服务器下载该文件。pxelinux.0是一个网络引导加载程序,它负责进一步的引导过程。
5. 加载ldlinux.c32文件:一旦pxelinux.0加载完毕,它会加载ldlinux.c32文件。ldlinux.c32是Syslinux引导文件,它提供了额外的功能和库支持,以便在引导过程中执行更复杂的操作。
6. 加载并运行pxelinux.cfg下的default文件中指定的kernel和initrd.gz:ldlinux.c32加载完毕后,它会根据pxelinux.cfg目录下的default文件中的配置,加载指定的kernel(内核)和initrd.gz(初始内存盘)文件。这些文件包含了操作系统的核心组件和初始文件系统,用于启动和安装操作系统。
7. 卸载pxelinux.0和ldlinux.c32:一旦kernel和initrd.gz文件加载完毕,pxelinux.0和ldlinux.c32将被卸载并释放内存空间,因为它们的任务已经完成。
8. 自动安装:加载完kernel和initrd.gz后,根据预先配置的应答文件,自动安装过程开始。应答文件包含了安装过程中的配置选项和参数,使得安装过程可以在没有人工干预的情况下进行。
总结:以上步骤描述了基于PXE的网络引导过程,通过网络从服务器启动并自动安装操作系统。这些步骤都在服务器的内存中进行,而不需要使用本地存储设备。