当前位置:首页>Linux>一文搞懂Kickstart:实现Linux系统一键式部署的神器

一文搞懂Kickstart:实现Linux系统一键式部署的神器

  • 2026-10-24 05:02:46
一文搞懂Kickstart:实现Linux系统一键式部署的神器

在服务器运维场景中,批量部署系统是高频需求。如果每台服务器都手动分区、配置网络、安装软件包,不仅效率低下,还容易因人工操作差异导致系统环境不一致。今天就给大家介绍一款Linux系统自动化部署神器——Kickstart,教你用它快速实现系统一键式部署。

1

什么是Kickstart?

Kickstart(简称KS)是Red Hat系列Linux(含Rocky Linux、CentOS、RHEL等)自带的自动化安装工具,核心是通过一个预定义的配置文件(.ks后缀),替代安装过程中所有人工交互操作,让Anaconda(Linux安装程序)自动完成系统部署。

简单来说,只需提前写好一份“安装脚本”,包含分区方案、用户密码、软件包清单、网络配置等所有安装选项,后续部署时,系统会全程按照脚本执行,无需手动点击,实现真正的“无人值守一键安装”。其核心优势的在于:

  • 标准化:统一系统环境,避免人工误差

  • 高效化:批量部署,几台到几十台服务器统一操作

  • 自动化:全程无交互,解放运维人力

2

Kickstart一键部署核心流程

以主流的Rocky Linux 9为例,完整流程分为「环境准备→编写KS文件→定制可引导镜像→部署验证」四步,全程实操可复用,新手也能快速上手。

环境准备(基础前提)

建议在一台已安装的Rocky Linux 9系统中操作(与目标部署版本一致,避免兼容性问题),同时提前准备以下工具和文件:

安装依赖工具:

执行以下命令安装制作自定义镜像和验证KS文件所需的工具:

# 安装依赖包dnf install -y xorriso isomd5sum syslinux pykickstart

获取官方ISO镜像:

下载Rocky Linux 9完整版DVD ISO(包含完整软件包,支持本地安装),下载地址:https://rockylinux.org/download/,推荐文件名如「Rocky-9.6-x86_64-dvd.iso」。

提取ISO文件:

将下载的ISO镜像挂载,复制所有文件到工作目录(保留文件属性,后续修改引导配置和添加KS文件):

# 创建挂载目录和工作目录mkdir -p /mnt/rocky_iso /root/rocky_custom_iso

挂载原始ISO(替换为你的ISO文件路径)

mount -o loop Rocky-9.6-x86_64-dvd.iso /mnt/rocky_iso

复制ISO文件到工作目录(-a保留属性,-v显示进度)

