很多运维新手第一次接触Linux系统安装时,总是被那些反复的交互式问答搞得头疼。手动点选语言、分区、网络配置,一台两台还能忍,但如果要同时部署几十台服务器,这种重复劳动简直能把人逼疯。所谓无人值守安装,其实就是提前写好一份配置文件,让安装程序自动读取、自动决策,整个过程不需要人在屏幕前守着。
Kickstart文件到底是什么
要搞懂无人值守安装,首先得理解Kickstart文件的本质。你可以把它想象成一份详细的安装问答清单,里面包含了所有你在手动安装时需要回答的问题:时区选上海还是东京,键盘布局用美式还是德式,硬盘分区怎么切,root密码设成什么。安装程序启动后会直接读取这份文件,按部就班地执行,完全不需要人工干预。

生成Kickstart文件其实有两条路。如果公司之前已经手动安装过一台标准环境的服务器,直接去root家目录下找anaconda-ks.cfg文件,这个文件就是那次安装过程中自动生成的答案记录,稍微修改就能复用。如果是全新搭建环境,用system-config-kickstart工具从头创建一份更干净,虽然这个工具在RHEL8之后就不再更新了,但生成的配置文件在CentOS7和RHEL7上跑起来毫无压力。
需要注意一个很容易踩的坑:Kickstart文件里的磁盘分区配置一定要谨慎。如果你写死了sda这个设备名,但目标机器有两块硬盘,系统可能会把系统装到第二块盘上。更稳妥的做法是用UUID或者磁盘ID来定位目标磁盘,或者直接用--device=sda这种相对路径,配合安装时的磁盘过滤规则。
HTTP服务器怎么搭建才省心

有了配置文件,还得想办法让安装程序能拿到它。最常见的方式是把Kickstart文件放在一台HTTP服务器上,安装时通过指定URL来拉取。搭建HTTP服务器其实不需要什么高大上的方案,Python自带的一个模块就能搞定。
在作为源服务器的那台机器上,先准备一个目录专门放Kickstart文件和系统ISO镜像。接着用python3 -m http.server 8080 --directory /opt/ks这条命令启动一个最简单的HTTP服务。这个做法虽然看起来简陋,但胜在轻量,临时用一次或者小规模部署完全够用。如果是生产环境长期使用,还是建议用Nginx或者Apache无人值守安装linux,毕竟它们有更完善的并发控制和权限管理。
文件放好之后,用浏览器访问一下http://你的IP:8080/ks.cfg深度linux,如果能正常下载,说明网络链路没问题。这时候你可以用任何一台新机器做测试,在引导界面按Tab键或者e键修改启动参数,加上inst.ks=http://你的IP:8080/ks.cfg,系统就会自动开始无人值守安装。

PXE网络引导能省多少事
如果连光盘和U盘都不想准备,那就得上PXE网络引导了。这套方案的核心是让机器开机后通过网络自动获取IP、下载启动文件、加载安装镜像、拉取Kickstart配置,全程纯网络操作。你只需要在一台服务器上搭建DHCP、TFTP和HTTP三个服务。
DHCP服务负责给新机器分配IP地址,同时告诉它从哪里下载启动文件。TFTP服务负责提供pxelinux.0这个引导程序,以及引导菜单配置文件。HTTP服务负责承载完整的系统ISO镜像和Kickstart文件。这三兄弟配合好了,新机器插上网线通电后就会自动进入安装流程。

有一个小技巧可以让PXE部署更灵活:在引导菜单里准备多个安装选项。比如加一个“自动安装最小化系统”的选项,专门给普通业务服务器用;再准备一个“带调试工具的完整安装”选项,给测试环境用。这样不同类型的机器用同一个PXE环境,但安装出来的系统配置各不相同。
遇到安装失败该怎么排查
无人值守安装最让人头疼的就是出了问题还不知道错在哪。如果机器装到一半卡住了,按Ctrl+Alt+F2可以切到终端界面,查看安装日志。日志文件在/tmp目录下,有anaconda.log和program.log两个最有用,前者记录安装程序自身的运行状态,后者记录安装过程中执行的所有命令和输出。

常见的问题有三个:Kickstart文件里的软件包组名写错了,导致安装程序找不到包直接报错退出;磁盘分区配置和实际硬件不符,比如指定了不存在的磁盘号;网络源访问超时,特别是从外网拉包的时候。解决办法其实很简单,Kickstart文件里的包组名一定要对照官方文档写,分区配置先用lsblk确认设备名称,网络源尽量用内网镜像站。
还有一个容易忽略的点:UEFI和Legacy BIOS的引导方式不同,Kickstart文件里的bootloader配置也要相应调整。用UEFI启动的话,分区表得用GPT格式,还要单独分一个/boot/efi分区。如果发现机器启动后找不到系统,多半是这里出了问题。
能够实现无人值守安装Linux无人值守安装linux,本质上就是把运维人员从重复劳动中解放出来。当你看到几十台机器同时自动安装系统,屏幕上刷刷滚过同样的安装信息,那种掌控感会让你觉得前期配置再麻烦也值得。这套方案唯一的要求就是细心写好Kickstart文件,把网络环境调试通linux vi 命令,之后每次部署新机器都只用按一次电源键。
