温馨提示×

ubuntu镜像如何进行定制化安装

小樊
37
2025-11-22 19:34:52
栏目: 智能运维

Ubuntu镜像定制化安装实操指南

一、方案总览

  • 目标:在保留官方安装器的同时,预置软件、系统配置与自动化应答,产出可批量部署的自定义 ISO。
  • 常用方式:
    • 图形化:使用 Cubic 在 Ubuntu 主机上直接“解包—定制—打包”生成新 ISO,适合快速迭代与可视化操作。
    • 命令行:手动挂载 ISO、解压 squashfschroot 定制、重打包并生成可启动 ISO,适合深度定制与自动化流水线。
    • 自动化安装:编写 preseed 应答文件,实现无人值守安装(语言、分区、用户、软件选择等全流程预设)。

二、命令行方式定制可启动 ISO(通用且可脚本化)

  • 准备环境
    • 安装工具:sudo apt update && sudo apt install -y squashfs-tools genisoimage isolinux xorriso
    • 获取镜像:从官方站点下载所需版本的 Ubuntu ISO(如 22.04/24.04 的 Desktop/Server)。
  • 挂载与解包
    • 挂载 ISO:mkdir -p ~/iso && sudo mount -o loop ubuntu-22.04-live-server-amd64.iso ~/iso
    • 复制内容:mkdir -p ~/livecd && cp -rT ~/iso ~/livecd
    • 解压根文件系统:sudo unsquashfs -d ~/squashfs ~/livecd/casper/filesystem.squashfs
  • 进入 chroot 定制
    • 准备环境(挂载必要虚拟文件系统,便于包管理):
      sudo mount --bind /dev ~/squashfs/dev
      sudo mount --bind /run ~/squashfs/run
      sudo chroot ~/squashfs
      mount -t proc proc /proc
      mount -t sysfs sys /sys
      mount -t devpts devpts /dev/pts
      
    • 在 chroot 中可执行的操作:
      • 更新索引与安装软件:apt update && apt install -y vim htop openssh-server curl
      • 移除不需要的包:apt purge -y somepkg
      • 写入系统配置(如 /etc/hostname/etc/apt/sources.list、时区 timedatectl set-timezone Asia/Shanghai
      • 清理以减小体积:apt clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
    • 退出并清理挂载:exit && sudo umount ~/squashfs/{proc,sys,dev/pts,dev,run}
  • 重新打包与生成 ISO
    • 替换 squashfs:sudo rm ~/livecd/casper/filesystem.squashfs && sudo mksquashfs ~/squashfs ~/livecd/casper/filesystem.squashfs -comp xz
    • 更新校验(部分发行版使用 md5sum.txt,新版本可能使用 SHA256SUMS,按需处理):
      (cd ~/livecd && find . -type f -print0 | xargs -0 md5sum | sudo tee md5sum.txt)
      
    • 生成可启动 ISO(BIOS 使用 isolinux,UEFI 友好):
      sudo xorriso -as mkisofs \
        -D -r -V "Custom Ubuntu" \
        -cache-inodes -J -l \
        -b isolinux/isolinux.bin -c isolinux/boot.cat \
        -no-emul-boot -boot-load-size 4 -boot-info-table \
        -eltorito-alt-boot \
        -e boot/grub/efi.img -no-emul-boot \
        -o custom-ubuntu.iso ~/livecd
      
  • 提示
    • 若需 UEFI 优先启动,可调整引导菜单或在生成 ISO 时设置合适的启动入口;测试建议使用 QEMU/KVM 或虚拟机先验证启动与安装流程。

三、使用 Cubic 图形化定制 ISO(更快上手)

  • 安装 Cubic:
    • sudo add-apt-repository ppa:cubic-wizard/releases
    • sudo apt update && sudo apt install -y cubic
  • 定制流程:
    • 启动 Cubic → 选择原始 Ubuntu ISO → 进入工作区
    • 在 chroot 环境中安装/删除软件、修改配置、添加脚本与文件
    • 生成新 ISO(Cubic 会自动处理 squashfs、引导与校验)
  • 适用场景:需要在图形界面中快速完成“装软件、改配置、出镜像”的团队或个人。

四、实现无人值守安装 Preseed 示例

  • 放置与引用应答文件
    • 将自定义 seed 文件放入 ISO 的 /preseed/ 目录(如 custom.seed
    • 在引导菜单中通过内核参数指定:preseed/file=/cdrom/preseed/custom.seed
    • 示例(修改 isolinux.cfg 的菜单项):
      LABEL autoinstall
        menu label ^Auto Install Ubuntu Server
        kernel /install/vmlinuz
        append preseed/file=/cdrom/preseed/custom.seed debian-installer/locale=en_US console-setup/layoutcode=us initrd=/install/initrd.gz quiet ---
      
    • 也可在 grub.cfg 中添加相应菜单项以 UEFI 启动调用 preseed。
  • 最小可用 preseed 片段(按需增删)
    # Locale and keyboard
    d-i debian-installer/locale string en_US.UTF-8
    d-i keyboard-configuration/xkb-keymap select us
    
    # Network (use DHCP by default)
    d-i netcfg/choose_interface select auto
    
    # Mirror
    d-i mirror/country string manual
    d-i mirror/http/hostname string mirrors.tuna.tsinghua.edu.cn
    d-i mirror/http/directory string /ubuntu
    d-i mirror/http/proxy string
    
    # Clock and time zone
    d-i clock-setup/utc boolean true
    d-i time/zone string Asia/Shanghai
    
    # Partitioning (use entire disk with LVM)
    d-i partman-auto/method string lvm
    d-i partman-lvm/device_remove_lvm boolean true
    d-i partman-auto/purge_lvm_from_device boolean true
    d-i partman-auto/choose_recipe select atomic
    d-i partman-partitioning/confirm_write_new_label boolean true
    d-i partman/confirm boolean true
    d-i partman/confirm_nooverwrite boolean true
    
    # User account
    d-i passwd/user-fullname string Ubuntu User
    d-i passwd/username string ubuntu
    d-i passwd/user-password password your_password
    d-i passwd/user-password-again password your_password
    d-i user-setup/allow-password-weak boolean true
    d-i user-setup/encrypt-home boolean false
    
    # Packages
    tasksel tasksel/first multiselect ubuntu-server
    d-i pkgsel/include string openssh-server vim htop
    d-i pkgsel/upgrade select none
    
    # Boot loader
    d-i grub-installer/only_debian boolean true
    d-i grub-installer/with_other_os boolean true
    
    # Finish
    d-i finish-install/reboot_in_progress note
    
  • 提示
    • 官方 Ubuntu Server ISO 通常已内置预置 seed,可直接用于自动化安装;如要完全自定义,请准备并指定你自己的 seed 文件。

五、验证与常见问题

  • 验证要点
    • 在虚拟机中测试启动 ISO,确认:引导菜单、语言/键盘、网络、分区、用户创建、软件安装与自启动服务均按预期执行。
    • 检查镜像体积与包含的软件集合是否符合预期;必要时在 chroot 中再次 apt clean 瘦身。
  • 常见问题与处理
    • UEFI 无法启动:确认 ISO 包含 EFI 镜像(如 boot/grub/efi.img),并在生成 ISO 时使用 -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot 参数。
    • 安装器卡住或等待人工输入:检查 preseed 是否被正确引用,关键变量是否设置,必要时提高日志级别(在引导参数中加入 DEBCONF_DEBUG=5 获取调试输出)。
    • 校验文件缺失:部分新版本 ISO 使用 SHA256SUMS 而非 md5sum.txt,生成 ISO 后按需生成或更新对应校验文件。

0