PXE(Preboot eXecute Environment,预启动执行环境)是由 Intel 公司开发的技术, 可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持 PXE 技术),主 要用于在无人值守安装系统中引导客户端主机安装 Linux 操作系统。Kickstart 是一种无人 值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保存成一个 ks.cfg 文件,当安装过程中需要填写参数时则自动匹配 Kickstart 生成的文件。所以只要 Kickstart 文件包含了安装过程中需要人工填写的所有参数,那么从理论上来讲完全不需要运维人员的干预,就可以自动完成安装工作。
1.关闭防火墙
CentOS 7默认使用的是firewall作为防火墙
查看防火墙状态
firewall-cmd --state
停止firewall
systemctl stop firewalld
禁止firewall开机启动
systemctl disable firewalld
关闭 selinux:
setenforce 0
2.DHCP
#DHCP主要是提供客户端网络参数与TFTP的位置,以及boot loader的文件名
yum install dhcp -y
vi /etc/dhcp/dhcpd.conf
allow booting; allow bootp;
ddns-update-style interim;
ignore client-updates;
subnet 192.168.134.0 netmask 255.255.255.0 { #设置网段
option routers 192.168.134.2; #设置网关
option subnet-mask 255.255.255.0; #设置子网掩码
option domain-name-servers 192.168.134.2; #设置dns服务器地址
range dynamic-bootp 192.168.134.200 192.168.134.205; #IP地址租用的范围
default-lease-time 21600; #默认租约时间
max-lease-time 43200; #大租约时间
next-server 192.168.134.130; #tftp服务器地址
filename "pxelinux.0"; #tftp服务器根目录下面的文件名
}
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl enable dhcpd #自启
[root@localhost ~]# systemctl status dhcpd #查看服务状态
● dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2018-09-18 08:17:03 EDT; 26s ago
Docs: man:dhcpd(8)
man:dhcpd.conf(5)
Main PID: 3994 (dhcpd)
Status: "Dispatching packets..."
3. 配置 TFTP 服务程序
#boot loader文件pxelinux.0以及内核相关的配置文件(目录pxelinux.cfg下)主要都是由TFTP来提供的!
TFTP 是一种非常精简的文件传输服务程序,它的运行和关闭是由 xinetd 网络守护进 程服务来管理的。xinetd 服务程序会同时监听系统的多个端口,然后根据用户请求的端口 号调取相应的服务程序来响应用户的请求。需要开启 TFTP 服务程序,只需在 xinetd 服务 程序的配置文件中把 disable 参数改成 no 就可以了。保存配置文件并退出,然后重启 xinetd 服务程序,并将其加入到开机启动项中(在 RHEL 7 系统中,已经默认启用了 xinetd 服务 程序,因此在将其添加到开机启动项中的时候没有输出信息属于正常情况)。
yum install tftp-server xinetd -y
vim /etc/xinetd.d/tftp
disable = no #此项修改,其它不变;
保存退出
systemctl restart xinetd
systemctl enable xinetd
systemctl status xinetd
4.PXE的bootloader和相关配置文件
配置 SYSLinux 服务程序
#syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作 系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘
yum install syslinux -y
cd /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 .
cp /mnt/images/pxeboot/{vmlinuz,initrd.img} .
cp /mnt/isolinux/{vesamenu.c32,boot.msg} .
mkdir pxelinux.cfg
cp /mnt/isolinux/isolinux.cfg pxelinux.cfg/default
vi pxelinux.cfg/default
[root@localhost ~]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ls
[root@localhost tftpboot]# cp /usr/share/syslinux/pxelinux.0 .
[root@localhost tftpboot]# cp /mnt/images/pxeboot/{vmlinuz,initrd.img} .
[root@localhost tftpboot]# cp /mnt/isolinux/{vesamenu.c32,boot.msg} .
[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# cp /mnt/isolinux/isolinux.cfg pxelinux.cfg/default
[root@localhost tftpboot]# vi pxelinux.cfg/default
默认的开机菜单中有两个选项,要么是安装系统,要么是对安装介质进行检验。既然我 们已经确定采用无人值守的方式安装系统,还需要为每台主机手动选择相应的选项,未免与 我们的主旨(无人值守安装)相悖。现在我们编辑这个 default 文件,把第 1 行的 default 参数 修改为 linux,这样系统在开机时就会默认执行那个名称为 linux 的选项了。对应的 linux 选项 大约在 64 行,我们将默认的光盘镜像安装方式修改成 FTP 文件传输方式,并指定好光盘镜像 的获取网址以及 Kickstart 应答文件的获取路径:
1 default linux
2 timeout 600
3
4 display boot.msg
#删除60行之后的,在文件末尾添加以下内容;
也可自己编写
label linux
menu label ^Install CentOS 74
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.134.130/config/ks.cfg biosdevname=0 net.ifnames=0
重启 tftpd
systemctl start tftp
systemctl status tftp
systemctl enable tftp
5.HTTP
#通过HTTP协议把光盘镜像内容传给客户端
yum install httpd -y
systemctl start httpd
systemctl status httpd
systemctl enable httpd
cp -rf /mnt/* /var/www/html/
mkdir -p /var/www/html/config #新建目录,把自定义的文件、脚本等放置于此
6.Kickstart配置文件
毕竟,我们使用 PXE + Kickstart部署的是一套“无人值守安装系统服务”,而不是“无人值 守传输系统光盘镜像服务”,因此还需要让客户端主机能够一边获取光盘镜像,还能够一边自动帮 我们填写好安装过程中出现的选项。简单来说,如果生产环境中有 100 台服务器,它们需要安装 相同的系统环境,那么在安装过程中单击的按钮和填写的信息也应该都是相同的。那么,为什么 不创建一个类似于备忘录的需求清单呢?这样,在无人值守安装系统时,可以从这个需求清单中 找到相应的选项值,从而免去了手动输入之苦,更重要的是,也彻底解放了人的干预,彻底实现 无人值守自动安装系统,而不是单纯地传输系统光盘镜像。 有了上文做铺垫,相信大家现在应该可以猜到 Kickstart 其实并不是一个服务程序,而是一个应答文件了。是的!Kickstart 应答文件中包含了系统安装过程中需要使用的选项和参数 信息,系统可以自动调取这个应答文件的内容,从而彻底实现了无人值守安装系统。那么,既 然这个文件如此重要,该去哪里找呢?其实在 root 管理员的家目录中有一个名为 anacondaks.cfg 的文件,它就是应答文件。
vi /var/www/html/config/ks.cfg
#platform=x86, AMD64 或 Intel EM64T
#version=
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="http://192.168.134.130/"
#!!!
# Use CDROM installation media
repo --name="yum" --baseurl=http://192.168.134.130/
#!!!
# Root password
rootpw --iscrypted $1$mi4lP.ZY$j5UDGX34knfGuSYPwd82u/ #redhat
# openssl passwd -1
# Use graphical install graphical or text
text
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US.UTF-8
# SELinux configuration
selinux --disabled
# Reboot after installation
reboot
# System timezone
timezone --isUtc Asia/Shanghai
# Network information
network --bootproto=dhcp --device=eth0 --noipv6 --activate
network --hostname=web
#!!!
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
#!!!
# Disk partitioning information
part /boot --fstype="xfs" --ondisk=sda --size=200
part swap --fstype="swap" --ondisk=sda --size=2048
part / --fstype="xfs" --ondisk=sda --size=17166
#!!!
%packages
@core
wget
%end
%post
#yum_client
cd /etc/yum.repos.d/
rm -rf *
wget http://192.168.134.130/config/yum.repo
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end
检查是否存在错误
yum install pykickstart
ksvalidator ks.cfg
7.测试(客户端启动方式应更改为PXE网络启动!)
一些常见问题
1.部署无人值守安装系统,需要用到哪些服务程序?
需要用到 SYSLinux 引导服务、DHCP 服务、vsftpd 文件传输服务(或 httpd 网站服
务)、TFTP 服务以及 KickStart 应答文件。
2.在 Vmware Workstation 虚拟机软件中,DHCP 服务总是分配错误 IP 地址的原因可能是 什么?
虚拟机的虚拟网络编辑器中自带的 DHCP 服务可能没有关闭,由此产生了错误分配 IP
地址的情况。
3.如何启用 TFTP 服务?
需要在 xinetd 服务程序的配置文件中把 disable 参数改成 no。
4.成功安装 SYSLinux 服务程序后,可以在哪个目录中找到引导文件?
在安装好 SYSLinux 服务程序软件包后,在/usr/share/syslinux 目录中会出现很多引导
文件。
5.在开机选项菜单文件中,把 default 参数设置成 linux 的作用是什么?
目的是让系统自动开始安装过程,而不需要运维人员再去选择是安装系统还是校验镜
像文件。
6.安装 vsftpd 文件传输服务或 httpd 网站服务的作用是什么?
把光盘镜像文件完整、顺利地传送到客户端主机。
7.Kickstart 应答文件的作用是什么?
Kickstart 应答文件中包含了系统安装过程中需要使用的选项和参数信息,客户端主
机在安装系统的过程中可以自动调取这个应答文件的内容,从而彻底实现无人值守 安装系统。