PXE高效批量网络装机的解析
PXE技术
PXE批量部署的优点
- 规模化:同时装配多台服务器
- 自动化:安装系统,配置各种服务
- 远程实现:不需要光盘,U盘等安装介质
- 客户机获取服务器的IP地址:DHCP
- 客户机从服务器进行下载:FTP
- 在装机时对硬件自检,引导程序,内核文件镜像文件
PXE
- PXE(Preboot eXcution Environment):
预启动执行环境,在操作系统之前运行 - 服务器:
运行DHCP服务,用来分配地址,定位引导程序
运行TFTP服务,提供引导程序下载(菜单,镜像,内核…)
FTP服务,作为本地yum源 - 客户端:
网卡支持PXE协议
主板支持网络引导
配置PXE装机服务器
基本部署过程
- 准备CentOS 7 安装源(YUM仓库) ftp服务
- 安装并启用TFTP服务 为客户机提供系统的文件下载的服务
- 提供Linux内核,PXE引导程序等
- 安装并启用DHCP服务
- 配置启动菜单
准备CentOS 7 安装源
CentOS 7 安装源支持HTTP,FTP,NFS等协议发布
[root@localhost~]# yum -y install vsftpd
[root@localhost~]# mkdir /var/ftp/centos7
[root@localhost~]# cp -rf /media/cdrom/* /var/ftp/centos7/
[root@localhost~]# systemctl start vsftpd
cp -rf /mnt/* /var/ftp/
安装并启用TFTP服务
- 在客户端上安装tftp-server软件包,启用tftp服务
- 配置文件位于/etc/xinetd.d/tftp
[root@localhost~]# yum -y install tftp-server
[root@localhost~]# vi /etc/xinetd.d/tftp
server_args =-s /var/lib/tftpboot
disable = no #修改配置值,启动服务
[root@localhost~]# systemctl start tftp #启动
[root@localhost~]# systemctl enable tftp #开机自启动
准备Linux内核,PXE引导程序
- Linux内核,初始化镜像文件分别为vmlinuz和initrd.img
- 引导程序为pxelinux 0,由软件包syslinux提供
[root@localhost ~]# cd /media/cdrom/images/pxeboot
#位于系统镜像文件夹 images/pxeboot下 共享目录
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot
[root@localhost ~]# yum -y install syslinux
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/ tftpboot #也拷贝到tftp的根目录
DHCP服务的PXE设置
[root@localhost ~]# yum -y install dhcp
[root@localhost ~]# vi /etc/dhcp/dhcpd.conf
subnet 192. 168.188 netmask 255.255.255.0 {
option routers 192. 168.188.254;
option domain-name-servers 192.168.188.20,192.168.188.254;
range 192.168.188.100 192.168.188.200;
next-server 192.168.188.254; #next-server:指定TFTP服务器地址
filename "pxelinux.0"; #filename:指定要下载的引导程序文件
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl enable dhcpd
配置启动菜单文件
[root@localhost ~]# vi /var/ib/tftpboot/pxeliqux.cfg/default #确保pxelinux.cig目录已存在
default auto
prompt 1 #表示客户机安装系统,需要手动进行时。进行使用
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192. 168.188.254/centos7
label linux text
kernel vmlinuz #文本模式安装
append text initrd=initrd.img method=fp://192. 168.4.254/centos7
label linux rescue
kernel vmlinuz # 进入救援模式
append rescue initrd=initrd.img method=ftp://192.168.188.254/cento8t
验证PXE网络安装
- 调整BIOS设置,以便网络引导
- 自动获取IP地址,并指定CentOS 7安装源
- 其余过程与本地安装相同
- 若用VMware虚拟机测试,虚拟内存至少2G
安装流程
服务器上
- 安装tftp
yum -y install tftp-server - 编辑配置文件
vi /etc/xinetd.d/tftp - 安装DHCP
yum -y install dhcp - 在编辑配置文件前先切换网卡到VMnet1(仅主机模式)
- 安装ftp
yum -y install vsftpd - 挂载
mount /dev/cdrom /var/ftp/pub - 编辑配置文件
vi /etc/vsftpd/vsftpd.conf
#添加
anon_umask=022 #设置匿名账户的权限是755
anon_other_write_enable=YES #允许匿名账户其它的写权限
#修改
anon_upload_enable=YES #允许匿名账户上传
anon_mkdir_write_enable=YES #允许匿名账户新建文件或目录
listen=YES # 监听IPv4
listen_ipv6=NO #监听IPv6
- 安装引导加载程序
yum -y install syslinux - 复制网络启动所需要的文件到tftp服务器的根目录下
[root@server1 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@server1 ~]# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
Linux引导加载模块
[root@server1 ~]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
压缩内核
[root@server1 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
创建特定的目录存放菜单文件
[root@server1 ~]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default #启动菜单
[root@server1 ~]# cp /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot/
图形化启动菜单
- 完成以上操作
修改安装的配置文件
[root@server1 ~]# vi /var/lib/tftpboot/pxelinux.cfg/default
default auto #默认图形化安装
prompt 1 #需要用户选择
label auto
kernel vmlinuz # 指定图形化界面的光盘引导路径
append initrd=initrd.img method=ftp://192.168.188.132/
label linux text
kernel vmlinuz # 指定文本的光盘引导路径
append text initrd=initrd.img method=ftp://192.168.188.132/
label linux rescue
kernel vmlinuz # 指定救援模式的光盘引导路径
append rescue initrd=initrd.img method=ftp://192.168.188.132/
- 启动所有服务器
安装xinetd 用于管理tftp
[root@server1 ~]# yum -y install xinetd
[root@server1 ~]# systemctl start dhcpd
[root@server1 ~]# systemctl start vsftpd
[root@server1 ~]# chkconfig --level 35 xinetd on
[root@server1 ~]# chkconfig --level 35 tftp on
[root@server1 ~]# systemctl start tftp
[root@server1 ~]# netstat -anpu | grep dhcpd
[root@server1 ~]# netstat -anpt | grep vsftpd
[root@server1 ~]# systemctl stop firewalld #关闭防火墙
[root@server1 ~]# setenforce 0 #关闭核心防护
kickstart
kickstart无人值守技术
- 创建应答文件,预定定义好各种安装设置
- 免去交互设置过程,从而实现全自动化安装
准备应答文件
应答文件的来源
- 编辑CentOS 7 系统中现有的应答文件
- /root/anaconda-ks.cfg (系统自带的)
- 使用system-config-kickstart工具创建新的应答文件
- 需要安装system-config-kickstart软件包
验证自动安装
- 将客户机以PXE方式引导
- 系统会自动完成安装,并配置好软件仓库
- 整个安装过程无需手动干预
开始进行PXE自动安装----无人值守操作设置
在服务器上安装文件,可以图形化界面向导来配置安装应答文件
[root@server1 ~]# yum -y install system-config-kickstart
进入kickstart
设置默认语言,时区,Root密码,安装后重启
设置安全方法:ftp FTP服务器:ftp://192.168.6.10 目录:pub
引导装载程序选项 :安装新引导装载程序
分区信息设置: 初始化磁盘标签
防火墙配置 禁用
安装后脚本设置
cd /etc/yum.repos.d
rm -f *
echo -e "[base]" >> aa.repo
echo -e "name=yum" >> aa.repo
echo -e "baseurl=ftp://192.168.6.10/pub" >> aa.repo
echo -e "gpgcheck=0" >> aa.repo
echo -e "enable=1" >> aa.repo
修改完成后进行文件保存
保存路径/var/ftp
将服务器本地anaconda. ks. cfg内的从%packages. … 到%end内容即为gnome桌面开发环境必装软件添加进ks. cfg的%end下
[root@server1 ~]# vi anaconda-ks.cfg #复制客户机需要的安装软件包
[root@server1 ~]# cd /var/ftp
[root@server1 ftp]# ls -lh
[root@server1 ftp]# vi ks.cfg
完成以上操作,PXE自动安装设置