Skip to content

制作Ubuntu Server 24.04 Autoinstall ISO镜像

仅针对Ubuntu Server,而非Ubuntu Desktop

自Ubuntu 20.04开始,自动安装部署将使用subiquity的user-data方式,不再支持18.04和更早版本的pre-seed。

Autoinstall的‘user-data’唯一官方参考是https://ubuntu.com/server/docs/install/autoinstall-reference

准备工作

制作前需要安装以下工具

  1. 7z ——用于解压官方ISO(包括MBR和EFI分区)
    sudo apt install p7zip
  2. xorriso——用于构建修改后的ISO
    sudo apt install xorriso

准备环境

mkdir source-files
cp <path_to>/ubuntu-24.04.2-live-server-amd64.iso ubuntu-24.04.2-live-server-amd64.iso

解压镜像

7z -y x ubuntu-24.04.2-live-server-amd64.iso -osource-files

source-files目录中会有一个 ‘[BOOT]’,包含了 1-Boot-NoEmul.img 2-Boot-NoEmul.img

这两个就是MBR引导和EFI引导分区的镜像。我们不需要把它们打包进ISO,所以把它们移到上层目录

mv  '[BOOT]' ../BOOT

编辑grub.cfg

编辑 boot/grub/grub.cfg

在所有menuentry前添加一块menuentry配置

menuentry "Autoinstall Ubuntu Server" {
        set gfxpayload=keep
        linux   /casper/vmlinuz quiet autoinstall ds=nocloud\;s=/cdrom/nocloud/  ---
        initrd  /casper/initrd
}

可以理解为复制了”Try or Install Ubuntu Server”这个menuentry,并在linux行增加了autoinstall。指定了ds (data source)为nocloud,source路径为/cdrom/nocloud/。注意需要\(反斜杠)来转义,以保留;(分号)。

最后可能会得到像下图所示的结构

准备autoinstall用到的文件

创建nocloud目录用于存放user-data和meta-data

mkdir source-files/nocloud

由于cloud-init依赖meta-data,即使我们用不到它,也必须要创建一个空文件

touch source-files/nocloud/meta-data

创建并编辑user-data

vim source-files/nocloud/user-data

以下是一个user-data的示例

#cloud-config
autoinstall:
  version: 1
  locale: en_US.UTF-8
  keyboard:
    layout: us
  identity:
    hostname: supos-ce-edge
    username: supos
    password: $6$LartesJok7i1zS9a$K5K70Sf/ZyIdPQw8fRSaHTKAfEJ1cftHurcgTAZS98IzYv/zq64mfgg53E98rmwdy6zaTQa4W0u8hD.6hvEWn. #可以用 openssl passwd -6 YourPassword 来生成
  ssh:
    allow-pw: true
    install-server: true
  apt:
    preserve_sources_list: true
    geoip: true
    fallback: offline-install
  storage:
    layout:
      name: direct
  packages:
    - vim
    - curl
    - wget
    - net-tools
  late-commands:
    - curtin in-target -- apt-get -y purge unattended-upgrades  #安装完成后,卸载我不喜欢的 unattended-upgrades

安装系统过程中安装的软件包会直接从公网上拉取(暂时没有找到可以从ISO本地直接安装的方式),所以不建议安装太多,更不建议安装ubunt-desktop这样的大包。如果有需要,建议进入系统后配置APT源再安装。

构建修改后的ISO

xorriso -indev ubuntu-24.04.2-live-server-amd64.iso -report_el_torito as_mkisofs

使用xorriso命令查看原镜像的信息

提取关键信息,并替换到以下命令中

cd source-files

xorriso -as mkisofs -r \
  -V 'Ubuntu Server 24.04.2 auto' \
  -o ../ubuntu-24.04.2-live-server-amd64-autoinstall.iso \
  --grub2-mbr ../BOOT/1-Boot-NoEmul.img \
  -partition_offset 16 \
  --mbr-force-bootable \
  -append_partition 2 28732ac11ff8d211ba4b00a0c93ec93b ../BOOT/2-Boot-NoEmul.img \
  -appended_part_as_gpt \
  -iso_mbr_part_type a2a0d0ebe5b9334487c068b6b72699c7 \
  -c '/boot.catalog' \
  -b '/boot/grub/i386-pc/eltorito.img' \
    -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info \
  -eltorito-alt-boot \
  -e '--interval:appended_partition_2:::' \
  -no-emul-boot \
  ./

随后会在 source-files 的上级目录得到ubuntu-24.04.2-live-server-amd64-autoinstall.iso

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*