使用PXE方式引导Ubuntu系统

Preboot Eexcution Environment,简称PXE,暂且翻译为预启动执行环境。用一句话来概括PXE的功能——它能通过网络为计算机(特别是“裸机”)安装操作系统。在PXE下,“裸机”的BIOS和网卡能通过网络来引导启动自身,而不是通过传统的磁盘引导方式。PXE的这种功能大大简化了服务器的部署和管理流程。

那么在PXE下,一台计算机如何引导启动?这其中涉及到DHCP、NBP、TFTP等多项技术。这些技术细节将在文档的后面部分讲述,这里以客户机(client端,即裸机)为主体,大致介绍PXE的工作流程。

PXE工作流程

client端向本网络的DHCP服务器获取IP及NBP的存放路径

client端向TFTP服务器请求下载NBP

client端执行NBP,并向TFTP服务器请求下载系统镜像、配置文件等

client端根据配置文件,执行引导过程

二、注意事项 1. 本文档中命令均以root身份执行! 2. 请不要直接复制本文档中的命令! 三、配置环境 1. 配置server端

使用virtualbox创建一台虚拟机,命名为pxe-server。它作为整个引导过程的服务端——同时充当DHCP服务端、TFTP服务端和HTTP服务端。

1.1 系统版本

Ubuntu-16.04.2-server-amd64

1.2 网卡配置

安装好系统后,对网卡进行如下配置。

1.2.1 网卡1

连接方式选择“仅主机(Host-Only)网络”,随意选择一个界面名称,我在这里选择的是192.168.202.0/24网段,混杂模式选择“全部允许”。

1.2.2 网卡2

连接方式选择“网络地址转换(NAT)”。

编辑/etc/network/interfaces文件:

... # The primary network interface auto enp0s3 iface enp0s3 inet static address 192.168.202.131 netmask 255.255.255.0 auto enp0s8 iface enp0s8 inet dhcp

重启两张网卡:

ifup enp0s3 enp0s8 2. 配置client端

使用virtualbox创建一台虚拟机,命名为pxe-client。它实际上是一台裸机,在整个引导过程中,在client端上起重要作用的是BIOS和网卡。

2.1 网卡配置

连接方式选择“仅主机(Host-Only)网络”,选择和server端相同的界面名称,混杂模式选择“全部允许”。

四、配置DHCP服务

在引导过程中,client端的BIOS会使用DHCP,向server端的DHCP服务器发送请求,为client端的网卡申请到到一个IP地址,并且定位到网络引导程序(Network Bootstrap Program, NBP)在server端的存放路径。关于NBP,地位等同于传统磁盘引导中的boot loader,NBP在真实环境中的文件名一般为pxelinux.0。

以下是server端上,配置DHCP服务的详细步骤:

1. 安装DHCP服务包 apt install isc-dhcp-server 2. 配置DHCP服务的网卡

编辑/etc/default/isc-dhcp-server文件(修改最后一行):

... INTERFACES="enp0s3" 3. 配置IP地址池

编辑/etc/dhcp/dhcpd.conf文件(先注释掉原有内容):

... ddns-update-style interim; ignore client-updates; default-lease-time 600; max-lease-time 7200; allow booting; allow bootp; subnet 192.168.202.0 netmask 255.255.255.0 { range 192.168.202.200 192.168.202.250; option routers 192.168.202.131; option subnet-mask 255.255.255.0; # address of tftp server next-server 192.168.202.131; # name of NBP filename "pxelinux.0"; } 五、配置TFTP服务

TFTP是一个简单的文件传输协议。在引导过程中,client端获取到NBP的存放路径后,使用TFTP从server端下载NBP,系统内核和文件系统也由TFTP服务器提供。本文档中,NBP将存放在TFTP服务器的默认根目录/var/lib/tftpboot下。

以下是server端上,配置TFTP服务的详细步骤:

1. 安装TFTP服务包 apt install inetutils-inetd tftpd-hpa pxelinux 2. 编辑/etc/inetd.conf文件

在最后一行添加:

tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot 3. 编辑/etc/default/tftpd-hpa文件

在最后添加:

RUN_DAEMON="yes" OPTIONS="-l -s /var/lib/tftpboot" 4. 重启TFTP服务 service tftp restart 六、配置HTTP服务

在server端,通过HTTP服务向client端提供系统安装过程中需要的包。当然也可以使用FTP、NFS等其他方式。

1. 安装HTTP服务包 apt install apache2

HTTP服务的根目录默认为/var/www/html。

七、组建PXE服务环境 1. 挂载镜像

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13561.html