PXE + Kickstart无人值守批量安装CentOS 6.x

Linux 2280℃

公司同时上线几十甚至上百台服务器需要安装系统,常规的办法有: 光盘安装系统(光驱成本高,需重复安装)、USB外置光驱/U盘安装(需重复安装)、FTP/NFS/HTTP网络安装系统(需重复安装) 。这时候就需要无人值守安装,一般用Kickstart和Cobbler。

Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件,安装程序会根据ks.cfg中的设置重启/关闭系统,并结束安装。使用中一般结合PEX完成开机引导。

Cobbler集中和简化了通过网络安装操作系统需要使用到的DHCP、TFTP和DNS服务的配置。Cobbler不仅有一个命令行界面,还提供了一个Web界面,大大降低了使用者的入门水平。Cobbler内置了一个轻量级配置管理系统。简单的说,Cobbler是对kickstart的封装,简化安装步骤、使用流程,降低使用者的门槛。

PXE+Kickstart安装系统原理图


整个过程大概是这样的:计算机(PXE Client)通过网卡开机时,会向本网络中的DHCP服务器索取IP,DHCP 服务器返回分配的IP 以及PXE文件(PXE Server)的位置。然后Client通过TFTP或MTFTP协议索取PXE文件,根据PXE文件的执行结果通过HTTP/FTP/NFS向OS server获取系统镜像文件和ks.cfg文件。最后使用Kickstart完成系统安装。

相关术语介绍

术语 含义 作用
PXE Pre-boot Execution Environment 预启动执行环境 是英特尔公司的一种开机引导技术,作用就是引导装机,PXE分为Client端和Server端
syslinux syslinux是一个功能强大的兼容各种介质的引导程序 PXE开机引导需要使用CentOS提供的syslinux包
PXE Client 这里代表的是需要安装操作系统的客户端,实际存放在网卡的 ROM 中
PXE Server 用于存放PXE文件,一般是一台TFTP服务器
Kickstart  Kickstart是RedHat公司开源的项目  将安装系统的过程中写入ks.cfg文件中,实现无人值守自动安装
DHCP Dynamic Host Configuration Protocol 动态主机配置协议 用于PXE引导过程中获取IP地址。共使用两次,1.使用TFTP或MTFTP传文件时,2.使用HTTP、FTP或NFS传文件时。
TFTP  Trivial File Transfer Protocol 简单文件传输协议  属于TCP/IP协议族,用来在客户机与服务器之间进行小型文件传输。端口号是69
OS Server  用于存放系统镜像文件和Kickstart的配置文件
HTTP HyperText Transfer Protocol 超文本传输协议  用于下载ks.cfg以及系统镜像文件

准备工作

准备一台Centos 6的虚拟机,上图的DHCP Derver、PXE Server、OS Server都会安装在该机器上。注意虚拟机网卡应采用NAT模式,不要使用桥接模式,因为在同一局域网有多个DHCP服务会有冲突。 同时关闭VMware的NAT模式的dhcp服务(编辑->虚拟网络编辑器),避免干扰。将系统镜像光盘挂载到/mnt/下,后面会用到,最后关闭iptables和SELinux。

mount /dev/cdrom /mnt/
service iptables stop
setenforce 0

安装DHCP服务并配置

yum -y install dhcp
vim /etc/dhcp/dhcpd.conf
#添加如下内容:
subnet 10.0.0.0 netmask 255.255.255.0 {
	range 10.0.0.100 10.0.0.200;      # 可分配的起始IP和结束IP
	option subnet-mask 255.255.255.0; # 设定子网掩码
	default-lease-time 21600;         # 设置默认的IP租用期限
	max-lease-time 43200;             # 设置最大的IP租用期限
	next-server 10.0.0.7;             # 告知客户端TFTP服务器的IP
	filename "/pxelinux.0";           # 告知客户端从TFTP根目录下载pxe文件
}
#启动DHCP服务并查看
service dhcpd start
netstat -tunlp|grep dhcp

安装TFTP服务并配置PEX引导

yum -y install tftp-server
vim /etc/xinetd.d/tftp
#将"disable = yes"修改为"disable = no"
#因为tftp服务是挂载在超级进程xinetd下的,所以通过xinetd来启动
service xinetd restart
netstat -tunlp|grep xinetd
#安装syslinux,并将引导文件复制到TFTP根目录下
yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
#复制系统镜像里的linux内核文件到TFTP根目录下
cp -a /mnt/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
#制作开机默认选项和菜单文件,该文件选项可参考光盘镜像里的isolinux/isolinux.cfg 
mkdir /var/lib/tftpboot/pxelinux.cfg/
vim /var/lib/tftpboot/pxelinux.cfg/default
default ks #默认加载名为“ks”的菜单
prompt 0 #关闭命令行显示“boot: ”提示符
label ks #定义一个名为“ks”选项

kernel vmlinuz #指定要启动的内核。默认路径是tftpboot目录下。
append initrd=initrd.img ks=http://10.0.0.7/CentOS-6.7-ks.cfg #指定ks.cfg文件路径
# append initrd=initrd.img ks=http://10.0.0.7/CentOS-6.7-ks.cfg ksdevice=eth0 #ksdevice指定启动网卡

安装HTTP服务并复制CentOS镜像文件

yum -y install httpd
cp -a /mnt/* /var/www/html/
service httpd start

制作Kickstart自动安装配置文件

关于Kickstat配置文件可以参考:官网帮助文档。配置文件ks.cfg文件组成大致分为3段:

  • 命令段:包含键盘类型,语言,安装方式等配置,有必选项和可选项,如果缺少某个必选项,安装时会中断并提示用户选择。
  • 软件包段:%packages是开始标记、@groupname用于指定安装的包组、package_name用于指定安装的包。
  • 脚本段(可选):%pre安装系统前执行的命令或脚本、%post:安装系统后执行的命令或脚本。
vim /var/www/html/CentOS-6.7-ks.cfg
install #全新安装,而非在现有系统上升级
url --url="http://192.168.222.128/" #指定安装类型为url和地址
text #指定以文本方式安装
lang en_US.UTF-8 #设置安装过程的语言和系统默认语言
keyboard us #设置系统默认键盘类型
zerombr 3初始化所有可在磁盘中找到的无效分区表
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" #指定安装引导装载程序的方法
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6 #配置系统网络信息
timezone --utc Asia/Shanghai #设置系统时区
authconfig --enableshadow --passalgo=sha512 #系统认证选项
rootpw --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/ #设置root密码
clearpart --all --initlabel #生成新分区前删除原所有分区
part /boot --fstype=ext4 --asprimary --size=200 #创建boot分区,大小200M
part swap --size=1024 #创建swap分区,大小1024M
part / --fstype=ext4 --asprimary --grow --size=200 #剩余空间分配给根分区
firstboot --disable #系统第一次引导时不启动Setup Agent
selinux --disabled #在系统中完全禁用SELinux
firewall --disabled #禁用系统的在系统中完全禁用 SELinux
logging --level=info #设置安装过程中错误日志级别
reboot #在成功完成安装后重启
%packages #以下为安装软件包和软件列表
@base
@compat-libraries
@debugging
@development
tree
telnet
%post #系统安装后执行的脚本或命令
sed "s/rhgb //" /boot/grub/grub.conf #设置启动系统时不使用图形进度条方式
%end

转载请注明:零五宝典 » PXE + Kickstart无人值守批量安装CentOS 6.x