Linux--PXE高效批量装机与kickstart无人值守安装
一:PXE概述
PXE(Preboot eXcution Environment)预启动执行环境,在操作系统之前运行
1.1:PXE批量部署的优点
- 规模化:同时装配多台服务器
- 自动化:安装系统、配置各种服务
- 远程实现:不需要光盘、U盘等安装介质
1.2:服务端
- 运行DHCP服务、用来分配地址、定位引导程序
- 运行TFTP服务、提供引导程序、压缩内核、系统初始化文件、启动菜单
- 运行VSFTPD服务、提供镜像
1.3:客户端
- 网卡支持PXE协议
- 主板支持网络引导
二:PXE装机服务器的配置
2.1:安装DHCP服务
[root@localhost ~]# yum install dhcp* -y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
27 subnet 192.168.10.0 netmask 255.255.255.0 {
28 range 192.168.10.20 192.168.10.30;
29 option routers 192.168.10.10;
30 option domain-name-servers 192.168.10.10;
31 next-server 192.168.10.10; ##指定TFTP服务器地址##
32 filename "pxelinux.0"; ##指定要下载的引导程序文件,需安装软件包syslinux##
33 }
2.2:安装vsftpd服务
[root@localhost ~]# yum install vsftpd -y
2.2.1:把镜像文件挂载到vsftpd站点
[root@localhost ~]# cd /var/ftp ##ftp站点目录##
[root@localhost ftp]# ls
pub
[root@localhost ftp]# mkdir centos7
[root@localhost ftp]# mount /dev/sr0 centos7/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ftp]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 47G 4.4G 43G 10% /
devtmpfs devtmpfs 470M 0 470M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 8.5M 478M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 166M 849M 17% /boot
tmpfs tmpfs 98M 32K 98M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /var/ftp/centos7
[root@localhost ftp]#
2.3:安装TFTP服务
[root@localhost ~]# yum install tftp-server -y
2.3.1:修改tftp服务的配置文件
[root@localhost ~]# vim /etc/xinetd.d/tftp
disable = yes ##此行yes改为no##
2.3.2:安装syslinux软件包提供引导程序
[root@localhost ~]# yum install syslinux -y
2.3.3:把引导程序添加到tftp站点
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
2.3.4:把压缩内核、系统初始化文件添加到tftp站点
[root@localhost ~]# cd /var/ftp/centos7/images/pxeboot/ ##压缩内核、初始化文件位置##
[root@localhost pxeboot]# ls
initrd.img TRANS.TBL vmlinuz
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/
[root@localhost pxeboot]#
2.3.5:配置启动菜单文件
[root@localhost ~]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ls
initrd.img pxelinux.0 vmlinuz
[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# ls
[root@localhost pxelinux.cfg]# vim default
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.10.10/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.10.10/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.10.10/centos7
2.4:配置网卡
虚拟机上网模式选择为仅主机模式,修改网卡配置文件
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static ##修改为static##
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.10.10 ##IP地址##
NETMASK=255.255.255.0 ##子网掩码##
[root@localhost ~]# systemctl restart network ##修改完配置文件后重启网络服务##
三:客户端配置
在VMware Workstation中重新创建一个新的虚拟机,选择稍后安装操作系统,网络类型选择仅主机模式,无需挂载光盘镜像文件,配置好之后开启虚拟机,在读条的时候快速按一下Esc键,在弹出的引导菜单中选择网络启动
出现此页面时选择auto或者回车
之后就会跳到安装Linux操作系统的界面,此方法虽然提高了系统安装的灵活性,然而安装期间仍需要手动选择语言、键盘类型、指定安装源等一系列交互操作,当需要批量安装时非常不方便,下面介绍通过kickstart工具进行无人值守安装。
四:实现kickstart无人值守安装
4.1:安装system-config-kickstart工具
[root@localhost ~]# yum install system-config-kickstart -y
4.2:配置安装应答参数
通过桌面菜单“应用程序”–“系统工具”–“kickstart”即可打开“kickstart配置程序”窗口
配置好之后点文件–保存到ftp站点 /var/ftp 之后打开/root/anaconda- ks.cfg文件,把软件包复制粘贴到ks.cfg文件中
%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
chrony
kexec-tools
%end
4.3:编辑引导菜单
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
4.4:实现无人值守安装
启动客户机裸机之后,当客户机以PXE方式引导时,将自动下载ks.cfg应答配置文件,然后根据其中的设置安装centos7系统,而无须手动干预。