使用PXE+TFTP+FTP+DHCP+Kickstart服务搭建出一个无人值守安装系统,可以无人值守就可以为数10台服务器安装系统,大大提高系统安装效率。
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。
Kickstart是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保存成一个ks.cfg文件,当安装过程中需要填写参数时则自动匹配Kickstart生成的文件。所以只要Kickstart文件包含了安装过程中需要人工填写的所有参数,那么从理论上来讲完全不需要运维人员的干预,就可以自动完成安装工作。
由于客户端没有完整的操作系统,也就不能使用FTP协议的验证,所以先使用TFTP协议帮助客户端获取引导及驱动文件,在使用vsftp服务程序将完整的系统镜像传输给客户端,亦可以使用httpd来替代vsftpd服务程序。
工作流程:
进行实验时,要先关闭iptables和selinux,无人值守系统双网卡,一个要设置为仅主机模式,一个为桥接模式,用于连接网络。
主机名称 |
操作系统 |
IP地址 |
无人值守系统 |
CentOS 6 |
192.168.231.142 |
客户端 |
|
|
2.1虚拟机设置
不使用本地DHCP服务
网络适配器设置为主机模式,使虚拟机之间能够相互通信
2.2配置DHCP
#yum install dhcp -y
#vim /etc/dhcp/dhcpd.conf 添加
//允许了BOOTP引导程序协议,旨在让局域网内暂时没有操作系统的主机也能获取静态IP地址;
allow booting;
allow bootp;
//定义DNS服务动态更新的类型,类型包括:none(不支持动态更新)、interim(互动更新模式)与ad-hoc(特殊更新模式)
ddns-update-style interim;
//忽略客户端更新DNS记录
ignore client-updates;
subnet 192.168.231.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.231.142;
range dynamic-bootp 192.168.231.100 192.168.231.110;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.231.142;
//让客户端主机获取到IP地址后主动获取引导驱动文件,自行进入下一步的安装过程。
filename "pxelinux.0";
}
2.3启动DHCP服务,并添加到开机启动项
#service dhcpd start
#chkconfig dhcpd on //设置开机启动
3.1安装tftp服务
#yum install tftp-server
TFPT的运行和关闭是由xinetd网络守护进程来管理的,xinetd服务程序会同时监听系统的多个端口,然后根据用户请求的端口号调取相应的服务程序来相应用户的请求。
3.2修改配置文件
#vim /etc/xinetd.d/tftp
3.3启动服务
service xinetd start
添加到开机启动项
chkconfig xinetd on
4.1安装SYSLinux
SYSLinux是一个用于提供引导加载的服务程序。而我们主要使用里面的引导文件,文件存在于/usr/share/syslinux
#yum install syslinux
4.2把SYSLinux提供的引导文件复制到TFTP服务程序的默认目录中,也就是前文提到的pxelinux.0,这样客户端就可以获取到引导文件了。另外,还需要CentOS6中的引导文件,这就要挂载光盘镜像(挂载到/media/cdrom),然后复制相应文件到TFTP服务程序的默认目录中。
#cd /var/lib/tftpboot
#cp /usr/share/syslinux/pxelinux.0 ./
#mount /dev/sr0 /media/cdrom
使其开机也能自动挂载
#vim /etc/fstab 添加一条
/dev/sr0 /media/cdrom udf,iso9660 defaults 0 0
#cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} ./
# cp /media/cdrom/isolinux/{vesamenu.c32,boot.msg} ./
4.3然后在TFTP服务程序的目录中新建pxelinux.cfg目录,并将系统光盘中的开机选项菜单复制到该目录中,命名为default
#mkdir pxelinux.cfg
#cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default
#vim pxelinux.cfg/default
18 label linux
19 menu label ^Install or upgrade an existing system
20 menu default
21 kernel vmlinuz
22append initrd=initrd.img inst.stage2=ftp://192.168.231.142 ks=ftp://192.168.231.142/pub/ks.cfg quiet
5.1光盘镜像通过FTP协议传输,因此要用到vsftpd服务程序。当然也可以用http服务程序。
#yum install vsftpd -y
#chkconfig vsftpd on
确认系统光盘镜像已经挂载到/media/cdrom目录,把目录中的光盘镜像文件全部服务制到vsftpd服务程序的目录中。
cp -r /media/cdrom/* /var/ftp
6.1在安装系统过程中,经常需要手动填写一些参数,点击一些按钮,非常麻烦,如果把参数填好,形成一个应答文件,让系统自动执行,这该多好啊!而Kickstart就是这样一个应答文件,文件中包含系统安装过程中需要使用的选项和参数信息,系统可以自动调取应答文件的内容,从而实现无人值守安装系统。
这个文件就存在于root管理员的家目录中,名为anaconda-ks.cfg。
把这个文件复制到/var/ftp/pub/ks.cfg,以ks.cfg命名,并赋予文件可读权限。
#cp anaconda-ks.cfg /var/ftp/pub/ks.cfg
#chmod +r /var/ftp/pub/ks.cfg
#vim /var/ftp/pub/ks.cfg
ks.cfg文件内容
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="ftp://192.168.231.142/var/ftp"
# Root password
rootpw --iscrypted $1$b8Xgsj2c$K5p5zn5zlUbaf69kdRz1A.
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone --isUtc Asia/Shanghai
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part swap --fstype="swap" --size=1024
part / --fstype="ext4" --size=6967
part /boot --fstype="ext4" --size=200
%packages
@base
@compat-libraries
@debugging
@development
git
%end
如果感觉系统自带的应答文件参数较少,可以通过Yum软件仓库来安装system-config-kickstart软件包。这是一个图形换的Kickstart应答文件生成工具,可以根据需求生成相应文件,然后将文件放到/var/ftp/pub目录中,并修改名字为ks.cfg即可。详情可参考:https://blog.csdn.net/yuanfangPOET/article/details/82933018
在此选择稍后安装系统
网卡设置为仅主机模式
然后开启此虚拟机就可以自行安装系统啦!