Ubuntu定制安装镜像制作指南:Cubic与命令行实战

📅 2026/7/16 12:15:22
Ubuntu定制安装镜像制作指南:Cubic与命令行实战
1. 为什么需要定制Ubuntu安装镜像作为一名Linux系统管理员我经常需要为不同场景部署Ubuntu系统。标准安装镜像虽然通用但在实际工作中总会遇到各种不便每次安装后都要重复配置开发环境如Docker、Python、CUDA等公司内网环境需要预装特定软件包和配置文件批量部署时需要统一系统参数和默认设置特殊硬件平台需要集成专用驱动这时候定制安装镜像就能大幅提升效率。最近我在为团队准备机器学习开发环境时就通过两种方法制作了预装CUDA、Docker和Jupyter的Ubuntu镜像。下面分享我的实战经验。2. 方法一使用Cubic图形化工具定制ISO2.1 Cubic工具简介与安装CubicCustom Ubuntu ISO Creator是专门为Ubuntu设计的图形化定制工具它允许我们在原始ISO基础上添加/删除软件包修改系统配置集成自定义脚本调整安装流程安装命令很简单sudo apt-add-repository ppa:cubic-wizard/release sudo apt update sudo apt install cubic注意Cubic需要至少20GB的临时空间建议在空间充足的目录下操作2.2 完整定制流程详解2.2.1 准备基础环境启动Cubic后会提示选择原始ISO路径如ubuntu-22.04.3-desktop-amd64.iso工作目录建议至少50GB剩余空间目标ISO输出路径我通常会创建一个专用目录mkdir ~/custom_iso cd ~/custom_iso2.2.2 修改文件系统进入Cubic的chroot环境后可以像操作正常系统一样添加APT源如清华镜像源sudo sed -i s|http://.*archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g /etc/apt/sources.list安装常用软件apt update apt install -y \ docker.io \ nvidia-driver-535 \ python3-pip \ git配置默认环境示例设置Docker免sudousermod -aG docker $USER systemctl enable docker2.2.3 自定义安装过程在Scripts标签页可以添加preseed.cfg自动化安装配置d-i partman-auto/method string lvm d-i partman-lvm/device_remove_lvm boolean true d-i partman-auto/choose_recipe select atomiccustom.sh首次启动执行的脚本#!/bin/bash # 设置中文环境 apt install -y language-pack-zh-hans update-locale LANGzh_CN.UTF-8 # 配置Git默认用户 git config --global user.name YourName git config --global user.email youremail.com2.2.4 生成最终ISO点击Generate按钮后Cubic会清理临时文件重新计算文件哈希生成可启动ISO整个过程大约需要30-60分钟取决于定制内容和硬件性能。3. 方法二使用命令行工具手动定制3.1 基础环境准备对于没有GUI的服务器环境可以用以下工具链sudo apt install -y \ squashfs-tools \ genisoimage \ isomd5sum \ xorriso工作目录结构示例custom_iso/ ├── original.iso ├── extract/ # 解压目录 ├── squashfs/ # 文件系统修改区 └── new.iso # 输出文件3.2 分步操作指南3.2.1 解压原始ISOmkdir -p custom_iso/extract sudo mount -o loop ubuntu-22.04.3-desktop-amd64.iso custom_iso/extract rsync -av custom_iso/extract/ custom_iso/iso/ sudo umount custom_iso/extract3.2.2 修改squashfs文件系统cd custom_iso/iso/casper sudo unsquashfs filesystem.squashfs sudo mv squashfs-root ../squashfs进入chroot环境进行修改sudo mount --bind /dev ../squashfs/dev sudo chroot ../squashfs /bin/bash # 在chroot中操作示例 apt update apt install -y vim net-tools exit sudo umount ../squashfs/dev3.2.3 重新打包文件系统sudo mksquashfs ../squashfs filesystem.squashfs -comp xz -b 1M更新文件校验信息sudo bash -c printf $(du -sx --block-size1 ../squashfs | cut -f1) filesystem.size md5sum filesystem.squashfs filesystem.squashfs.md53.2.4 生成新ISOcd ../.. sudo xorriso -as mkisofs \ -r -V Custom Ubuntu \ -o custom_ubuntu.iso \ -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 \ iso4. 两种方法的对比与选择建议4.1 功能对比表特性Cubic方案命令行方案学习曲线低高图形界面有无自动化程度高低定制深度中等高适合场景桌面环境服务器环境最小磁盘空间需求20GB10GB4.2 选择建议推荐使用Cubic当需要快速制作桌面环境镜像不熟悉Linux底层机制需要集成图形化软件推荐手动定制当定制服务器版镜像需要深度修改启动流程在无GUI环境中操作5. 实战中的常见问题与解决方案5.1 镜像体积过大问题处理方法# 清理APT缓存 sudo apt clean # 删除不必要的语言包 sudo apt purge -y $(dpkg-query -Wf ${Package}\n | grep -E ^language-pack-.*-base$ | grep -v en\|zh) # 使用xz高压缩比 sudo mksquashfs ../squashfs filesystem.squashfs -comp xz -Xbcj x86 -b 1M5.2 启动失败排查步骤检查ISO完整性md5sum custom_ubuntu.iso验证EFI引导sudo mount -o loop custom_ubuntu.iso /mnt ls /mnt/EFI/BOOT查看引导日志在启动时按Esc键5.3 预装软件的最佳实践建议分层处理基础层驱动、编译工具链中间层运行时环境Python、Java等应用层具体业务软件我的典型软件清单# 开发工具 apt install -y build-essential git vim # 容器化 apt install -y docker.io docker-compose # Python环境 apt install -y python3-pip pip3 install --upgrade pip setuptools wheel # 机器学习工具 apt install -y nvidia-cuda-toolkit pip3 install torch torchvision jupyterlab6. 高级定制技巧6.1 自动化安装配置在preseed.cfg中添加# 时区设置 d-i time/zone string Asia/Shanghai d-i clock-setup/utc boolean true # 用户配置 d-i passwd/user-fullname string Ubuntu User d-i passwd/username string ubuntu d-i passwd/user-password password insecure d-i passwd/user-password-again password insecure6.2 集成专有驱动以NVIDIA驱动为例# 在chroot环境中 ubuntu-drivers autoinstall nvidia-xconfig --enable-all-gpus6.3 自定义GRUB主题准备主题文件mkdir -p iso/boot/grub/themes/custom cp background.png iso/boot/grub/themes/custom/修改grub.cfgset theme/boot/grub/themes/custom/theme.txt7. 镜像测试与部署7.1 虚拟机测试方案使用QEMU快速验证qemu-system-x86_64 \ -cdrom custom_ubuntu.iso \ -m 4G \ -enable-kvm \ -cpu host7.2 批量部署方案结合PXE网络安装# 配置TFTP服务器 sudo cp custom_ubuntu.iso /var/lib/tftpboot/ubuntu.iso # 示例PXE配置 label custom_ubuntu menu label ^Custom Ubuntu Install kernel ubuntu-installer/amd64/linux append vga788 initrdubuntu-installer/amd64/initrd.gz preseed/urlhttp://example.com/preseed.cfg在实际项目中我使用这种定制方法将新员工开发环境准备时间从4小时缩短到20分钟。关键是要根据团队需求设计合理的镜像分层策略并建立版本控制机制跟踪镜像变更。