Ubuntu ServerのISOを編集して、起動直後にAutoinstallが始まるようにする。
通常はGRUB画面で毎回、次のカーネルパラメータを手入力する必要がある。
例えば以下のようなパラメータをGRUBで入力する必要がある。
autoinstall ds=nocloud-net\;s=http://192.168.11.170:8080/
これをISO内のgrub.cfgに埋め込んでおくと、ISOから起動するだけで自動インストールを開始できる。
環境
作業はUbuntu 上で行う。
今回の例ではUbuntu Server26.04のISOを使う。
ubuntu-26.04-live-server-amd64.iso
必要なパッケージを入れる。
sudo apt updatesudo apt install -y xorriso squashfs-tools rsync
インストールパッケージは以下になる。
| パッケージ | 役割 |
|---|---|
| xorriso | ISOファイルを展開・再作成するためのツール。カスタムUbuntu ISO作成で使う |
| squashfs-tools | Ubuntuインストーラ内の圧縮ファイルシステムを展開・再圧縮するためのツール |
| rsync | ISOの中身をコピー・同期するためのツール。 |
ISOをダウンロードする
公式サイトからubuntu26.04のISOとSHA256SUMSを取得する。
mkdir -p ~/iso
cd ~/iso
wget -c https://releases.ubuntu.com/26.04/ubuntu-26.04-live-server-amd64.iso
wget -c https://releases.ubuntu.com/26.04/SHA256SUMS
ubuntu@ubuntu-2604-autoinstall:~$ mkdir -p ~/iso
ubuntu@ubuntu-2604-autoinstall:~$ cd ~/iso
ubuntu@ubuntu-2604-autoinstall:~/iso$ wget -c https://releases.ubuntu.com/26.04/ubuntu-26.04-live-server-amd64.iso
--2026-05-17 22:04:22-- https://releases.ubuntu.com/26.04/ubuntu-26.04-live-server-amd64.iso
Resolving releases.ubuntu.com (releases.ubuntu.com)... 91.189.91.108, 91.189.91.107, 91.189.91.109, ...
Connecting to releases.ubuntu.com (releases.ubuntu.com)|91.189.91.108|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2918598656 (2.7G) [application/x-iso9660-image]
Saving to: ‘ubuntu-26.04-live-server-amd64.iso’
ubuntu-26.04-live-server-amd64.iso 100%[==================================================================>] 2.72G 23.7MB/s in 2m 46s
2026-05-17 22:07:09 (16.7 MB/s) - ‘ubuntu-26.04-live-server-amd64.iso’ saved [2918598656/2918598656]
ubuntu@ubuntu-2604-autoinstall:~/iso$ wget -c https://releases.ubuntu.com/26.04/SHA256SUMS
--2026-05-17 22:07:49-- https://releases.ubuntu.com/26.04/SHA256SUMS
Resolving releases.ubuntu.com (releases.ubuntu.com)... 91.189.91.109, 91.189.91.108, 185.125.190.40, ...
Connecting to releases.ubuntu.com (releases.ubuntu.com)|91.189.91.109|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 291
Saving to: ‘SHA256SUMS’
SHA256SUMS 100%[==================================================================>] 291 --.-KB/s in 0s
2026-05-17 22:07:50 (9.40 MB/s) - ‘SHA256SUMS’ saved [291/291]
ubuntu@ubuntu-2604-autoinstall:~/iso$ハッシュを確認してダウンロードしたISOが正しいことを確認する。
sha256sum -c SHA256SUMS --ignore-missing
次のように表示されれば問題ない。
ubuntu-26.04-live-server-amd64.iso: OK
ubuntu@ubuntu-2604-autoinstall:~/iso$ sha256sum -c SHA256SUMS --ignore-missing
ubuntu-26.04-live-server-amd64.iso: OKgrub.cfgを取り出す
ISO内のGRUB 設定ファイルを取り出す。
cd ~/iso
mkdir -p autoinstall-build
xorriso -osirrox on \
-indev ubuntu-26.04-live-server-amd64.iso \
-extract /boot/grub/grub.cfg autoinstall-build/grub.cfg
ubuntu@ubuntu-2604-autoinstall:~/iso$ cd ~/iso
ubuntu@ubuntu-2604-autoinstall:~/iso$ mkdir -p autoinstall-build
ubuntu@ubuntu-2604-autoinstall:~/iso$ xorriso -osirrox on \
-indev ubuntu-26.04-live-server-amd64.iso \
-extract /boot/grub/grub.cfg autoinstall-build/grub.cfg
xorriso 1.5.6 : RockRidge filesystem manipulator, libburnia project.
Copying of file objects from ISO image to disk filesystem is: Enabled
xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE : 991 nodes read in 1 seconds
libisofs: NOTE : Found hidden El-Torito image for EFI.
libisofs: NOTE : EFI image start and size: 1422357 * 2048 , 10296 * 512
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev 'ubuntu-26.04-live-server-amd64.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record : El Torito , MBR protective-msdos-label grub2-mbr cyl-align-off GPT
Media summary: 1 session, 1425097 data blocks, 2783m data, 22.1g free
Volume id : 'Ubuntu-Server 26.04 amd64'
xorriso : UPDATE : 1 files restored ( 394b) in 1 seconds = 0.0xD
Extracted from ISO image: file '/boot/grub/grub.cfg'='/home/ubuntu/iso/autoinstall-build/grub.cfg'
ubuntu@ubuntu-2604-autoinstall:~/iso$grub.cfgを編集する
編集対象は次のファイルだ。
autoinstall-build/grub.cfg
元の内容はだいたい次のようになっている。
set timeout=30 menuentry "Try or Install Ubuntu Server" { set gfxpayload=keep linux /casper/vmlinuz --- initrd /casper/initrd }
ubuntu@ubuntu-2604-autoinstall:~/iso$ cat autoinstall-build/grub.cfg
set timeout=30
loadfont unicode
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
menuentry "Try or Install Ubuntu Server" {
set gfxpayload=keep
linux /casper/vmlinuz ---
initrd /casper/initrd
}
grub_platform
if [ "$grub_platform" = "efi" ]; then
menuentry 'Boot from next volume' {
exit 1
}
menuentry 'UEFI Firmware Settings' {
fwsetup
}
fi
ubuntu@ubuntu-2604-autoinstall:~/iso$linux行にAutoinstall用のカーネルパラメータを追加する。http://192.168.11.170:8080/はNoCloud 用の配信ホストのIPアドレスに合わせる
set timeout=3menuentry "Try or Install Ubuntu Server" {
set gfxpayload=keep
linux /casper/vmlinuz autoinstall ds=nocloud-net\;s=http://192.168.11.170:8080/ ---
initrd /casper/initrd
}
set timeout=3 はGRUB画面での待ち時間だ。完全に自動で進めたい場合は次のようにしてもよい。
set timeout=0
grub.cfgを確認する。
ubuntu@ubuntu-2604-autoinstall:~/iso/autoinstall-build$ cat grub.cfg
set timeout=3
loadfont unicode
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
menuentry "Try or Install Ubuntu Server" {
set gfxpayload=keep
linux /casper/vmlinuz autoinstall ds=nocloud-net\;s=http://192.168.11.170:8080/ ---
initrd /casper/initrd
}
grub_platform
if [ "$grub_platform" = "efi" ]; then
menuentry 'Boot from next volume' {
exit 1
}
menuentry 'UEFI Firmware Settings' {
fwsetup
}
fi
ubuntu@ubuntu-2604-autoinstall:~/iso/autoinstall-build$ISO を再生成する
元 ISOのブート情報を再利用し、grub.cfgだけ差し替えたISOを作る。
cd ~/isoxorriso \
-indev ubuntu-26.04-live-server-amd64.iso \
-outdev ubuntu-26.04-live-server-amd64-autoinstall.iso \
-boot_image any replay \
-map autoinstall-build/grub.cfg /boot/grub/grub.cfg
ubuntu@ubuntu-2604-autoinstall:~/iso/autoinstall-build$ cd ~/iso
ubuntu@ubuntu-2604-autoinstall:~/iso$ xorriso \
-indev ubuntu-26.04-live-server-amd64.iso \
-outdev ubuntu-26.04-live-server-amd64-autoinstall.iso \
-boot_image any replay \
-map autoinstall-build/grub.cfg /boot/grub/grub.cfg
xorriso 1.5.6 : RockRidge filesystem manipulator, libburnia project.
xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE : 991 nodes read in 1 seconds
libisofs: NOTE : Found hidden El-Torito image for EFI.
libisofs: NOTE : EFI image start and size: 1422357 * 2048 , 10296 * 512
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev 'ubuntu-26.04-live-server-amd64.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record : El Torito , MBR protective-msdos-label grub2-mbr cyl-align-off GPT
Media summary: 1 session, 1425097 data blocks, 2783m data, 22.1g free
Volume id : 'Ubuntu-Server 26.04 amd64'
Drive current: -outdev 'ubuntu-26.04-live-server-amd64-autoinstall.iso'
Media current: stdio file, overwriteable
Media status : is blank
Media summary: 0 sessions, 0 data blocks, 0 data, 22.1g free
xorriso : WARNING : -volid text problematic as automatic mount point name
xorriso : WARNING : -volid text does not comply to ISO 9660 / ECMA 119 rules
xorriso : NOTE : Replayed 22 boot related commands
xorriso : UPDATE : 1 files added in 1 seconds
Added to ISO image: file '/boot/grub/grub.cfg'='/home/ubuntu/iso/autoinstall-build/grub.cfg'
xorriso : NOTE : Copying to System Area: 32768 bytes from file '--interval:imported_iso:0s-15s:zero_mbrpt,zero_gpt:ubuntu-26.04-live-server-amd64.iso'
xorriso : UPDATE : Writing: 45632s 3.2% fifo 68% buf 50%
xorriso : UPDATE : Writing: 380101s 26.7% fifo 5% buf 50% 821.3xD
xorriso : UPDATE : Writing: 933888s 65.5% fifo 100% buf 50% 817.2xD
ISO image produced: 1424590 sectors
Written to medium : 1424752 sectors at LBA 48
Writing to 'ubuntu-26.04-live-server-amd64-autoinstall.iso' completed successfully.
ubuntu@ubuntu-2604-autoinstall:~/iso$| 行 | 役割 |
|---|---|
| xorriso | ISOを編集・再作成する |
| -indev ubuntu-26.04-live-server-amd64.iso | 元のUbuntu ISOを入力元にする |
| -outdev ubuntu-26.04-live-server-amd64-autoinstall.iso | 新しいISOとして出力する |
| -boot_image any replay | 元ISOのブート設定を引き継ぐ |
| -map autoinstall-build/grub.cfg /boot/grub/grub.cfg | 編集済み grub.cfg をISO内の /boot/grub/grub.cfg に上書き配置する |
生成されたISOを確認する。
ls -lh ubuntu-26.04-live-server-amd64-autoinstall.iso
ubuntu@ubuntu-2604-autoinstall:~/iso$ ls -lh ubuntu-26.04-live-server-amd64-autoinstall.iso
-rw-rw-r-- 1 ubuntu ubuntu 2.8G May 17 22:26 ubuntu-26.04-live-server-amd64-autoinstall.iso
ubuntu@ubuntu-2604-autoinstall:~/iso$生成したISOを確認する
作成したISOからgrub.cfgを再度取り出し、設定が入っていることを確認する。
xorriso -osirrox on \
-indev ubuntu-26.04-live-server-amd64-autoinstall.iso \
-extract /boot/grub/grub.cfg autoinstall-build/grub.final.cfg
次のように表示されればよい。
cat autoinstall-build/grub.final.cfg
ubuntu@ubuntu-2604-autoinstall:~/iso$ cat autoinstall-build/grub.final.cfg
set timeout=3
loadfont unicode
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
menuentry "Try or Install Ubuntu Server" {
set gfxpayload=keep
linux /casper/vmlinuz autoinstall ds=nocloud-net\;s=http://192.168.11.170:8080/ ---
initrd /casper/initrd
}
grub_platform
if [ "$grub_platform" = "efi" ]; then
menuentry 'Boot from next volume' {
exit 1
}
menuentry 'UEFI Firmware Settings' {
fwsetup
}
fi
ubuntu@ubuntu-2604-autoinstall:~/iso$1:set timeout=3 10: linux /casper/vmlinuz autoinstall ds=nocloud-net\;s=http://192.168.11.170:8080/ ---
ブート情報も確認しておく。
xorriso \
-indev ubuntu-26.04-live-server-amd64-autoinstall.iso \
-report_el_torito plain
BIOSとUEFIの両方が残っていればよい。
El Torito boot img : 1 BIOS El Torito boot img : 2 UEFI
ubuntu@ubuntu-2604-autoinstall:~/iso$ xorriso \
-indev ubuntu-26.04-live-server-amd64-autoinstall.iso \
-report_el_torito plain
xorriso 1.5.6 : RockRidge filesystem manipulator, libburnia project.
xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE : 991 nodes read in 1 seconds
libisofs: NOTE : Found hidden El-Torito image for EFI.
libisofs: NOTE : EFI image start and size: 1422048 * 2048 , 10296 * 512
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev 'ubuntu-26.04-live-server-amd64-autoinstall.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record : El Torito , MBR protective-msdos-label grub2-mbr cyl-align-off GPT
Media summary: 1 session, 1424638 data blocks, 2782m data, 19.4g free
Volume id : 'Ubuntu-Server 26.04 amd64'
El Torito catalog : 489 1
El Torito cat path : /boot.catalog
El Torito images : N Pltf B Emul Ld_seg Hdpt Ldsiz LBA
El Torito boot img : 1 BIOS y none 0x0000 0x00 4 490
El Torito boot img : 2 UEFI y none 0x0000 0x00 10296 1422048
El Torito img path : 1 /boot/grub/i386-pc/eltorito.img
El Torito img opts : 1 boot-info-table grub2-boot-info
El Torito img blks : 2 2574
ubuntu@ubuntu-2604-autoinstall:~/iso$完成
完成した ISO は次のファイルだ。
ubuntu-26.04-live-server-amd64-autoinstall.iso
この ISOで起動すると、GRUB で手入力しなくても次のAutoinstall 設定が自動で渡される。
autoinstall ds=nocloud-net\;s=http://192.168.11.170:8080/
あとは http://192.168.11.170:8080/で NoCloud 用のuser-dataとmeta-dataを配信しておけば、ISO 起動後に自動インストールが始まる。
ワンライナーでの配信方法については前回の記事を参考にしてほしい。
192.168.11.170:8080は配信用のホストに合わせること。
