以主流的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/
要实现“插入镜像启动即自动安装”,需修改光盘引导菜单,让系统启动后自动读取KS文件,包括修改BIOS引导配置和UEFI引导配置。
修改BIOS引导配置(isolinux.cfg):编辑工作目录下的「isolinux/isolinux.cfg」文件:
# 将默认引导项改为自定义标签(如custom)
并添加下面这行,这样当我们需要其他的引导项的时候,可以按TAB键,这样可以看到所有可用的引导选项,键盘输入对应的选项回车即可进入需要的选项。
# 在配置文件中找到
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),这就是可直接用于一键部署的镜像文件。
测试验证:
先用虚拟机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一键式部署模式,如果一切正常,从这里开始无需任何交互,会自动安装部署并重启: