介绍:
- PXE(Preboot eXecute Environment,预启动执行环境)是由Intel公司开发的技术,可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持PXE技术),主要用于在无人值守安装系统中引导客户端主机安装Linux操作系统。Kickstart是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保存成一个ks.cfg文件,当安装过程中需要填写参数时则自动匹配Kickstart生成的文件。所以只要Kickstart文件包含了安装过程中需要人工填写的所有参数,那么从理论上来讲完全不需要运维人员的干预,就可以自动完成安装工作。
- 这样就能解决当需要对数百台服务器安装系统时重复而又缓慢的光盘镜像安装。这种是需要使用PXE+TFTP+FTP+DHCP+Kickstart等服务共同搭建成一个无人值守安装系统,这些服务可以安装在一台服务器上,也可以分别安装在不同的服务器上
工作流程:
部署:
1.环境:服务器一台或多台
eg:192.268.226.202
2.关闭防火墙
systemctl stop firewalld
setenforce 0 ---临时关闭
配置文件永久关闭:
sed -ri '/enforcing/disable/g' /etc/selinux/config
3.关闭本地dhcp服务
4.服务器安装dhcp服务
yum -y isntall dhcp
vim /etc/dhcp/dhcpd.conf
allow booting; ---指定DHCP服务器是否允许客户端在booting阶段查询host、declaration
allow bootp; ---指定DHCP服务器是否对bootp、query做出响应
ddns-update-style none; ---定义DNS服务状态更新的类型,类型包括:none(不支持动态更新)、interim(互动更新模式)、ad-hoc(特殊更新模式)
ignore client-updates; ---忽略客户端更新此参数 只在服务器端使用
subnet 192.168.226.0 netmask 255.255.255.0 { ---定义作用域指定子网 必须与DHCP服务器的网段一致
range 192.168.226.200 192.168.226.215; ---定义分配的IP段
option subnet-mask 255.255.255.0; ---定义客户端子网掩码
option routers 192.168.226.2; ---定义客户端的网关地址
#option domain-name-servers 192.168.226.2; ---定义DNS服务器地址
#option domain-name "example.org"; ---定义DNS域名
default-lease-time 21600; ---默认超时时间
max-lease-time 43200; ---最大超时时间
next-server 192.168.226.202; ---指定Tftp主机启动文件从那个地址的服务器上获取
filename "pxelinux.0"; ---指定主机启动文件的名字。这个名字可以带相对路径。主机启动文件的根路径是由TFTP服务的配置文件指定的
}
systemctl restart dhcpd
systemctl enable dhcpd
2.配置TFTP服务 port:69
- TFTP作为一种基于UDP协议的简单文件传输协议,不需要进行用户认证即可获取到所需的文件资源。因此接下来配置TFTP服务程序,为客户端主机提供引导及驱动文件。当客户端主机有了基本的驱动程序之后,再通过vsftpd服务程序将完整的光盘镜像文件传输过去。
- TFTP是一种非常精简的文件传输服务程序,它的运行和关闭是由xinetd网络守护进程服务来管理的。xinetd服务程序会同时监听系统的多个端口,然后根据用户请求的端口号调取相应的服务程序来响应用户的请求。需要开启TFTP服务程序,只需在xinetd服务程序的配置文件中把disable参数改成no就可以了。保存配置文件并退出,然后重启xinetd服务程序,并将其加入到开机启动项中。
yum -y install tftp-server tftp
yum -y install xinetd
vim /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot ---tftp根目录
disable = no ---默认为yes,修改为no
per_source = 11
cps = 100 2
flags = IPv4
}
systemctl start xinetd
systemctl enable xinetd
3.配置syslinux
- SYSLinux是一个用于提供引导加载的服务程序。与其说SYSLinux是一个服务程序,不如说更需要里面的引导文件,在安装好SYSLinux服务程序软件包后,/usr/share/syslinux目录中会出现很多引导文件
yum -y install syslinux
- 我们首先需要把SYSLinux提供的引导文件复制到TFTP服务程序的默认目录中,也就是前文提到的文件pxelinux.0,这样客户端主机就能够顺利地获取到引导文件了。
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
- 在Centos 7系统光盘镜像中也有一些我们需要调取的引导文件。确认光盘镜像已经被挂载到/mnt/IOS目录后,使用复制命令将光盘镜像中自带的一些引导文件也复制到TFTP服务程序的默认目录中。
mkdir /mnt/IOS -p
mount /dev/cdrom /mnt/IOS
cp /mnt/IOS/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /mnt/IOS/isolinux/{vesamenu.c32,boot.msg} /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /mnt/IOS/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
- 将/var/lib/tftpboot/pxelinux.cfg/default进行编辑修改
vim /var/lib/tftpboot/pxelinux.cfg/default
timeout 15 //安装时选择安装超时时间,建议设置的小一些甚至是0,下方会配置默认选项,无需选择
......
label linux
menu label ^Install CentOS 7
kernel vmlinuz
menu default //添加这句话,让安装选择时默认选择这一个安装
append initrd=initrd.img repo=ftp://192.168.226.202 ks=ftp://192.168.226.202/pub/ks.cfg
//repo是加载镜像文件 ks是安装时加载的选项,下面会有详细配置步骤
label check
menu label Test this ^media & install CentOS 7
#menu default //默认安装时图标显示在此处安装,注释掉
kernel vmlinuz
- 生成ks.cfg文件,一台图形化界面的centos
yum -y install system-config-kickstart
system-config-kickstart //打开配置文件参数
- 参数选项
默认语言可以修改,给root设置密码
选择安装方法,这里使用的是FTP,当然也可以使用NFS和HTTP,选择哪种方式都可以,原理相同,将镜像文件挂载并拷贝镜像文件到共享的文件目录下
cp -r /mnt/IOS/* /var/ftp/
安装引导程序
清除引导记录并分区
网络配置,这里设置的是ens33
禁用防火墙
图形话安装选择
保存文件
将生成的ks.cfg文件拷贝到192.168.226.202这台服务器上的/var/ftp/pub/下,编辑
vim /var/ftp/pub/ks.cfg
# Disk partitioning information
part swap --fstype="swap" --size=2048
part /boot --fstype="xfs" --size=1024
part / --fstype="xfs" --grow --size=1
//在文件的最后一行下添加下面这三行代码,保存退出
%packages
@base
%end
chmod +r /var/ftp/pub/ks.cfg
可以开启服务器了!!!