PXE 高效批量网络装机

文章目录

  • 部署 PXE 远程安装服务
  • 搭建 PXE 远程安装服务器
  • 验证 PXE 网络安装

部署 PXE 远程安装服务

络装机方法,并结合 Kickstart 配置实现无人值守自动安装。
上述服务器的批量部署方法,具备以下三个优点:

  • 规模化:同时装配多台服务器;
  • 自动化:安装系统、配置各种服务;
  • 远程实现:不需要光盘、U 盘等安装介质。

PXE 是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。若要搭建 PXE 网络体系,必须满足以下几个前提条件。客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置。
服务器通过 TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。其中,第一个条件实际上是硬件要求,目前绝大多数服务器和大多数 PC 都能够提供此支持,只需在 BIOS 设置中允许从 Network 或 LAN 启动即可。下面将介绍 PXE 远程安装服务的基本部署过程。

搭建 PXE 远程安装服务器

本例的 PXE 远程安装服务器集成了 CentOS 7 安装源、TFTP 服务、DHCP 服务,能够向客户机裸机发送 PXE 引导程序、Linux 内核、启动菜单等数据,以及提供安装文件。

  1. 准备 CentOS 7 安装源
    CentOS 7 的网络安装源一般通过 HTTP、FTP 协议发布,另外也支持 NFS(NetworkFile System,网络文件系统)协议,关于 NFS 的配置请参阅其他资料,这里不再赘述。例如,若采用 FTP 协议发布安装源,可以在服务器上部署一个 YUM 软件仓库。
[root@localhost ~]# mkdir /var/ftp/centos7
[root@localhost ~]# cp -rf /media/cdrom/* /var/ftp/centos7/
[root@localhost ~]# systemctl start vsftpd

TFTP 服务由 tftp-server 软件包提供,配置文件位于/etc/xinetd.d/tftp。配置时只要将“disable = yes”改为“disable = no”,然后启动 TFTP 服务即可

  1. 装并启用 TFTP 服务
[root@localhost ~]# yum -y install tftp-server
[root@localhost ~]# vi /etc/xinetd.d/tftp
service tftp
{ …… //省略部分信息
protocol = udp //TFTP 采用 UDP 传输协议
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot //指定 TFTP 根目录
disable = no …… //省略部分信息
}
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl enable tftp
Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to

/usr/lib/systemd/system/tftp.socket. 用于 PXE 网络安装的 Linux 内核、初始化镜像文件可以从 CentOS 7 系统光盘获得,分别为 vmlinuz 和 initrd.img,位于文件夹 images/pxeboot 下。找到这两个文件并将其复制到 tftp 服务的根目录下

  1. 准备 Linux 内核、初始化镜像文件
[root@localhost ~]# cd /media/cdrom/images/pxeboot
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot

用于 PXE 网络安装的 Linux 内核、初始化镜像文件可以从 CentOS 7 系统光盘获得,分别为 vmlinuz 和 initrd.img,位于文件夹 images/pxeboot 下。找到这两个文件并将其复制

  1. 准备 PXE 引导程序
[root@localhost ~]# yum -y install syslinux
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

由于 PXE 客户机通常是尚未装系统的裸机,因此为了与服务器取得联系并正确下载相关引导文件,需要预先配置好 DHCP 服务来自动分配地址并告知引导文件位置。如 PXE 服务器的 IP 地址为 192.168.4.254,DHCP 地址池为 192.168.4.100~192.168.4.200,则可以参考以下操作来搭建 DHCP 服务器

  1. 安装并启用 DHCP 服务
[root@localhost ~]# yum -y install dhcp
[root@localhost ~]# vi /etc/dhcp/dhcpd.conf …… //省略部分信息
subnet 192.168.4.0 netmask 255.255.255.0 {
option routers 192.168.4.254;
option subnet-mask 255.255.255.0;
option domain-name "bdqn.com";
option domain-name-servers 192.168.4.254,202.106.0.20;
default-lease-time 21600;
max-lease-time 43200;
range 192.168.4.100 192.168.4.200;
next-server 192.168.4.254; //指定 TFTP 服务器的地址
filename "pxelinux.0"; //指定 PXE 引导程序的文件名
}
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to

/usr/lib/systemd/system/dhcpd.service. 从上述过程可以看到,与一般 DHCP 服务不同的是,配置文件中增加了 netx-server 和filename 这两行记录,分别用来指定 TFTP 服务器的地址和 PXE 引导程序的文件名。

  1. 配置启动菜单文件
    启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载初始化镜像。默认的启动菜单文件为 default,应放置在 tftp 根目录的 pxelinux.cfg 子目录下,典型的启动菜单配置可参考以下操作手动建立
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# vi /var/lib/tftpboot/pxelinux.cfg/default
default auto //指定默认入口名称
prompt 1 //1 表示等待用户控制
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.4.254/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.4.254/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.4.254/centos7

验证 PXE 网络安装

搭建好 PXE 远程安装服务器以后,就可以使用客户机进行安装测试了。对于新购买的服务器或 PC 裸机,一般不需要额外设置;若要为已有系统的主机重装系统,则可能需要修改 BIOS 设置,将“Boot First”设“NETWORK”或“LAN”,然后重启主机;若使用VMware创建的虚拟机进行测试,虚拟机内存至少需要 2GB,否则在启动安装时会报错。

[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# vi /var/lib/tftpboot/pxelinux.cfg/default
default auto //指定默认入口名称
prompt 1 //1 表示等待用户控制
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.4.254/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.4.254/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.4.254/centos7


在这里插入代码片

你可能感兴趣的:(网络)