您现在的位置是:首页 >技术教程 >【linux网络】PXE高效批量网络装机网站首页技术教程
【linux网络】PXE高效批量网络装机
文章目录
1.PXE
1.1 PXE概述
PXE(预启动执行环境)是由Intel公司开发的网络引导技术,工作在Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。
PXE具备的优点:
-
规模化:同时装配多台服务器;
-
自动化:安装系统、配置各种服务;
-
远程实现:不需要光盘、U 盘等安装介质。
若要搭建 PXE 网络体系,必须满足以下几个前提条件:
客户端:
(1)客户机的网卡要支持PXE协议(集成BOOTROM芯片),且主板支持网络引导。一般大多数服务器主机都支持,只需在BIOS设置中允许从Network或LAN启动即可。
服务端:
(2)网络中有一台DHCP服务器以便为客户机自动分配地址、指定引导文件位置。
(3)服务器要通过TFTP服务(简单文件传输协议)来提供引导镜像文件的下载。
1.2 TFTP简单文件传输协议
TFTP(简单文件传输协议),是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP 的69号端口。
xinetd是新一代的网络守护进程服务程序,又叫超级服务器,常用来管理多种轻量级Internet服务。
2. 部署PXE远程安装服务
2.1 搭建PXE远程安装服务器
PXE远程安装服务器集成了CentOS 7安装源、TFTP服务、DHCP服务,能够向客户机裸机发送PXE引导程序、Linux内核、启动菜单等数据,以及提供安装文件。
搭建PXE远程安装服务器的准备工作:
修改/etc/sysconfig/selinux配置文件中的SELINUX参数,实现永久关闭防火墙;
(1)安装并启用 TFTP 服务
安装xinetd和tftp-server服务;
###修改TFTP服务的配置文件
vim /etc/xinetd.d/tftp
protocol = udp #TFTP使用UDP协议
wait = no #no表示客户机可以多台一起连接,yes表示客户机只能一台一台连接
server_args = -s /var/lib/tftpboot #指定TFTP根目录(文件存储路径)
disable = no #no表示开启TFTP服务
修改/etc/xinetd.d/tftp配置文件;
###开启tftp和xinetd服务,并设置为开机自启动
systemctl start tftp
systemctl enable tftp
systemctl start xinetd
systemctl enable xinetd
(2)安装并启用 DHCP 服务
###修改DHCP服务的配置文件
vim /etc/dhcp/dhcpd.conf
ddns-update-style none; #禁用 DNS 动态更新
next-server 192.168.80.50; #指定 TFTP 服务器的地址
filename "pxelinux.0"; #指定 PXE 引导程序的文件名
subnet 192.168.80.0 netmask 255.255.255.0 { #声明要分配的网段地址
range 192.168.80.100 192.168.80.200; #设置地址池
option routers 192.168.80.50; #默认网关地址指向TFTP服务器的IP地址
}
systemctl start dhcpd #开启dhcp服务,并设置为开机自启动
systemctl enable dhcpd
(3)准备 Linux 内核、初始化镜像文件
cd /mnt/images/pxeboot #已事先把光盘挂载到/mnt目录中
cp vmlinuz /var/lib/tftpboot/ #复制 Linux系统的内核文件 到TFTP根目录下
cp initrd.img /var/lib/tftpboot/ #复制 初始化镜像文件(linux引导加载模块)到TFTP根目录下
(4)准备 PXE 引导程序
安装syslinux软件;
yum -y install syslinux #PXE引导程序由软件包 syslinux 提供
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #复制 PXE引导程序 到TFTP根目录下
将pxelinux.0文件复制到tftp的根目录/var/lib/tftpboot/中;
(5)安装FTP服务,准备CentOS 7 安装源
yum -y install vsftpd
mkdir /var/ftp/centos7
cp -rf /mnt/* /var/ftp/centos7/
systemctl start vsftpd
systemctl enable vsftpd
(6)配置启动菜单文件
默认的启动菜单文件在TFTP根目录的 pxelinux.cfg子目录下,文件名为default
mkdir /var/lib/tftpboot/pxelinux.cfg
vim /var/lib/tftpboot/pxelinux.cfg/default
default auto #指定默认入口名称
prompt 1 #设置是否等待用户选择,“1”表示等待用户控制
label auto #图形安装(默认)引导入口,label用来定义启动项,指定入口类型
kernel vmlinuz #kernel 和 append用来定义引导参数,kernel指定内核文件
append initrd=initrd.img method=ftp://192.168.80.10/centos7
#append用于指定系统的引导文件,initrd用于设置系统引导参数,method用于指定安装源的软件包
label linux text #文本安装引导入口
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.80.10/centos7
label linux rescue #救援模式引导入口
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.80.10/centos7
2.2 验证PXE网络安装
开启客户端验证PXE服务器的安装配置是否生效;
选择编辑——>虚拟网络编辑器——>关闭本机自动开启的DHCP服务功能;
创建虚拟机;
没有截图展示部分,一路下一步即可,选择稍后进行安装;
客户机操作系统选择linux;
更换安装位置;
设置处理器个数;
设置虚拟机内存大小;
修改磁盘容量大小;
移除不需要的硬件设备;
直接开启新安装的虚拟机;
静默等待一段时间的系统自动安装;
为root用户设置密码;
等待一段时间的静默安装;
自此虚拟机安装已完成!
3.实现Kickstart无人值守安装
3.1 准备安装应答文件
在PXE服务器的桌面环境中(虚拟机中)system-config-kickstart 工具;
(1)安装system-config-kickstart 工具
yum install -y system-config-kickstart
可以查看到桌面环境中,应用程序——>系统工具——>Kickstart;
应答文件中基本配置选项如下:
应答文件中安装方法选项如下:
应答文件中引导装载程序选项如下:
应答文件中分区信息选项如下:
分配/boot分区;
分配swap分区;
分配根目录;
分配后的内存信息;
应答文件中网络配置选项如下:
应答文件中验证选项保持默认配置,不做任何操作;
应答文件中显示配置选项如下:
应答文件中显示配置保持默认操作,此处不做配置;
应答文件中软件包选择选项如下:
应答文件中预安装家脚本保持默认操作,此处不做配置;
应答文件中安装后脚本选项如下:
保存配置文件;
配置图形化脚本文件;
将生成的自动应答文件ks.cfg文件复制到ftp的根目录中;
添加自动应答文件ks.cfg的位置;
3.2 实现批量自动装机
再次创建虚拟机,验证PXE的自动应答功能知否生效;
新建虚拟机的安装与上面相同,省略雷同步骤;只是此时会自动创建系统,无需用户输入指令,实现免交互的自动创建。
一键实现自动安装,无需任何操作。
4. 总结
4.1PXE操作总结
安装4个服务:
-
tftp:(根目录:/var/lib/tftpboot/ 用于传输vmlinuz、initrd.img、pxelinux.0、pxelinux.cfg/default文件)
-
xinetd:管理tftp服务的
-
dhcp:用于给客户端自动分配IP地址,并指定pxelinux.0文件所在位置
-
vsftpd:用于给客户端传输安装源软件包
准备4个文件:
vmlinuz (内核文件)、initrd.img(系统镜像引导文件):光盘挂载目录/mnt/images/pxeboot/提供上面两个文件。
pxelinux.0( PXE程序引导文件):syslinux程序提供
pxelinux.cfg/default (PXE启动菜单文件):自建
注意:
关闭防火墙并关闭vmware的dhcp功能,客户都拿要求内存2Gb以上。
4.2 自动应答总结
-
安装system-config-kickstart,生成自动应答文件ks.cfg ,放到ftp目录中/var/ftp/ks.cfg.
-
修改pxelinux.cfg/default文件,在append行后面添加 ks=ftp://…指定ks.cfg文件路径.