目录

网络基础 | PXE

PXE(预启动执行环境)

网络管理员在 DHCP 协议的基础之上,还可以帮网络中的机器自动安装操作系统。帮网络中的机器自动安装操作系统的需求,在普通的笔记本电脑上一般不会有这种需求,但是在数据中心中往往有这种需求,因为数据中心的管理员可能一下子就拿到几百万台空的机器,一个个安装操作系统将会很繁琐。这个时候管理员希望的不仅仅是自动分配 IP 地址了,而是自动安装操作系统。

一般安装操作系统的过程是这样:首先,启动 BIOS。这是一个特别小的小系统,只能干特别小的一件事情。其实就是读取硬盘的 MBR 启动扇区,将 GRUB 启动起来;然后将权力交给 GRUB,GRUB 加载内核、加载作为根文件系统的 initramfs 文件;然后将权力交给内核;最后内核启动,初始化整个操作系统。

那么,想要通过网络的方式自动安装操作系统的话,也得是在 BIOS 启动之后。而这个这个过程叫做预启动执行环境(Pre-boot Execution Environment),简称 PXE。因为在 BIOS 之前啥都没有。而在 BIOS 之后,有了启动扇区,那么 PXE 可以先将操作系统拉取到本地,然后将其加载起来。

PXE 协议分为客户端和服务器端,由于还没有操作系统,只能先把客户端放在 BIOS 里面。当计算机启动时,BIOS 把 PXE 客户端调入内存里面,就可以连接到服务端做一些操作了。

  • 首先 PXE 的客户端启动起来之后,第一步是发送一个 DHCP 的请求,让 DHCP Server 给它分配一个地址。除此之外,DHCP Server 还会给它返回 PXE 服务器的地址、启动文件 pxelinux.0。
  • PXE 客户端知道 PXE 服务端的地址之后,就可以去 PXE 服务器下载启动文件。下载的时候使用的是 TFTP 协议。所以 PXE 服务器上,往往还需要有一个 TFTP 服务器。所以 PXE 就会向 PXE 服务器请求启动文件 pxelinux.0。
  • PXE 客户端下载到这个文件之后,就开始执行这个文件了。这个文件会指示 PXE 客户端向 TFTP 服务请求计算机的配置信息 pxelinux.cfg。这个文件里头会说明内核在哪里、initramfs 在哪里。接下去 PXE 客户端会请求这些文件。
  • 最后,启动 Linux 内核。当内核启动之后,还会再通过 DHCP 协议请求分配一个 IP 地址。

https://img.dawnguo.cn/NetworkingProtocol/Basic/image-20210927173012251.png

想要使用 PXE,那么 DHCP Server 除了配置 IP 地址段、子网掩码、网关地址、租期之外。还需要配置 next-server,指向 PXE 服务器的地址,同时配置初始化启动文件的名字。如下所示:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16

ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;
subnet 192.168.1.0 netmask 255.255.255.0
{
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option time-offset -18000;
default-lease-time 21600;
max-lease-time 43200;
range dynamic-bootp 192.168.1.240 192.168.1.250;
filename "pxelinux.0";
next-server 192.168.1.180;
}