CentOS 镜像制作
一、背景介绍
在现代 IT 环境中,定制化 Linux 发行版镜像是一个常见的需求,CentOS 作为一种流行的企业级 Linux 发行版,其镜像制作过程需要细致规划和执行,本文将详细介绍如何在 CentOS 上制作一个定制化的镜像,包括准备工作、环境搭建、软件安装与配置、Kickstart 文件编写、自动化脚本执行、以及最终的镜像生成与验证。
二、步骤详解
1. 准备工作
确定定制化需求:明确需要包含的软件包、服务、内核参数等。
准备基础镜像:选择一个合适的 CentOS 版本作为基础镜像。
2. 环境搭建
安装必要软件:确保系统中已安装createrepo
,mkisofs
,isomd5sum
,squashfstools
等工具。
sudo yum install createrepo mkisofs isomd5sum squashfstools y
3. 创建工作目录
建立 ISO 制作目录:创建一个用于存放所有制作文件的工作目录。
mkdir p /root/custom_iso/{isolinux,repo}
4. 挂载原始 CentOS ISO
挂载 ISO 镜像:将原始的 CentOS ISO 文件挂载到系统上。
mkdir /mnt/iso mount o loop /path/to/CentOS.iso /mnt/iso
5. 复制必要文件
复制文件到工作目录:将挂载的 ISO 中的文件复制到工作目录中,除了Packages
和repodata
文件夹。
rsync a exclude={Packages,repodata} /mnt/iso/ /root/custom_iso/
6. 修改配置文件
编辑 isolinux.cfg:添加 Kickstart 文件路径以实现自动化安装。
sed i '/append initrd=initrd.img/a ks=cdrom:/isolinux/ks.cfg' /root/custom_iso/isolinux/isolinux.cfg
7. 准备软件包和 repodata
获取必要的 RPM 包:根据需求列出所需的 RPM 包,并将它们复制到工作目录中。
rpm qa > rpmlist.txt cp /path/to/Packages/$(<rpmlist.txt) /root/custom_iso/Packages/
重新生成 repodata:使用createrepo
命令重新生成repodata
。
createrepo g repodata/comps.xml ./
8. 编写 Kickstart 文件
创建 Kickstart 文件:编写ks.cfg
文件,包含系统语言、键盘布局、网络配置、分区设置、软件包选择等信息。
[main] keyboard us language en_US timezone Asia/Shanghai ... %packages @core ...
9. 自动化脚本执行
执行自动化脚本:在 Kickstart 文件中指定预安装和 post 安装脚本。
%pre #!/bin/bash ... # preinstallation commands %end %post #!/bin/bash ... # postinstallation commands %end
10. 生成最终镜像
创建 ISO 镜像:使用mkisofs
工具生成最终的 ISO 镜像。
mkisofs o /root/custom_iso/custom.iso /root/custom_iso
11. 验证镜像
测试 ISO 镜像:使用虚拟机或实体机测试生成的 ISO 镜像,确保其能够正确引导并完成安装。
三、注意事项
文件权限:确保工作目录中的文件具有正确的权限。
依赖关系:注意软件包之间的依赖关系,确保所有必要的包都已包含。
测试:在实际环境中充分测试定制的镜像,以避免生产环境中的问题。
四、FAQs
Q1: 如何更改 Kickstart 文件中的语言设置?
在 Kickstart 文件的[main]
部分中,添加或修改lang
参数来设置语言,设置为简体中文:
lang en_US.UTF8
Q2: 如果遇到软件包依赖问题怎么办?
确保在复制 RPM 包之前,已经安装了所有必要的依赖包,可以使用yum
的dependencies
选项来检查和解决依赖问题,如果问题依然存在,可以手动下载缺失的依赖包并添加到 ISO 中。