kickstart自动化安装实例
安装环境介绍
实验环境以两台VMware虚拟机为例:
虚拟机A:CentOS 6.7系统,作为PXE安装服务器,网络连接到NAT网络,并关闭VMnet8的DHCP服务,IP地址:192.168.87.60/24,网关192.168.87.2/24;
虚拟机B:新建空白虚拟机,作为PXE客户端,网络连接到NAT网络,也可以和虚拟机A一起放在“仅主机”或“桥接”网络(相同即可),移除DVD及其他不用的设备;
在正式进行服务配置前,最好关闭PXE服务器的防火墙和Selinux:
关闭防火墙iptables:
关闭Selinux:
[root@localhost ~]#setenforce 0PXE启动流程第一阶段需要通过DHCP服务为客户端分配IP地址,指定TFTP服务器地址,指定pxelinux.0引导程序。
1. 安装DHCP服务
[root@localhost ~]# yum -y install dhcp2. 设置DHCP服务开机启动
3. 修改DHCP服务主配置文件
#响应客户端的启动查询(开机时发送的DHCP请求)
allow booting;
allow bootp;
#不使用DNS动态更新,忽略客户端DNS更新
ddns-update-style none;
ignore client-updates;
#为客户端指定DNS名称和DNS服务器的IP地址
option domain-name-servers 192.168.87.60;
#指定客户端DHCP租期和连接DHCP服务器超时时间即最大租期
default-lease-time 3600;
max-lease-time 7200;
#指定DHCP服务器发送的日志信息的日志级别
log-facility local7;
#子网区域
subnet 192.168.87.0 netmask 255.255.255.0 {
#设置客户端子网掩码
option subnet-mask 255.255.255.0;
#客户端IP地址池
range dynamic-bootp 192.168.87.61 192.168.2.200;
#tftp服务器的地址
next-server 192.168.87.60;
#需要从tftp服务器下载并执行的PXE引导文件
filename "pxelinux.0";
default-lease-time 3600;
max-lease-time 7200;
#指定客户端默认网关IP地址
option routers 192.168.87.2;
}
4. 重启DHCP服务
[root@localhost ~]#service dhcpd restartTFTP服务是一个没有主服务程序的轻量级服务,它依靠系统xinetd守护进程启动。xinetd进程监听不同网络端口,根据端口发送数据到不同的服务进程。在安装好TFTP服务后,xinetd服务就监听UDP的69号端口,将这个端口收到的数据发送给TFTP程序。
1. 安装xinetd和tftp-server
[root@localhost ~]#yum -y install xinetd tftp-server2. 设置xinetd服务开机启动
3. 编辑tftp配置文件,开启tftp服务
4. 重启xinetd服务
[root@localhost ~]#service xinetd restartPXE系统启动引导需要一些必须的文件,其中pxelinux.0文件通过安装syslinux包获得;vmlinuz是压缩的可引导、可执行的linux内核文件,initrd.img是“initial ramdisk”,用于临时引导硬件到内核vmlinuz接管,加载文件系统和SCSI设备驱动,这两个文件可以从安装光盘images/pxeboot目录复制;
1. 安装syslinux包,复制引导文件pxelinux.0
2. 挂载CentOS光盘,复制系统引导必须文件
3. 创建系统引导模版文件default
4. 编辑系统引导模版文件default
Kickstart是一种无人值守安装方式,它的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的自动应答脚本文件,在其后的安装过程中,当出现要求填写参数的情况时,安装程序会首先去查找Kickstart生成的文件,当找到合适的参数时,就采用找到的参数;当没有找到合适的参数时,才需要安装者手工干预。这样,如果告诉安装程序ks.cfg文件位置,并且文件涵盖了安装过程中出现的所有需要填写的参数时,就能实现全自动无人值守安装。
1. 在RHEL桌面环境下配置Kickstart
A:开始设置语言,键盘,时区,Root密码,安装完毕自动重启;
B:设置安装方式(ftp/http/nfs);
C:安装MBR;
D:设置分区;
E:配置网络;
F:认证配置;
G:SELinux 和防火墙配置;
H:软件包安装选择
经过各种设置,最后是生成的ks.cfg文件预览界面, 文件保存在你指定的路径下面
2. 使用系统现有ks.cfg模版文件
在已安装好的CentOS系统root用户家目录,存在一个anaconda.cfg文件即为本系统的自动化应答脚本文件,可以以此为模版进行配置。
注意:此配置文件权限为其他人不可读,使用前需要设置权限为其他人可读,否则自动化安装时候anaconda程序会报错“找不到ks.cfg文件”。
下面是我自己的ks.cfg配置文件:
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --enabled --ssh --service=ssh
# Install OS instead of upgrade
install
# Use network installation
url --url="http://192.168.87.1/"
# Root password
rootpw --iscrypted $1$lxq5VjGf$7a5/KyjtfEr/5JO1fokNs/
# System authorization information
auth --useshadow --passalgo=md5
# Use graphical install
graphical
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# 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 --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --linux --initlabel
part swap --size 1024
part /boot --size 512
part pv.01 --size 18944
volgroup cbh pv.01
logvol / --vgname=cbh --size=18000 --name=root
%post
if [ -f /boot/grub/menu.lst -a ! -h /boot/grub/menu.lst ]; then cp /boot/grub/menu.lst /boot/grub/menu.lst.bak && sed -i 's/ rhgb//' /boot/grub/menu.lst; fi
if [ -f /boot/grub/grub.conf -a ! -h /boot/grub/grub.conf ]; then cp /boot/grub/grub.conf /boot/grub/grub.conf.bak && sed -i 's/ rhgb//' /boot/grub/grub.conf; fi
if [ -f /boot/grub2/grub.conf -a ! -h /boot/grub2/grub.conf ]; then cp /boot/grub2/grub.conf /boot/grub2/grub.conf.bak && sed -i 's/ rhgb//' /boot/grub2/grub.conf; fi
if [ -f /etc/rc.d/rc.local ]; then cp /etc/rc.d/rc.local /etc/rc.d/rc.local.backup; fi
cat >>/etc/rc.d/rc.local <<EOF
#!/bin/bash
echo
echo "Installing VMware Tools, please wait..."
if [ -x /usr/sbin/getenforce ]; then oldenforce=\$(/usr/sbin/getenforce); /usr/sbin/setenforce permissive || true; fi
mkdir -p /tmp/vmware-toolsmnt0
for i in hda sr0 scd0; do mount -t iso9660 /dev/\$i /tmp/vmware-toolsmnt0 && break; done
cp -a /tmp/vmware-toolsmnt0 /opt/vmware-tools-installer
chmod 755 /opt/vmware-tools-installer
cd /opt/vmware-tools-installer
mv upgra32 vmware-tools-upgrader-32
mv upgra64 vmware-tools-upgrader-64
mv upgrade.sh run_upgrader.sh
chmod +x /opt/vmware-tools-installer/*upgr*
umount /tmp/vmware-toolsmnt0
rmdir /tmp/vmware-toolsmnt0
if [ -x /usr/bin/rhgb-client ]; then /usr/bin/rhgb-client --quit; fi
cd /opt/vmware-tools-installer
for s in sr0 sr1; do eject -s /dev/\$s; done
./run_upgrader.sh
if [ -f /etc/rc.d/rc.local.backup ]; then mv /etc/rc.d/rc.local.backup /etc/rc.d/rc.local; else rm -f /etc/rc.d/rc.local; fi
rm -rf /opt/vmware-tools-installer
sed -i 's/3:initdefault/5:initdefault/' /etc/inittab
if [ -f /boot/grub/menu.lst.bak ]; then mv /boot/grub/menu.lst.bak /boot/grub/menu.lst; fi
if [ -f /boot/grub/grub.conf.bak ]; then mv /boot/grub/grub.conf.bak /boot/grub/grub.conf; fi
if [ -f /boot/grub2/grub.conf.bak ]; then mv /boot/grub2/grub.conf.bak /boot/grub2/grub.conf; fi
if [ -x /usr/sbin/getenforce ]; then /usr/sbin/setenforce \$oldenforce || true; fi
if [ -x /bin/systemd ]; then systemctl restart prefdm.service; else telinit 5; fi
EOF
chmod 755 /etc/rc.d/rc.local
if [ -x /bin/systemd ]; then systemctl enable rc-local.service; fi
/usr/sbin/adduser cbh
/usr/sbin/usermod -p '$1$j1y/Sc15$MpcctVsMPlrccVzKAtOC.1' cbh
/usr/bin/chfn -f "cbh" cbh
/bin/echo done
%end
%packages
@base
@chinese-support
@desktop-platform
@general-desktop
@kde-desktop
@x11
%end
3.测试安装
自动化应答脚本文件ks.cfg配置完毕后,初始化一个VMware虚拟机,将网络连接到NAT网络(必须和作为PXE服务器的虚拟机A在同一个网络,并且VMnet8关闭DHCP服务),移除客户端虚拟机B的DVD及其他不用的设备。这里给它的磁盘设置大些,不然在分区的时候,会报错:磁盘分区空间不足,建议设置为100G
启动PXE Client虚拟机B,自动选择从网卡PXE引导,DHCP 服务器开始给客户机分配IP地址,并指定TFTP服务器地址。
欢迎光临 黑帽联盟 (https://bbs.cnblackhat.com/) | Powered by Discuz! X2.5 |