仅针对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
准备工作
制作前需要安装以下工具
- 7z ——用于解压官方ISO(包括MBR和EFI分区)
sudo apt install p7zip
- 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