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<<EOF
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -u nobody -s /tftpboot
per_source = 11
cps = 100 2
flags = IPv4
}
注:只需要disable=yes 改成 no 即可
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 <<EOF 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=512 %packages @base @core %end EOF 注解:执行动作为安装; 文本类型;键盘语言;登陆密码;时区;下载地址;重启;语言;关闭防火墙,指定启动类型,网卡名称;MBR引导分区;创建分区信息;安装包基于base和core。
配置DHCP服务,DHCP服务配置文件代码如下: cat >> /etc/dhcp/dhcpd.conf<<EOF 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以网卡启动: