【ubuntu26.04】Ubuntu ISOにAutoinstallを埋め込む方法

【ubuntu26.04】Ubuntu ISOにAutoinstallを埋め込む方法

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 update
sudo apt install -y xorriso squashfs-tools rsync

インストールパッケージは以下になる。

パッケージ役割
xorrisoISOファイルを展開・再作成するためのツール。カスタムUbuntu ISO作成で使う
squashfs-toolsUbuntuインストーラ内の圧縮ファイルシステムを展開・再圧縮するためのツール
rsyncISOの中身をコピー・同期するためのツール。

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: OK

grub.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=3
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
}

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 ~/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

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$
役割
xorrisoISOを編集・再作成する
-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は配信用のホストに合わせること。

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *