PXE批量装机

127 阅读3分钟

PXE

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

 

PXE服务优点:

规模化:同时装配多台服务器,无需每一台单独安装操作系统;

自动化:实现服务器的自动安装及自动配置各种服务;

远程实现:不需要光盘、U盘等安装介质,方便快捷的同时又可以保障服务器安全。

 

 

配置基础需求

服务器要求:

  • 服务器需要连接到一个本地网络(局域网)上,以便客户机能够通过网络访问到PXE服务器。

  • DHCP服务器:需要在服务器上安装和配置DHCP服务器,以便为PXE客户机分配IP地址和引导服务器的地址。

  • TFTP服务器:安装和配置TFTP服务器,以便从服务器向客户机传输引导文件和操作系统镜像。常用的TFTP服务器软件包括tftpd-hpa、tftp-hpa等。需要为每个操作系统和引导选项配置相应的引导文件和镜像文件。

 

客户机要求:

  • 硬件要求:客户机需要支持PXE引导。大多数现代计算机都支持PXE引导,但某些较老的计算机可能不支持。

  • 网络接口:客户机需要通过以太网接口与PXE服务器进行通信。确保每个客户机都连接到PXE服务器所在的相同网络上,并且可以通过网络接收DHCP分配的IP地址和PXE引导文件。

 

 

 

PXE 所需四大文件:

  • pxelinux.0:引导程序。(来自syslinux程序)

  • default:引导程序的配置文件。(需要手写,可参考光盘 isolinux 目录下的 isolinux.cfg 文件)

  • vmlinuz:内核文件。(从光盘中获取,位于 isolinux 目录下)

  • initrd.img: 系统启动镜像文件。(从光盘中获取,位于 isolinux 目录下)

PXE 原理

1.网卡需要查找相关的dhcp服务器(获取地址时间)

2.找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址 还提供给客户机TFTPserver地址(dhcp本身不提供tftp服务)

3.网卡使用tftp客户端吧引导程序加载到内存中来

4.bios执行引导程序

5.引导程序会去TFTP去查找配置文件

6.根据配置文件去引导安装系统

7.系统安装过程

搭建过程

安装相关软件
yum install tftp-server   vsftpd   syslinux  dhcp   -y
拷贝DHCP配置文件
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

编辑DHCP配置文件
vim /etc/dhcp/dhcpd.conf

subnet 服务端IP网段 netmask 255.255.255.0 {
        range 192.168.84.20 192.168.84.50;  分配的的地址池
        option routers 服务端IP网关;   
        next-server 服务端IP地址;
        filename "pxelinux.0";
}

编辑FTP配置文件
vim /etc/xinetd.d/tftp
disable                 = no

拷贝相关配置文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

挂载
cd /var/ftp/
mkdir centos7
mount /dev/sr0 /var/ftp/centos7/

拷贝相关配置文件
cd ./centos7/images/pxeboot/
cp initrd.img vmlinuz /var/lib/tftpboot/

cd /var/lib/tftpboot/
mkdir pxelinux.cfg
cd pxelinux.cfg/

编辑配置文件
vim default

default auto
prompt 1

label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://服务端IP地址/centos7

label text
        kernel vmlinuz
        append text initrd =initrd.img method=ftp://服务端IP地址/centos7

label rescue
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://服务端IP地址/centos7

启动相关服务
setenforce 0
systemctl stop firewalld.service
systemctl start dhcpd
systemctl start tftp
systemctl start vsftpd