ubuntu

如何制作自定义的Ubuntu镜像

小樊
51
2025-10-12 02:08:30
栏目: 智能运维

如何制作自定义Ubuntu镜像
制作自定义Ubuntu镜像可根据技术熟练度选择不同工具,常见方法包括图形化工具(如Cubic)、命令行工具(如mkosi、手动解压重建)及备份工具(如respin)。以下是详细步骤:

一、使用Cubic(推荐:图形化工具,支持最新Ubuntu版本)

Cubic(Custom Ubuntu ISO Creator)是专为Ubuntu设计的图形化定制工具,操作直观,适合新手及需要频繁修改的场景。

  1. 安装Cubic
    打开终端,依次执行以下命令添加PPA并安装:
    sudo apt-add-repository ppa:cubic-wizard/releases
    sudo apt update
    sudo apt install cubic
    
  2. 启动并配置Cubic
    运行cubic命令,选择基础ISO文件(如Ubuntu 22.04官方ISO),设置工作目录(需预留15GB以上空间)。
  3. 进入Chroot环境定制
    Cubic会自动挂载ISO文件系统,启动终端。在终端中可执行以下操作:
    • 更新系统:apt update && apt upgrade -y
    • 安装软件:apt install -y vim git curl
    • 修改配置:编辑/etc/skel/.bashrc(用户模板)、/etc/default/grub(引导设置)等文件。
    • 添加预置脚本:如cloud-init配置(用于自动化部署)。
  4. 生成自定义ISO
    完成定制后,点击“Generate”按钮,Cubic会自动重新打包系统、生成新的squashfs文件系统,并创建可引导的ISO文件(默认保存在工作目录)。

二、使用mkosi(现代工具:支持多格式输出,自动化程度高)

mkosi是Ubuntu官方推荐的镜像构建工具,支持生成ISO、磁盘镜像(.img)等多种格式,适合需要自动化或批量部署的场景。

  1. 安装依赖
    sudo apt update
    sudo apt install mkosi systemd-container squashfs-tools grub-pc-bin
    
  2. 创建配置文件
    在项目目录下创建mkosi.conf,内容如下(以Ubuntu 22.04为例):
    [Distribution]
    Distribution=ubuntu
    Release=jammy  # Ubuntu 22.04代号
    
    [Output]
    Format=disk    # 输出格式(disk/img/iso)
    Output=custom-linux.img  # 输出文件名
    Bootable=yes   # 是否可引导
    
    [Content]
    Packages=      # 需包含的软件包(空则使用默认基础系统)
    linux-image-generic
    systemd-boot
    bash
    curl
    nano
    
  3. 构建镜像
    运行sudo mkosi build,工具会自动下载指定版本的Ubuntu基础系统,安装配置的软件包,生成custom-linux.img磁盘镜像。
  4. 转换为ISO(可选)
    若需ISO格式,可挂载镜像并重新打包:
    mkdir iso-root
    sudo mount custom-linux.img iso-root
    sudo mkisofs -o custom-linux.iso -b boot/grub/x86_64-efi/grub.img iso-root
    sudo umount iso-root
    

三、手动定制(高级:完全控制,适合深度修改)

手动定制适合需要深度修改系统结构(如修改内核、调整文件系统布局)的用户,步骤较繁琐但灵活性最高。

  1. 准备工作
    安装必要工具:
    sudo apt install squashfs-tools genisoimage xorriso
    
  2. 获取并解压官方ISO
    下载目标版本的Ubuntu ISO(如22.04),挂载并复制内容:
    mkdir ~/custom-iso && cd ~/custom-iso
    sudo mount -o loop ubuntu-22.04.iso /mnt
    rsync -a /mnt/ ./
    sudo umount /mnt
    
    解压系统文件(filesystem.squashfs是根文件系统):
    sudo unsquashfs ./casper/filesystem.squashfs
    sudo mv squashfs-root edit
    
  3. Chroot环境修改
    挂载虚拟文件系统并进入chroot:
    sudo mount --bind /dev edit/dev
    sudo mount -t proc none edit/proc
    sudo chroot edit /bin/bash
    
    在chroot中执行定制操作(如安装软件、修改配置),完成后退出:
    exit
    sudo umount edit/dev
    sudo umount edit/proc
    
  4. 重新生成系统文件
    将修改后的目录重新打包为squashfs
    sudo mksquashfs edit ./casper/filesystem.squashfs -comp xz
    sudo mv filesystem.squashfs ./casper/
    
  5. 更新校验信息
    计算系统大小并生成MD5校验:
    sudo bash -c "du -sx --block-size=1 edit > casper/filesystem.size"
    find . -type f -print0 | xargs -0 md5sum > md5sum.txt
    
  6. 生成ISO
    使用mkisofs创建可引导ISO:
    sudo mkisofs -o ../custom-ubuntu.iso \
    -V "My Custom Ubuntu" \
    -b isolinux/isolinux.bin \
    -c isolinux/boot.cat \
    -no-emul-boot -boot-load-size 4 -boot-info-table \
    -eltorito-alt-boot -e efi/boot/bootx64.efi -no-emul-boot \
    .
    

四、使用respin(备份型定制:快速生成系统镜像)

respin是remastersys的替代工具,适合快速备份当前系统(包括用户数据)或生成纯净系统镜像,但不支持最新Ubuntu版本(如24.04)。

  1. 安装respin
    sudo add-apt-repository ppa:sergiomejia666/respin
    sudo add-apt-repository ppa:sergiomejia666/xresprobe
    sudo apt update
    sudo apt install respin isolinux
    
  2. 生成镜像
    • 备份完整系统(含/home):sudo respin backup(输出至~/respin/respin/
    • 生成纯净系统(不含用户数据):sudo respin dist
    • 生成可分发镜像:sudo respin dist cdfs && sudo respin dist iso custom.iso

关键注意事项

0
看了该问题的人还看了