前提条件:
- PXE技术基于client/server模式运作,客户机需具备支持pxe协议的网卡,且主板需支持网络引导
- 网络中徐部署DHCP服务器以自动分配IP地址并指定引导文件位置,同时,tftp服务提供了引导镜像文件的下载
a.部署PXE远程安装服务
批量部署方法的优点:
规模化 | 同时装配多台服务器 |
自动化 | 安装系统,配置各种服务 |
远程实现 | 不需要光盘,U盘等安装介质 |
pxe是由intel公司开发的网络引导技术,工作在c/s模式,允许客户端提供网络从远程服务器下载引导镜像,并加载安装文件或整个操作系统
搭建pxe网络体系的前提条件:
硬件需求;客户机的我网卡支持pxe协议(集成bootrom芯片),且主板支持网络引导 |
网络中有一台dhcp服务器以便为客户机自动分配IP地址,指定引导文件位置 |
服务器提供tftp提供引导镜像文件的下载 |
1.搭建pxe远程安装服务器
本例的pxe远程安装服务器集成了Linux安装源,tftp服务,DHCP服务,能够向客户机裸机发送pxe引导程序,Linux内核,启动菜单等数据,以提供安装文件
(1)设备清单
设备 | IP地址 | 系统 | 备注 |
pxe服务器 | 192.168.10.101 | openEuler |
(2)准备Linux安装源
Linux安装源一般通过HTTP,ftp协议发布,也支持nfs协议
例如:若采用fp协议发布安装源,可以再服务器上部署一个yum软件仓库
[root@localhost~]# systemctl stop firewalld
[root@localhost~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
[root@localgost~]# sed -i ‘s/SELINU=ENFORCING/SELINUX=disabled/g’
/etc/selinux/config
[root@localgost~]#mkdi /media/cdrom
[root@localhost~]# mount /dev/cdrm /media/cdrom
[root@localhost~]# dnf -y install vsftpd
[root@localhost~]# mkdir /var/ftp/euler
[root@localhost~]# cp -rf /media/cdrom/* /var/ftp/euler
[root@localhost~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
[root@localhost~]#systemctl start vsftpd
(3)安装并启用tftp服务
- tftp服务器由fttp-server 软件包提供,配置文件位于/etc/xinetd.d/tftp
- 配置时只要将“disable=yes”改为“disable=no”,然后启动tftp服务即可
[root@localhost~]# dnf -y install tftp-server
[root@localhost~]#vim /etc/xinetd.d/tftp
server 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
(4)准备Linux内核,初始化镜像文件
用于pxe网络安装的Linux内核,初始化镜像文件可以从Linux系统光盘获得
- vmlinux
- inited.img
位于文件夹images/pxeboot下,找到这两个文件并将其复制到tftp服务的根目录下
[root@localhost~]# cd /media/cdrom/images/pxeboot
[root@localhost pxeboot]#cp vmlinux initrd.img /var/lib/tftpboot
[root@localhost pxeboot]#cd /media/cdrom/isolinux/
[root@localhost isolinux]# cp ldlinux.c32 libcom32.c32 /var/lib/tftpboot/
ldlinux.c32 | 是syslinux引导加载程序的一部分,用于在pxe网络中引导过程中加载Linux内核和其他必要的初始化文件,提供了从网络加载内核和初始化ram文件系统所需要的基础引导功能,在pxe引导流程中,它负责处理引导菜单的配置,并根据用户的选择默认设置加载相应的内核和参数 |
libcom32.c32 | 是syslinux提供的一组常用函数的库文件,这些函数被ldlinux.c32和其他引导程序使用,包含了处理文件系统,内存分配,字符串操作等底层功能的实现,它使syslinux引导程序能够更高效的执行其任务,无需再每个引导程序中重复实现这些功能 |
(5)准备 PXE 引导程序
- 用于 PXE 网络安装的引导程序为 pxelinux.0,由软件包 syslinux 提供
- 安装好软件包 syslinux,然后将文件 pxelinux.0 也复制到 tftp 服务的根目录下
[root@localhost ~# dnf -y install syslinux
[root@localhost ~]#cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
(6)安装井启用 DHCP 服务
由于 PXE客户机通常是尚未装系统的裸机,因此为了与服务器取得联系并正确下载相关引导文件,需要预先配置好 DHCP服务来自动分配地址并告知引导文件位置
如PXE服务器的IP地址为192.168.10.101,DHCP 地址池为 192.168.10.200~192.168.10.250
[root@localhost ~]# dnf -y install dhcp
[root@localhost wl# vim /etc/dhcp/dhcpd.conf
…... #省略部分信息
subnet 192.168.10.0 netmask 255.255.255.0 {
option routers 192.168.10.254;
option subnet mask 255.255.255.0;
option domain-name "bdqn.com";
option domain-name-servers 192.168.10.254,202.106.0.20;
default-lease-time 21600;
max-lease-time 43200;
range 192.168.10.200 192.168.10.250;
next-server 192.168.10.101; #指定 TFTP 服务器的地址
filename "pxelinux.0"; #指定 PXE 引导程序的文件名
}
[root@localhost wl# systemctl start dhcpd
[root@localhost w]# systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to/usr/lib/systemd/system/dhcpd.service.
区别:
与一般 DHCP服务不同的是,配置文件中增加了next-server 和filename这两行记录,分别用来指定TFTP服务器的地址和PXE引导程序的文件名
(7)配置启动菜单文件
- 启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载初始化镜像
- 默认的启动菜单文件为 default,应放置在 tftp 根目录的 pxelinux.cfg 子目录下
典型的启动菜单配置可参考以下操作手动建立:
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~l# vim /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img inst.repo=ftp://192.168.10.101/euler
2.验证 PXE 网络安装
- 对于新购买的服务器或 PC 裸机,一般不需要额外设置;
- 若要为已有系统的主机重装系统,则可能需要修改 BIOS 设置,将“Boot First’设为“NETWORK”或“LAN”,然后重启主机;
- 若使用 vmware 创建的虚拟机进行测试,虚拟机内存至少需要 2GB,否则在启动安装时会报错:
如果服务器配置正确,网络连接、PXE支持等都没有问题,则客户机重启后将自动配置IP地址,然后从 TFTP 服务器中获取引导程序 pxelinux.0,并根据引导菜单配置提示用户指定启动入口
Network boot from Intel E1888
Copyright()2083-2014 UMware,Inc.
Copyright)1997-2889Intel corporation
CLIENT MAC ADDR:8O BC 29F7A69 GUID:564D280B50B8-8260-4283-1F2AEAF7A689
CLIENT IP: 192.168.4.103 MASK:255 255.255.8 DHCP IP: 192.168.4.254
GATEWAY IP:192.168.4.254
PXELINUx 4.85 8x581e199aCopyright()1994-2011H.Peter Anvinet al
PXE entry point found(we hope)at 9E4E:0186 via plan A
UNDI code segment at 9E4E len BCE
UNDl data segment at 98B8 len 5968Getting cached packet 81 82 03
My IP address seems to be CA80467 192.168.4.103
ip=192,168.4.103:192.168.4.254:192.168.4.254:255.255.255.0
B00TIF=01-80-0c-29-f7-a6-09
SYSUUID=564d288b-5db8-826c-4203-1f2aeaf7a689
TFTP prefix:
Trying to load:pxelinux.cfg/default ok
boot : _
在boot下执行如下命令:
auto:进入默认的图形安装入口 |
linux text: 进入文本安装入口 |
linux rescue: 进入救援模式 |
直接按 Enter 键确认后将自动通过网络下载安装文件,并进入图形安装程序界面
b.实现Kickstart 无人值守安装
- 通过 PXE技术远程安装Linux 系统的方法,安装介质不再受限于光盘、移动硬盘等设备,大大提高了系统安装的灵活性
- 然而,安装期间仍需要手动选择语言、键盘类型、指定安装源等一系列交互操作,当需要批量安装时非常不方便
- 如何实现无人值守自动安装,通过使用安装应答文件,自动完成安装过程中的各种设置,从而无须手动干预,提高网络装机效率
注意:
在 openeuler24.03或centos8等系统版本中,不再支持 system-config-kickstart 工具,无法通过此工具生成应答文件,需要直接编辑ks.cfg文件
1)编辑应答文件
[root@localhost ~]# grep -v ^# /root/ks.cfg
ur1 --url="ftp://192.168.10.101/euler"
#系统语言设置
lang zh_CN.UTF-8
keyboard us
# 网络配置(以 DHCP 为例)
--activate--bootproto=dhcp --device=eth0network
#安全策略
--enableshadow--passalgo-sha512authselect
selinux --enforcing
rootpw --iscrypted $y$j9T$QqwtZ/njxxUpfvofVbMCa99t$46WHHCdZ1EXPI8G8Ms9rE20InyokuLkxzyrg4nbws98
#时区设置
timezone Asia/Shanghai
#分区方案(自动分区示例)
autopart --type=lvm --fstype=ext4
bootloader --location=mbr
#清除旧系统并初始化磁盘
clearpart --all--initlabel
#软件包选择
%packages --nocore
@^minimal-environment
kernel
grub2
efibootmgn
%end
#后安装脚本
%post
#关闭防火墙(根据实际需求选择)
systemctl disable firewalld
#配置 SSH 允许 root 登录(按需启用)
# sed -i 's/^#PermitRootLogin.*/PermitRootLogin yes/'/etc/ssh/sshd config
%end
# 重启配置
reboot
2)实现批量自动装机
有了自动安装的应答文件之后,只要将其放置 PXE 安装服务器的 FTP 目录下,并适当修改引导菜单,就可以实现基于网络的批量自动装机了
1.启用自动应答文件
- 在PXE 远程安装服务器中,将建立的应答文件复制到/var/ftp/Linux 目录下,使客户机能够通过 ftp:#192.168.4.254/Linux/ks.cfg 访问;
- 然后编辑引导菜单文件 default,添加 ks 引导参数以指定 ks.cfg 应答文件的 URL 路径
[root@localhost ~]# cp /root/ks.cfg /var/ftp/ks.cfg
[root@localhost ~]# vi /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 0
label auto
kernel vmlinuz
append initrd=initrd.img inst.ks=ftp://192 168 10.101/ks.cfg inst.repo=ftp://192.168.10.101/euler
2.验证无人值守安装
启用自动应答安装之后,当客户机每次以PXE 方式引导时,将自动下载 ks.cfg 应答配置文件,然后根据其中的设置安装 Linux 系统,而无须手工干预
注意:
如果是在 VMware 虚拟机环境下,需要禁用VMware的DHCP 功能;否则安装文件将无法加载