1. 什么是pxe?

预启动执行环境(Preboot eXecution Environment,PXE)也被称为预执行环境,提供了一种使用网络接口(Network Interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。

2. pxe的优势是什么?

1. 你现在有1台电脑需要装系统,那么很简单,你拿上一个U盘安装盘插在这台电脑上,然后从U盘启动,之后就可以手动安装系统了;但如果你现在有100台电脑,如果你在拿着一个U盘安装盘一台台安装,那效率肯定是太低了,这个时候PXE就派上用场了。
2. 某公司对信息安全要求比较高,需要使用无盘系统(系统不在本地电脑上,而在公司特定的服务器上),这个时候也需要使用PXE。
3. 你想要一台远程的电脑运行你手上特定的系统,这个时候你就可以在本地布置一个你手上的系统,然后通过PXE启动你本地的系统(这个可能需要额外的支持,比如BMC,因为要远程)。

3. pxe环境的组成?

简化的组成
PXE-风君雪科技博客

4. pxe工作的流程

版本一:

1.  服务器将环境搭建好
2.  裸机器选择从网卡启动,此时由于逻机器没有ip,就会在局域网里面广播,问别人要IP。
3.  如果局域网里面有DHCP服务器,收到消息后,就会分配一个IP给逻机器。此时逻机器和DHCP服务器都知道了彼此的Ip,这就为通信奠定了基础。其实,拥有server服务器除了能将ip发给逻机器,还能发送其他内容给逻机器。例如将后续需要安装的文件信息发给裸 
    机器。
4.  逻机器通过文件信息可以发送我们提前设置好的请求,然后server服务器的apache接收到请求,将指定目录下的文件发送给裸机器,裸机器就拿到了安装系统需要的文件和引导程序,根据引导程序去引导安装对应的系统。

裸机器的网卡一般是Intel公司开发的,具备pxe网络引导模块的,这是个硬件功能,因此启动网卡后,会自动的向局域网的DHCP服务器要IP。

版本二:

1. 客户端从自己的pxe网卡启动,向本网络中的DHCP服务器要IP,并搜寻引导文件的位置,
2. DHCP服务器返给客户机IP以及bootstrap文件的存放位置(该文件一般是放在一台TFTP服务器上)
3. 客户机向本网络中的TFTP服务器索要bootstrap文件。
4. TFTP服务器同意后,客户机下载到bootstrap文件。
5. 客户机获得bootstrap文件后执行该文件。
6. 根据bootstrap的执行结果,通过TFTP服务器加载内核和文件系统。
7. 进入安装画面,此时可以选择FTP, HTTP, NFS方式之一进行安装。

5. pxe服务器的搭建

除了3中提供的apache可以搭建共享服务器,通过http请求过去文件,还可以搭建ftp服务,也可以用于需要pxe服务器的主题下载引导程序以及系统文件。

6. 裸机器的启动过程

启动后进入bios,调整启动模式,以 legacy为例

PXE-风君雪科技博客

看到pxe选项,选择对应的模式

PXE-风君雪科技博客

ATA SSD:系统从固态硬盘启动。
ATA HDD:系统从硬盘启动,大家一般都是用得这种普通硬盘,固态硬盘市场价很贵。
ATAPI CD:系统从光驱启动。
USB CD:系统从外接光驱启动。
USB HDD:系统从外接存储器启动,硬盘,U盘等。
PCI LAN:系统从局域网启动。 图中就是这种模式启动。

选择PXE启动之后进入如下的界面

PXE-风君雪科技博客

向局域网广播要ip,下图表明向DHCP服务器要到了IP。

PXE-风君雪科技博客

7. 网上实战方法

实战一:https://blog.csdn.net/weixin_32127359/article/details/112952696?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242


1. 配置dhcp服务器

由于PXE客户机通常是尚未装系统的裸机,因此为了如服务器取得联系并正确下载相关引导文件,需要预先配置好DHCP服务来自动分配地址并告知引导文件的位置。

[root@localhost /]#yum -y install dhcp

[root@localhost /]#vim /etc/dhcp/dhcp.conf

ddns-update-style none;

default-lease-time 21600;

max-lease-time 43200;

option domain-name    "benet.com";

option domain-name-servers 8.8.8.8;

subnet 192.168.122.0 netmask 255.255.255.0 {
option routers 192.168.122.1;

option subnet-mask 255.255.255.0;

range 192.168.122.100 192.168.122.200;

next-server 192.168.122.1;   # 指定TFTP服务器的地址,告诉客户机,要找bootstrap引导文件就到这里来。这些信息会和ip一起发送给客户机。

filename "pxelinux.0";     # 指定PXE引导程序的文件名

}

2. 配置tftp服务器

TFTP服务的配置文件是/etc/xinetd.d/tftp,RedHat9 默认安装已经生成了该文件

service tftp

{
disable        = no

socket_type                = dgram

protocol                = udp

wait                        = yes

user                        = root

server                        = /usr/sbin/in.tftpd

server_args        = -s /tftpboot

per_source                = 11

cps                                = 100 2

flags                        = IPv4

}

注明:这个文件基本上不用改动,但是需要注意的的是server_args= -s /tftpboot这一行,它的含义是将/tftpboot作为root目录,这样在dhcpd.conf中的filename一行就应该写bootstrap的相对路径: filename “pxelinux.0”,这是出于安全方面考虑的.如果你去掉了-s这个参数,那幺就要在filename一行指出bootstrap的绝对路径: filename “/tftpboot/pxelinux.0”.注意,这里-s的内容会因为发行版的内容不同而不同,一般不用改动。

剩下的步骤键链接

实战一总结:

1)网卡的client —>网卡rom—> 寻找dhcp服务器,由/etc/dhcp.conf得到ip和引导程序所在地点

2)有dhcp.conf(引导程序文件名)和tftp的配置(tftp跟路径,里面有引导程序和系统初始化程序),得到引导程序pxelinux启动文件的绝对路径,运行引导程序,读取启动配置文件pxelinux.cfg/default,得到操作系统初始化的两个相关文件

3)选择安装方式

客户端广播dhcp请求——服务器相应请求,建立链接——由dhcp和tftp配置得到ip还有引导程序所在地点——客户端下载引导程序并开始运行——引导程序读取

TODO