尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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分钟。关键是要根据团队需求设计合理的镜像分层策略并建立版本控制机制跟踪镜像变更。
RELATED

相关推荐

Vibe Coding:AI辅助编程的Skill生态实践指南

Vibe Coding:AI辅助编程的Skill生态实践指南

1. 项目概述:Vibe Coding与Skill生态Vibe Coding是一种新兴的AI辅助编程方法论,其核心是通过预定义的Skill(技能模块)来指导AI编码助手完成特定开发任务。这种模式正在GitHub等开发者社区快速流行,特别是在结合Claude …

📅 2026/9/9 18:19:50
CLAUDE.md:4条规则提升AI编程效率的工程实践

CLAUDE.md:4条规则提升AI编程效率的工程实践

1. CLAUDE.md 现象解析:从200行到4条的工程哲学上周GitHub趋势榜被一个仅有4行规则的Markdown文件霸榜,这个名为CLAUDE.md的文件源自Karpathy对LLM编程陷阱的观察。有趣的是,最初有人尝试用200行详细指令约束Claude的行为,结果发现…

📅 2026/8/24 2:10:05
SGuard限制器终极指南:如何将腾讯游戏性能提升50%的完整解决方案

SGuard限制器终极指南:如何将腾讯游戏性能提升50%的完整解决方案

SGuard限制器终极指南:如何将腾讯游戏性能提升50%的完整解决方案 【免费下载链接】sguard_limit 限制ACE-Guard Client EXE占用系统资源,支持各种腾讯游戏 项目地址: https://gitcode.com/gh_mirrors/sg/sguard_limit SGuard限制器是一款专门优化…

📅 2026/8/24 2:10:04
MORE NEWS

更多资讯

📰

爬虫数据清洗实战:构建文本去重引擎的完整方案

做爬虫时间久了,你会发现真正麻烦的往往不是“怎么把数据抓下来”,而是“抓到之后怎么处理”。最常见的一个污染源就是重复文本:同一个新闻被几十个网站转载,同一篇商品描述在不同店铺反复出现,同一条公告被改了标题又…

📰

老Mac如何跑上最新内核?3段代码看懂OpenCore-Legacy-Patcher的KDK与内核缓存重建

老Mac如何跑上最新内核?3段代码看懂OpenCore-Legacy-Patcher的KDK与内核缓存重建 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 启动时 Apple 图…

📰

汽车机盖重拓扑P1:主结构线与密度分配的核心思路

机盖重拓扑是汽车硬表面建模里一个很典型的“看着简单、做起来容易翻车”的部位。它不像前后保险杠那样有大量穿孔和分件,整个表面通常是一大块连续曲面,中间偶尔带一条或两条特征线。正因为结构简单,很多人容易一上来就直接铺平面、拉点、挤…

📰

STM32F407与OV2640嵌入式条码识别:工程解析与调试实战

简介:面向嵌入式视觉与条码识别场景的开发者,该工程以 STM32F407VET6 为主控,搭配 OV2640 摄像头,实现 640480 分辨率 RGB 图像的采集,并通过自定义协议将数据上传至上位机完成一维码/二维码解码,适合需要快…

📰

Android投屏Demo实战:MediaProjection与MediaCodec编码传输全解

简介:Android端投屏demo是一份面向Android开发者的示例工程,其核心是演示基于MediaProjection API的手机屏幕镜像到电视、电脑或投影仪等设备的完整流程。压缩包大小33.55MB,共2000个文件,以class、png、xml、json、jar、java等为…

📰

10分钟上手DeepEval:给LLM应用装上一套自动化质量评估流水线

10分钟上手DeepEval:给LLM应用装上一套自动化质量评估流水线 【免费下载链接】deepeval The LLM Evaluation Framework 项目地址: https://gitcode.com/GitHub_Trending/de/deepeval 你刚上线了一个RAG问答系统,老板问了一句:"怎…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