温馨提示×

CentOS Minimal如何定制化

小樊
35
2025-11-25 18:14:10
栏目: 智能运维

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;合理配置 DNSfirewalld 策略。
  • 安全基线:保持 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 与最小化原则添加软件。

0