CentOS Minimal 定制化实践指南
一 目标与总体思路
- 面向场景:构建体积更小、预装软件更精确、安装过程无人值守的 定制化 CentOS Minimal 镜像,用于批量部署或产品化交付。
- 两条主线:
- 安装后定制:在最小化系统上按需安装软件、调整服务与网络,形成“黄金镜像”。
- 镜像级定制:基于官方 Minimal ISO,注入 Kickstart 应答文件与自定义软件包,重新打包生成可引导 ISO,实现全自动安装与品牌化。
二 安装后定制与常用配置
- 网络与主机名
- 查看网卡与地址:使用 ip addr;Minimal 默认不带 ifconfig。
- 配置静态 IP(示例为 CentOS 7,网卡名可能为 ens33):编辑 /etc/sysconfig/network-scripts/ifcfg-ens33,设置
- BOOTPROTO=static,ONBOOT=yes
- IPADDR、NETMASK、GATEWAY、DNS1(如 DNS1=223.5.5.5)
- 重启网络:systemctl restart network(或 service network restart)。
- 如需 DHCP,将 BOOTPROTO 设为 dhcp。
- 主机名与 DNS/hosts:/etc/hostname 或 hostnamectl;/etc/resolv.conf 配置 nameserver;/etc/hosts 做本地解析映射。
- 基础工具与软件组
- 常用命令补全:如 tree、nmap、sysstat、lrzsz、dos2unix 等可按需安装。
- 开发环境:安装 Development Tools 组(yum groupinstall “Development Tools”)。
- 安全与防火墙
- 启用并配置 firewalld:firewall-cmd --zone=public --add-port=80/tcp --permanent && firewall-cmd --reload。
- SSH 服务:yum install -y openssh-server && systemctl enable --now sshd。
- 服务自启优化
- 使用 systemd 梳理并关闭不需要的自启项,减少攻击面与启动时间。
- 常见注意事项
- CentOS 6 Minimal 默认网卡 ONBOOT=no,需改为 yes 才能开机自启;如未安装 NetworkManager,可设 NM_CONTROLLED=no。
- Minimal 默认不含 ifconfig,优先使用 ip 命令。
三 制作可引导的定制 ISO(Kickstart + 软件注入)
- 准备环境
- 在干净系统安装必要工具:yum install -y createrepo mkisofs isomd5sum rsync anaconda(版本不同包名可能略有差异)。
- 获取并解包基础 ISO
- 挂载官方 Minimal ISO,拷贝全部内容到工作目录,注意保留隐藏文件 .discinfo 与 .treeinfo。
- 准备 Kickstart 应答文件 ks.cfg
- 可基于安装后生成的 /root/anaconda-ks.cfg 改造;关键项包含
- 语言、键盘、时区、root 密码/创建用户
- 分区方案(如 clearpart、part /boot、part swap、part /)
- 软件包选择(%packages … %end)
- 安装后脚本(%post … %end)用于创建用户、部署公钥、注册服务、执行配置脚本。
- 注入自定义软件与仓库
- 将所需 RPM 放入工作目录(如 Packages/ 或新增目录),使用 createrepo 重建元数据,更新 repodata/。
- 修改引导配置
- 编辑 isolinux/isolinux.cfg(或 EFI/BOOT/grub.cfg):设置默认启动项,追加 inst.ks=cdrom:/ks.cfg(或 inst.ks=hd:LABEL=…:/ks.cfg)以实现无人值守。
- 可选 深度定制安装介质
- 替换或更新安装器镜像(如 install.img)、初始化镜像(如 initrd.img),以携带额外驱动或安装时脚本。
- 生成 ISO
- 使用 mkisofs/genisoimage 生成可引导 ISO,建议设置 -J -r -T -V “MyCentOS” -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table 等参数;如需校验可生成 MD5 校验文件。
- 测试与量产
- 在虚拟机/物理机用新 ISO 启动,验证 Kickstart 全流程、软件是否到位、网络与分区是否符合预期。
四 最小化性能与安全优化清单
- 安装策略:坚持 Minimal 基线,仅添加业务必需软件包与包组。
- 启动项:关闭非必要 systemd 服务,合并同类服务,缩短启动时间。
- 网络:优先 静态 IP(生产环境),必要时使用 DHCP;合理配置 DNS 与 firewalld 策略。
- 安全基线:保持 SELinux 为 enforcing(或按策略调优),禁用不必要端口与服务,及时打补丁。
- 监控与维护:部署 top/htop、日志轮转、监控告警,定期审计账户与权限。
五 版本差异与注意事项
- 版本差异
- CentOS 6 vs 7/8/Stream 9:网卡命名从 eth0 演进为 ens33/enpXsY;网络服务由 network.service 为主过渡到以 NetworkManager 为主(但 Minimal 常见未装 NM,需手工改 ONBOOT);引导与打包工具链参数略有差异。
- 常见坑
- 忘记拷贝 .discinfo/.treeinfo 导致安装介质识别异常。
- Kickstart 中软件包名与仓库元数据不一致,需重建 createrepo 并更新 repodata。
- 引导配置未正确写入 inst.ks= 参数,导致仍需人工干预。
- 误删依赖包导致系统不可用,优先用 yum groupinstall 与最小化原则添加软件。