1、kickstart 使用背景介绍
大家想个问题,我们平时手动光盘安装一台linux系统的多久能完成?10分钟?半小时?1小时还是一上午?领导说小李明天到100台服务器你统一装成linux系统,周日交工。啊?100台?你是不是要哭了…… 于是乎,kickstart 自动化安装平台就诞生了,哇哈哈!
2、kickstart 原理
① PXE 客户端发送UDP广播请求
  PXE 客户端从自己的PXE网卡启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向本网络中的DHCP服务器索取IP。
② DHCP服务器提供信息
  DHCP服务器收到客户端的请求,验证是否来至合法的PXE 客户端的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。
③ PXE客户端请求下载启动文件
  客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。
④ TETP服务器响应客户端请求并传送文件
  当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM由TFTP通讯协议从tftp服务器 下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。
⑤ 请求下载自动应答文件
  客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
⑥ 客户端安装操作系统
  将ks.cfg文件下载回来后,通过该文件找到http镜像,并按照该文件的配置请求下载安装过程需要的软件包。
  http镜像和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。
  安装完成后,将提示重新引导计算机。

所有要使用kickstart安装平台,完整架构包括(dhcp、http、tftp、pxe)等

3、kickstart 平台搭建
基于yum安装dhcp、tftp、httpd服务,
yum install httpd httpd-devel tftp-server xinetd dhcpd -y

 1)配置tftp服务,开启tftp服务
 修改配置文件 /etc/xinetd.d/tftp 如下:
 cat>/etc/xinetd.d/tftp<

2 )TFTP+PXE 配置
#挂载挂盘
mount /dev/cdrom /mnt/cdrom
#安装syslinux必备文件
yum install syslinux syslinux-devel -y
#创建配置文件目录并拷贝配置文件
mkdir -p /var/lib/tftpboot/pxelinux.cfg
\cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
\cp /usr/share/syslinux/vesamenu.c32 /var/lib/tftpboot/
\cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
\cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
\cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
\chmod 644 /var/lib/tftpboot/pxelinux.cfg/default
3)配置TFTPBOOT引导文件,
cat >>/var/lib/tftpboot/pexlinux.cfg/default <default vesamenu.c32
timeout 10
display boot.msg
menu clear
menu background splash.png
menu title CentOS Linux 7
label linux
menu label ^Install CentOS Linux 7
menu default
kernel vmlinuz
append initrd=initrd.img inst.repo=http://192.168.10.128/centos7 quiet ks=http://192.168.10.128/ks.cfg
label check
menu label Test this ^media & install CentOS Linux 7
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
EOF

注解:192.168.10.128是kickstart服务器地址,centos7是httpd共享linux镜像的目录,ks.cfg是kickstart主配置文件,timeout 超时时间,label linux 和label check 是linux开机启动显示的菜单,选择菜单后,对应里面的操作。
TFTP配置完毕,由于TFTP是非独立服务,需要依赖xinetd服务来启动,启动命令,systemctl start xinetd

4)HTTP+kickstart 配置
远程系统安装,客户端需要下载系统所需要的软件包,所以需要使用NFS或HTTPD把镜像文件共享出来。
mkdir -p /var/www/html/centos7
mount /dev/cdrom /var/www/html/centos

配置kickstart,可以使用system-kickstart 系统软件包来配置,ks.cfg配置文件如下:
cat >> /var/www/html/ks.cfg<< EOF
install
text
keyboard 'us'
rootpw www.jfedu.net
timezone Asia/Shanghai
url --url=http://192.168.10.128/centos7
reboot
lang zh_CN
firewall --disabled
network --bootproto=dhcp --device=ens33
auth --useshadow --passalgo=sha512
firstboot --disable
selinux disabled
bootloader --location=mbr
clearpart --all --initlabel
part /boot --fstype="ext4" --size=300
part / --fstype="ext4" --grow
part swap --fstype="swap" --size=512br/>%packages
@base
@core
%end
EOF
注解:执行动作为安装; 文本类型;键盘语言;登陆密码;时区;下载地址;重启;语言;关闭防火墙,指定启动类型,网卡名称;MBR引导分区;创建分区信息;安装包基于base和core。

配置DHCP服务,DHCP服务配置文件代码如下:
cat >> /etc/dhcp/dhcpd.conf<ddns-update-style interim;
ignore client-updates;
next-server 192.168.10.128;
filename "pxelinux.0";
allow booting;
allow bootp;
subnet 192.168.10.0 netmask 255.255.255.0 {
#default gateway
option routers 192.168.10.2;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.10.180 192.168.10.200;
host ns {
hardware ethernet 00:1a:a0:2b:38:81;
fixed-address 192.168.10.128;}
}
EOF

    重启各个服务,启动新的客户端验证测试:
          systemclt  restart   httpd 
        systemctl restart   dhcpd 
        systemctl restart   xinetd 

   开启新的虚拟机,BIOS以网卡启动: