使用Kickstart自动化安装CentOS
一、简介:
Kickstart是一种无人值守的Linux安装方式,它通过将手动安装配置步骤记录到文件中,再由安装程序读取配置文件实现自动化安装,这种方式极大地简化了大规模部署CentOS系统的过程,本文将详细介绍如何使用Kickstart自动化安装CentOS,包括其原理、准备工作、配置文件编写、PXE环境搭建和常见问题解答。

二、Kickstart简介:
Kickstart是由Red Hat公司开发的一种无人值守安装工具,能够自动完成Linux系统的安装过程,通过预先定义好的安装配置文件(ks.cfg),安装程序可以自动回答安装过程中需要人工干预的步骤,从而无需用户在安装时手动输入各种参数。
三、工作原理:
Kickstart的工作原理基于预配置的应答文件(ks.cfg),该文件包含了典型安装过程中所有可能出现的用户交互信息,如语言选择、时区设置、分区信息、网络配置等,当启动安装程序并指定应答文件的位置后,安装程序会根据文件中的指令自动完成安装。
四、准备工作:
1. 创建Kickstart应答文件:
步骤:使用文本编辑器创建一个新的Kickstart应答文件(ks.cfg),在这个文件中指定所有需要的安装选项,如语言、时区、分区设置、软件包选择等。
- install
- url url="http://<yourcentosrepo>/"
- repo name="CentOS" baseurl=cdn.centos.org/centos/7/os/x86_64/
- lang en_US.UTF8
- keyboard us
- timezone America/New_York
- rootpw iscrypted $6$randompasswordhash
- ...
- %end
2. 准备ISO文件或网络仓库:
如果使用ISO文件进行安装,需要将ISO文件放置在HTTP服务器上,并在应答文件中指定仓库路径。

如果使用网络仓库,确保网络仓库可访问,并在应答文件中正确配置。
3. 配置PXE环境:
安装必要软件包:
- yum y install dhcp tftpserver syslinux httpd
配置DHCP服务:编辑/etc/dhcp/dhcpd.conf
文件,添加以下内容:
- subnet 10.0.0.0 netmask 255.255.255.0 {
- range 10.0.0.200 10.0.0.230;
- option routers 10.0.0.1;
- nextserver 10.0.0.100;
- filename "pxelinux.0";
- }
配置TFTP服务:将必要的启动文件(如vmlinuz、initrd.img等)拷贝到TFTP根目录,并配置/etc/xinetd.d/tftp
文件。
配置HTTP服务:将ISO文件或网络启动映像放置在HTTP服务器目录下,并确保服务已启动。

五、配置文件详解:
Kickstart配置文件通常包含多个部分,每个部分对应不同的安装阶段,以下是主要部分的详细说明和示例:
1. 安装方法和URL:
install:指定使用光盘映像安装。
cdrom:指定光盘驱动器。
url url="http://<yourcentosrepo>/":指定网络仓库位置。
repo name="CentOS" baseurl=cdn.centos.org/centos/7/os/x86_64/:定义软件仓库。
2. 语言和键盘布局:
lang en_US.UTF8:设置语言为英文。
keyboard us:设置键盘布局为美式英语。
3. 时区设置:
timezone America/New_York:设置时区为纽约。
4. 磁盘分区:
clearpart all drives=sda:清除所有分区。
autopart /boot type=lvm size=1024:自动分区并创建1GB的/boot分区。
volgroup myvg lvm pesize=4096k datasize=10G:创建卷组myvg,物理扩展区大小为4MB,数据大小为10GB。
5. 网络配置:
network onboot yes device=eth0 ipappend=2 usegateway=yes:激活网络接口eth0,并使用DHCP分配IP地址。
bootproto dhcp:设置引导协议为DHCP。
6. 防火墙设置:
firewall enabled no:禁用防火墙。
7. 系统认证:
auth passalways useshadow usemd5:设置root密码。
selinux disabled:禁用SELinux。
8. 图形界面和软件包:
graphical:启用图形界面。
%packages:指定要安装的软件包列表。
9. 脚本和自定义命令:
%pre、%post、%final:在安装前、后以及最后执行自定义脚本。
%exclude:排除不需要的软件包。
六、PXE环境搭建:
1. 安装必要软件包:
- yum y install dhcp tftpserver syslinux httpd
2. 配置DHCP服务:
编辑/etc/dhcp/dhcpd.conf
文件,添加以下内容:
- subnet 10.0.0.0 netmask 255.255.255.0 {
- range 10.0.0.200 10.0.0.230;
- option routers 10.0.0.1;
- nextserver 10.0.0.100;
- filename "pxelinux.0";
- }
3. 配置TFTP服务:
将必要的启动文件(如vmlinuz、initrd.img等)拷贝到TFTP根目录(默认为/var/lib/tftpboot
)。
编辑/etc/xinetd.d/tftp
文件,确保disable = no
,并设置server_args
为正确的目录。
重启TFTP服务:systemctl restart tftp
。
4. 配置HTTP服务:
将ISO文件或网络启动映像放置在HTTP服务器目录下(例如/var/www/html/CentOS7.4
)。
确保HTTP服务已启动:systemctl start httpd
。
5. 创建PXE启动菜单:
在TFTP根目录下创建pxelinux.cfg
目录,并在其中创建default
如下:
- default auto
- label auto
- kernel vmlinuz
- append initrd=initrd.img method=http://<yourserverip>/CentOS7.4 ks=http://<yourserverip>/ks.cfg
七、实施自动化安装:
1. 启动PXE客户端:
PXE客户端会通过网络启动,发送DHCP请求获取IP地址、TFTP服务器位置和启动文件位置。
PXE客户端从TFTP服务器下载内核和初始RAM盘,并通过HTTP或FTP从指定位置下载Kickstart应答文件。
安装程序根据应答文件中的指令自动完成安装过程。
2. 监控安装进度:
可以通过查看日志文件/var/log/messages
或其他相关日志来监控安装进度和排查问题。
八、常见问题解答(FAQs):
Q1: Kickstart安装过程中出现“Could not find kernel image”错误怎么办?
A1: 这个问题通常是由于TFTP服务器没有正确配置或启动文件路径错误引起的,请检查以下几点:
1、确保TFTP服务已启动并正在监听正确的端口(默认是69)。
2、确保启动文件(如vmlinuz、initrd.img)已正确放置在TFTP根目录下。
3、确保PXE启动菜单中的kernel
和append
行指向正确的文件名和路径。
4、确保客户端和服务器之间的网络连接正常。
Q2: Kickstart安装过程中卡在某个步骤无法继续怎么办?
A2: 如果安装过程卡住,可以尝试以下方法进行排查:
1、检查Kickstart配置文件中是否有拼写错误或遗漏的选项。
2、查看安装日志文件(通常位于/tmp
目录下的anaconda*.log
文件中),查找错误信息或警告。
3、确保所有必要的软件包和依赖项都已正确配置,并且网络仓库可访问。
4、如果使用的是自定义脚本(如%pre
、%post
),确保脚本没有错误并且具有适当的执行权限。
5、如果问题仍然存在,可以尝试重新启动安装程序,或者手动干预安装过程以获取更多信息。
通过使用Kickstart,IT管理员可以大大简化CentOS系统的部署过程,特别是在大规模环境中,本文详细介绍了Kickstart的工作原理、准备工作、配置文件编写、PXE环境搭建以及常见问题的解决方案,希望这些信息能帮助读者更好地理解和应用Kickstart技术,实现高效、自动化的Linux系统部署。