一、PXE概述
PXE批量部署的优点
- 规模化:同时装配多台服务器
- 自动化:安装系统、配置各种服务
- 远程实现:不需要光盘、U盘等安装介质
注:网络带宽是瓶颈 建议千兆口的带宽,指定数量的一批裸金属
PXE(Preboot eXcution Environment)
预启动执行环境,在操作之前运行
服务端
- 运行DHCP服务,用来分配地址、定位引导程序
- 运行TFTP服务,提供引导程序下载
客户端
- 网卡支持PXE协议
- 主板支持网络引导
二、配置PXE装机服务器
基本部署过程
1:准备CentOS 7 安装源(YUM仓库)
2:安装并启用TFTP服务
3:提供Linux内核、PXE引导程序等
4:安装并启用DHCP服务
5:配置启动菜单
1.准备CentOS 7 安装源
CentOS 7 安装源支持HTTP、FTP、NFS等协议发布
[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# mkdir /var/ftp/centos7/
[root@localhost ~]# cp -rf /dev/cdrom/* /var/ftp/centos7/
[root@localhost ~]# systemctl start vsftpd
2.安装并启用TFTP服务
- 1.安装tftp-server软件包,启用tftp服务
- 2.配置文件位于/etc/xinetd.d/tftp
[root@localhost ~]# yum -y install tftp-server ===>安装tftp-server
[root@localhost ~]# vi /etc/xinetd.d/tftp
disable = no #修改配置值
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl enable tftp
3.准备Linux内核、PXE引导程序
- Linux内核、初始化镜像文件分别为vmlinuz和initrd.img
- 引导程序为pxelinux.0,由软件包syslinux提供
[root@localhost ~]# yum -y install syslinux
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default #启动菜单
[root@localhost ~]# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot #linux引导模块
[root@localhost ~]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot #压缩内核
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot #将内核拷贝到/vavr/lib/tftpboot目录下
4.DHCP服务的PXE设置
[root@localhost ~]# yum -y install dhcp
[root@localhost ~]# vi /etc/dhcp/dhcpd.conf
subnet 192.168.4.0 netmask 255.255.255.0{
range 192.168.4.100 192.168.4.200;
option routers 192.168.4.254;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.4.254, 202.106.0.20;
next-server 192.168.4.254; #指定TFTP服务器地址
filename "pxelinux.0"; #指定要下载的引导程序文件
}
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl enable dhcpd
5.配置启动菜单文件
[root@localhost ~]# vi /var/lib/tftpboot/pxelinux.cfg/default #确保pxelinux.cfg目录已存在
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网络安装
为客户机安装系统
- 调整BIOS设置,以便从网络引导
- 自动获取IP地址,并指定CentOS 7 安装源
- 其余过程与本地安装相同
四、PXE高效批量网络装机实验
1:安装DHCP服务
安装DHCP
[root@localhost ~]# yum -y install dhcp* #安装dhcp
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes #将模板文档直接拷贝到dhcp配置文件里面
[root@localhost ~]# vi /etc/dhcp/dhcpd.conf #修改配置文件
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.20 192.168.100.30;
option routers 192.168.100.100;
option subnet-mask 255.255.255.0;
option domain-name-servers 114.114.114.114, 8.8.8.8;
next-server 192.168.100.100;
filename "pxelinux.0";
}
2:安装tftp服务
安装tftp服务
[root@localhost ~]# yum -y install tftp-server #安装tftp-server
[root@localhost ~]# vi /etc/xinetd.d/tftp #修改配置文件
disable = no #这一行改成no
[root@localhost ~]# yum -y install syslinux #安装syslinux
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #将pxelinux.0拷贝到tftp的站点目录下
[root@localhost tftpboot]# mount /dev/cdrom /mnt #挂载光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost images]# cd /mnt/images/pxeboot/ #进入该目录
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/ #将内核跟初始化镜像文件拷贝到tftp站点目录下
3:安装FTP服务
安装ftp服务
[root@localhost tftpboot]# yum -y install vsftpd #安装vsftpd
[root@localhost tftpboot]# mkdir /var/ftp/centos7 #创建一个目录存放光盘的镜像
[root@localhost tftpboot]# mount /dev/cdrom /mnt #挂载光盘
[root@localhost tftpboot]# cp -rf /mnt/* /var/ftp/centos7/ #将光盘里里面的镜像文件拷贝到centos7目录下
[root@localhost tftpboot]# setenforce 0 #关闭核心防护
[root@localhost tftpboot]# systemctl stop firewalld #关闭防火墙
五、关于kickstart
kickstart无人值守技术
创建应答文件,预先定义好各种安装设置 ===>ks.cfg
免去交互设置过程,从而实现全自动话安装
kickstart准备应答文件
应答文件的来源
编辑CentOS 7 系统中现有的应答文件, /root/anaconda-ks.cfg (当前系统内都会有这个文件)
使用system-config-kickstart工具创建新的应答文件
需要安装system-config-kickstart软件包
六、PXE+kickstart自动安装
PXE于kickstart结合使用
[root@localhost ~]# vi /var/lib/pxelinux.cfg/default
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cfg
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
验证自动安装
将客户机以PXE方式引导
系统会自动完成安装,并配置好软件仓库
整个安装过程无需手动干预
kickstart无人值守安装实验
1:安装system-config-kickstart
[root@localhost ~]# yum -y install system-config-kickstart #安装system-config-kickstart
2:配置kickstart
打开kickstart软件
1.基本配置
2.安装方法
3.引导装载程序选项
4.分区信息
5.网络配置
6.防火墙配置
7.安装后脚本
8.保存到/var/ftp/目录下
3:修改配置文件
[root@localhost ~]# cd /root
[root@localhost ~]# ls
anaconda-ks.cfg 公共 视频 文档 音乐
initial-setup-ks.cfg 模板 图片 下载 桌面
[root@localhost ~]# vi anaconda-ks.cfg #复制配置文件里面的下面这些内容
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools
%end
[root@localhost ~]# cd /var/ftp/ #进入该目录
[root@localhost ftp]# ls #查看
centos7 ks.cfg pub
[root@localhost ftp]# vi ks.cfg #修改配置文件(把之前复制的全部粘贴到该文件最后)
[root@localhost ftp]# cd /var/lib/tftpboot/ #进入该目录
[root@localhost tftpboot]# ll #查看
总用量 57872
-rw-r--r--. 1 root root 52584760 7月 13 17:29 initrd.img
-rw-r--r--. 1 root root 26759 7月 13 17:25 pxelinux.0
drwxr-xr-x. 2 root root 21 7月 13 18:56 pxelinux.cfg
-rwxr-xr-x. 1 root root 6639904 7月 13 17:29 vmlinuz
[root@localhost tftpboot]# cd pxelinux.cfg/ #进入该目录
[root@localhost pxelinux.cfg]# ls #查看
default
[root@localhost pxelinux.cfg]# vi default #修改配置文件
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cfg
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7