cp -av /mnt/rocky_iso/* /root/rocky_custom_iso/cp -av /mnt/rocky_iso/.discinfo /root/rocky_custom_iso/cp -av /mnt/rocky_iso/.treeinfo /root/rocky_custom_iso/

3

编写Kickstart配置文件(核心关键)

KS文件是自动化部署的“灵魂”,为纯文本格式,后缀为.ks,需包含安装源、分区、网络、软件包等必选项。以下是一份可直接复用的Rocky Linux 9 KS文件示例,保存为「/root/rocky_custom_iso/ks.cfg」(放置在工作目录根目录,方便镜像读取)。

4

KS文件完整示例(带详细注释)

这个文件我是基于rocky9.6系统默认安装后自动存放在/root/anaconda-ks.cfg修改而来的

# Generated by Anaconda 34.25.5.17# Generated by pykickstart v3.32#version=RHEL9# 使用图形模式安装,可选的可以换成text,则使用文本模式安装graphicalrepo --name="AppStream" --baseurl=file:///run/install/sources/mount-0000-cdrom/AppStream# 禁用kdump,如果打开则设置成%addon com_redhat_kdump --enable --reserve-mb='auto'%addon com_redhat_kdump --disable%end# 设置键盘模式keyboard --xlayouts='cn'# 设置系统语言,可选的,如果是美式英文可以设置成lang en_US.UTF-8lang zh_CN.UTF-8# 设置网络为dhcp,需要根据你的实际网络修改网络设备network --bootproto=dhcp --onboot=yes  --noipv6 --device=enp1s0# 在安装过程中使用光驱作为安装源cdrom# 选择包组件,@^graphical-server-environment意思是选择图形服务器模式作为基本模式并安装开发组件,老旧unix兼容包和rpm开发工具包,我们可以在这里添加其他的组或者其他的软件包,例如@development代表同时安装开发组件,httpd代表安装web服务等等,每行写一个即可%packages@^graphical-server-environment@developmenthttpd%end# Run the Setup Agent on first bootfirstboot --enable# 磁盘和分区设置这里我是kvm虚拟机所以是vda,如果是物理服务器必须换成你自己的设备比如sdaignoredisk --only-use=vda# autopart意思是选择自动分区,安装程序会根据你的磁盘大小,自动创建所需的分区autopart# 下面是手动分区的配置。注释掉上面的autopart,然后取消下面的注释即可,这里的vda需要换成实际的物理设备名# part pv.177 --fstype="lvmpv" --ondisk=vda --size=509950# part /boot --fstype="xfs" --ondisk=vda --size=1024# 如果是UEFI设备,必须单独制定efi分区,否则无需设置# part /boot/efi --fstype="efi" --ondisk=vda --size=1024 --fsoptions="umask=0077,shortname=winnt"# volgroup rl --pesize=4096 pv.177# logvol swap --fstype="swap" --size=16384 --name=swap --vgname=rl# logvol / --fstype="xfs" --size=153600 --name=root --vgname=rl# 针对home分区,设置大小10G, --grow意思是,虽然分配了10G的磁盘空间,但是把所有剩余的空间全部分给opt# logvol /home --fstype="xfs" --size=102400 --grow --name=opt --vgname=rl# 清除原有磁盘上的所有分区信息clearpart --all --initlabel# 设置系统的时区为亚洲/上海timezone Asia/Shanghai --utc# 设置超级用户密码,且运行超级用户使用ssh远程访问,这里后面的密码串需要用openssl生成,详细步骤见后文rootpw --iscrypted --allow-ssh $6$ZGzdhMwUvOkYMASN$TX43AVwWPpa09ZJRLQfZ0NhfKTnFqb87ml0OfGVscB4FESh5F0XspP7SkdUYnqlyidAiyLoAJok1BOHTqtDcI1# 设置普通用户liefchen,而且拥有sudo权限user --groups=wheel --name=liefchen --password=$6$QN8TiphUHLm/EAVN$AYcuqe6gghq4PhzokjwTwvjG1iMFhvSEtU4.qB8wlvrNrTgWCJOI2LgEdfKsmf6CBl7yRuYfHl07gAPVG3Fp80 --iscrypted --gecos="liefchen"# 禁用SeLinuxselinux --disabled# 指定post日志输出到/root/kickstart_past.log以方便出错以后排错%post --log=/root/kickstart_post.log# 这里可以放任何你想在安装结束以后执行的操作# 比如这里创建一个可以sudo的管理员用户lchen,密码lchen@123useradd -m -s /bin/bash lchenecho "lchen:lchen@123" |chpasswdusermod -aG wheel liefchen# 执行系统升级,必须在安装过程中配置网络才可使用dnf update -y%end# 安装结束后自动重启reboot

5

关键配置补充

生成加密root密码:

用openssl生成SHA-512加密密码:

openssl passwd -6

 其中-6的意思为使用sha512密码算法,可选的可使用-5,意思是使用sha256密码算法。

执行后输入2次密码,复制输出的加密字符串(以$6$开头),替换KS文件中rootpw对应的内容。

验证KS文件语法:

用ksvalidator工具检查语法错误(无输出即正常,有错误会提示行号):

ksvalidator /root/rocky_custom_iso/rocky.ks

6

修改引导配置,自动加载KS文件

要实现“插入镜像启动即自动安装”,需修改光盘引导菜单,让系统启动后自动读取KS文件,包括修改BIOS引导配置和UEFI引导配置。

修改BIOS引导配置(isolinux.cfg):编辑工作目录下的「isolinux/isolinux.cfg」文件:

# 将默认引导项改为自定义标签(如custom)

default custom

并添加下面这行,这样当我们需要其他的引导项的时候,可以按TAB键,这样可以看到所有可用的引导选项,键盘输入对应的选项回车即可进入需要的选项。

prompt 1

#  在配置文件中找到

label linux  menu label ^Install Rocky Linux 9.6  menu default  kernel vmlinuz  append initrd=initrd.img inst.stage2=hd:LABEL=Rocky-9-6-x86_64-dvd quiet

并后面添加以下内容,这里的custom需要和开头的default后面的custom一致

label custom  menu label ^Install Rocky Linux (Auto Kickstart)  # 引导菜单名称  kernel vmlinuz  append initrd=initrd.img inst.stage2=cdrom inst.ks=cdrom:/ks.cfg quiet

        关键参数说明:

        - inst.stage2=cdrom:指定安装数据源为本地光盘,也可以设置卷标;

        - inst.ks=cdrom:/ks.cfg:指定KS文件路径(光盘根目录下的ks.cfg)。

UEFI的设置:修改UEFI引导配置(grub.cfg):

若目标服务器支持UEFI启动,编辑「EFI/BOOT/grub.cfg」,添加自定义引导项:

        menuentry 'Install Rocky Linux (Auto Kickstart)' --classfedora{  linuxefi /images/pxeboot/vmlinuz inst.stage2=cdrom inst.ks=cdrom:/ks.cfg quiet  initrdefi /images/pxeboot/initrd.img}

生成自定义可引导ISO镜像

配置完成后,用xorriso工具打包工作目录,生成可引导的自定义ISO,同时添加MD5校验(避免镜像损坏导致安装失败),执行以下命令:

xorriso -as mkisofs -o /root/rocky-custom-xorriso-dualboot.iso -V "Rocky-9-6-x86_64-dvd" -J -R -l -joliet-long -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4    -boot-info-table -eltorito-alt-boot -e images/efiboot.img -no-emul-boot -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin -isohybrid-gpt-basdat /root/rocky_custom_iso

请注意这里的设置的ISO镜像的卷标务必和原本ISO文件的卷标一致,否则我们在用光盘引导其他安装选项的时候就会出错,可以在光盘根目录isolinux/isolinux.cfg文件中找到你选用的镜像对应的卷标,我们这里用的是Rocky-9-6-x86_64-dvd

上面命令的各参数说明:

一、核心基础参数(镜像整体配置)-as mkisofs:让 xorriso 模拟 mkisofs 的命令行语法和行为,向下兼容传统 mkisofs 的使用习惯,无需修改原有脚本即可直接迁移,这是该命令的关键兼容参数。-o /root/rocky-custom-xorriso-dualboot.iso:o 即 output,指定生成的最终 ISO 镜像文件的路径和文件名,这里会在 /root 目录下生成名为 rocky-custom-xorriso-dualboot.iso 的镜像文件,这是命令执行后的产物。-V "Rocky-9-6-x86_64-dvd":V 即 Volume ID,设置 ISO 镜像的卷标(光盘名称),用于系统识别镜像标识,挂载 ISO 时会显示该卷标,同时 Anaconda 安装程序也会读取该卷标识别安装源,可自定义命名(避免特殊字符)。/root/rocky_custom_iso:命令的最后一个参数,指定 ISO 镜像的数据源目录(工作目录),即所有要打包到 ISO 中的文件(原始 ISO 提取的文件、KS 配置文件、修改后的引导配置等)都来自这个目录,xorriso 会遍历该目录下所有文件和子目录,打包到生成的 ISO 中。二、文件系统兼容参数(保障跨系统识别)这组参数用于提升 ISO 镜像在 Windows/Linux 系统下的文件识别兼容性,避免文件名截断、属性丢失。-J:启用 Joliet 文件系统扩展(微软定义),支持 Windows 系统识别 ISO 中的长文件名(突破传统 ISO 9660 的 8.3 文件名限制),避免 Windows 下文件名被截断为 “xxx.xxx” 格式。-R:启用 Rock Ridge 文件系统扩展(UNIX/Linux 定义),支持 Linux 系统识别 ISO 中的文件属性(如权限、所有者、组、符号链接等),保障 Linux 环境下挂载 ISO 后,文件的完整性和可执行性(如引导程序、内核文件的执行权限)。-l:允许 ISO 中的文件名长度达到31 个字符(进一步突破传统 ISO 9660 的文件名长度限制),配合 -J 和 -R 使用,提升文件名兼容性。-joliet-long:启用 Joliet 长文件名扩展,在 -J 的基础上,进一步允许 Joliet 文件系统支持更长的文件名(最多 103 个字符),最大化提升 Windows 下的文件名兼容性。三、BIOS(传统)引导相关参数(支持老式服务器 / 虚拟机启动)这组参数配置传统 BIOS 模式的引导功能,核心依赖 isolinux 引导程序,是老式设备启动的关键。-b isolinux/isolinux.bin:b 即 boot image,指定BIOS 引导的核心程序(El Torito 引导映像),isolinux/isolinux.bin 是 syslinux 套件提供的光盘引导程序,负责 BIOS 模式下加载内核(vmlinuz)和初始化镜像(initrd.img),路径是相对于数据源目录(/root/rocky_custom_iso)的相对路径(不可写绝对路径)。-c isolinux/boot.cat:c 即 catalog,指定BIOS 引导的目录文件(引导目录表),boot.cat 是由 xorriso 自动生成的引导文件列表,记录了 ISO 中所有引导相关文件的位置,供 isolinux.bin 读取,确保引导程序能找到内核和 initrd 文件,路径同样是相对数据源目录的。-no-emul-boot:指定引导文件(isolinux.bin)为 **“无模拟引导”**,即该文件是可直接执行的引导程序,无需进行软盘、硬盘等硬件模拟,这是光盘引导的标准配置,确保 BIOS 能直接加载并执行引导程序。-boot-load-size 4:指定从引导映像中加载的数据块大小,单位是 **“扇区”(每个扇区 512 字节)**,4 个扇区即 2048 字节,这是 isolinux.bin 正常工作的必要配置,固定为 4 即可,无需修改。-boot-info-table:在 ISO 镜像的引导相关区域写入 “引导信息表”,包含 ISO 镜像的大小、引导文件位置、数据源目录结构等信息,让 isolinux.bin 能够正确识别 ISO 镜像的结构,顺利找到并加载内核和 initrd 文件,避免引导失败。四、UEFI(新式)引导相关参数这组参数通过 -eltorito-alt-boot 启用备用引导项,实现 UEFI 模式引导,与 BIOS 引导共存,即 “双启动”。-eltorito-alt-boot:启用第二个 El Torito 引导项,用于配置 UEFI 引导(与前面的 BIOS 引导项分开独立配置),没有该参数则只能支持单一 BIOS 引导模式,这是实现双启动的核心参数。-e images/efiboot.img:e 即 efi boot image,指定UEFI 引导的核心映像文件,images/efiboot.img 是一个预生成的 FAT32 格式镜像文件,包含 UEFI 引导所需的 grubx64.efi(UEFI 版 Grub2 引导程序)和相关配置,路径是相对数据源目录的相对路径,是 UEFI 模式启动的关键。-no-emul-boot:此处再次指定 UEFI 引导文件(efiboot.img)为 **“无模拟引导”**,与 BIOS 引导的该参数含义一致,保障 UEFI 引导程序可被直接加载执行,无需硬件模拟,确保 UEFI 模式下引导顺畅。五、Isohybrid 混合镜像参数(支持直接写入 U 盘启动)这组参数让生成的 ISO 具备 isohybrid 特性,既可以刻录到光盘启动,也可以直接用 dd 命令写入 U 盘启动,无需额外处理 U 盘分区。-isohybrid-mbr /usr/share/syslinux/isohdpfx.bin:指定用于制作 isohybrid 镜像的 MBR(主引导记录)模板文件,isohdpfx.bin 是 syslinux 套件提供的标准 MBR 引导模板,包含支持 U 盘启动的 MBR 代码,让生成的 ISO 可以直接写入 U 盘,在 BIOS 模式下从 U 盘启动,避免 U 盘启动时无法识别引导程序。-isohybrid-gpt-basdat:启用GPT 分区表支持,同时保留 MBR 分区表(即 “混合 MBR/GPT 分区表”),用于 UEFI 模式下的 U 盘启动,basdat 表示生成符合 UEFI 规范的 GPT 分区数据,保障 UEFI 系统能够识别 U 盘的分区结构并从其启动,实现 U 盘的 “BIOS+UEFI 双模式启动”。

# 为ISO添加MD5校验(安装时自动验证完整性)

implantisomd5 /root/Rocky-9.3-custom-ks.iso

命令执行完成后,在/root目录下会生成自定义ISO镜像(如rocky-custom-xorriso-dualboot.iso),这就是可直接用于一键部署的镜像文件。

7

部署验证

测试验证:

先用虚拟机virtmanager测试,挂载自定义ISO,启动虚拟机后,会自动进入引导菜单并加载KS文件,全程无需手动操作,等待系统安装完成并重启即可。

真机部署:

制作U盘:Linux用dd命令(Windows用Rufus),将ISO写入U盘(注意清空U盘数据):

# Linux写入U盘(替换/dev/sdb为你的U盘设备)

dd if=/root/Rocky-9.3-custom-ks.iso of=/dev/sdb bs=4M status=progress

 将U盘插入目标服务器,设置从U盘启动,重启后自动完成一键部署。

BIOS环境测试的截图如下,按tab键可以列出所有的引导选项,直接回车或者等待超时可自动进入custom,也就是我们定制的一键式部署安装模式,如果一切正常,从这里开始无需任何交互,会自动安装部署并重启:

在UEFI的服务器上从我们定制的光盘引导以后就可以看到类似下面的截图,从截图可以看到默认引导选项是我们设置的Install Rocky Linux (Auto Kickstart),通过键盘的上下键可以选择其他的安装选项。按回车或者等待超时以后会自动进入kickstart一键式部署模式,如果一切正常,从这里开始无需任何交互,会自动安装部署并重启:

8

总结

Kickstart的核心价值的在于“一次配置,多次复用”,通过标准化的KS文件和自定义镜像,彻底解决Linux系统批量部署的效率和一致性问题。无论是中小企业几台服务器的部署,还是大型企业几十上百台服务器的批量上线,Kickstart都能大幅降低运维成本。

作者:陈力锋

排版:Z宝

最新文章

随机文章