
2026/06/02 3:02
Debian または Fedora の永続化ライブイメージの作成
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
標準 Linux ライブ ISO ファイルシステムは読み取り専用(ISO9660/EROFS)であり、パーシステンスが設定されていない限り、再起動後に変更したユーザーデータやインストールされたパッケージは失われます。一般的な解決策としては、RAM または手動で作成した書き込み可能なパーティション(例:ext4)を用いた OverlayFS の利用です。
Ubuntu では通常、「persistent」というカーネルパラメータと空のパーティション「casper-rw」を併用し、12 バイトのバイトシフティングを行うことで ISO を変更します(
quiet splash をpersistent に置換)。成功確認は /cow マウントポイントのサイズを確認することで実施します。Debian は persistence パラメータを使用し、「persistence」というラベルを持つパーティションに、/ union ラインを含む persistence.conf ファイルを配置する必要があります。検証には、ルートをオーバーレイマウントしておりそれが persistence パーティション(例:/run/live/persistence/sda3)を指していることを確認します。
Fedora は SELinux エンフォーシングモードによる複雑さが高く、
selinux=0 rd.live.overlay=LABEL=foo:/bar などのブートパラメータ、「foo」と「bar」というラベルを持つパーティション、および ovlwork ディレクトリが必要となります。この原生方法は grub.cfg のスペース制限により制限され、ISO9660 レイアウトが変更されると破損するリスクがあります。安定した Fedora 回避策としては、/LiveOS/squashfs.img からルートファイルシステムを抽出し、ブートファイルを格納するための FAT32 パーティションと ext4 パーティション(ラベル:"Fedora-Live")を作成し、それらを単一の GPT レイアウトに結合してユーザーファイルを保存する方法です。このプロセスでは、livesys サービスを開始し、liveuser アカウントを作成するためにカーネルパラメータに rd.live.image を追加する必要もあります。
歴史的には、危険な ISO 変更やバイトシフティングが使用されていましたが、ディストリビューションの更新に伴って頻繁に失敗しました。現代のワークフローでは、不安定な編集スクリプトよりも、外部イメージ管理ツールと明確なドキュメントを好んで採用し、データ損失を防いでいます。GitHub 上の自動化スクリプトは、ext4 パーティションの注入やテスト用途(QEMU/KVM と OVMF など)でのバイトシフティングを行うことを支援し、堅牢なパーシステンス解決への安定した移行を可能にします。
本文
Fedora Live ISO における永続化(Persistence)の設定と実装方法
「Live」ISO を USB ドライブに書き込み、起動した際にカスタマイズやインストール済みのパッケージが消えてしまうのは、只読みの ISO ファイルシステム構造が原因です。その原理と、各ディストリビューションでの永続化を実現する具体的な手順を解説します。
1. Live ISO の動作原理
ISO ファイルは ISO9660 という只読みのファイルシステムを使用しており、書き込み可能媒体(USB など)に書き込まれてもその構造自体は変化しません。
- OS の挙動: Linux の VFS レヤーが只読りの FS を検知すると、データブロックへの書き込みを拒否し
(Read-only file system) エラーを返します。EROFS - 解決策: 通常は RAM にオーバーレイを作成して書き込み領域(OverlayFS)を用意しますが、Live ISO 内部にはそれを上書きするスペースがないため、別途対応が必要です。
2. ディストリビューション別の永続化設定方法
各ディストリビューションの標準的なカーネルパラメータとパーティション要件は異なります。
Ubuntu (および Xubuntu)
- カーネルパラメータ:
persistent - パーティション要件: `(空の) パーティションにはラベル「casper-rw」を付けること。**
確認方法
永続化が有効かどうかは
/cow マウント状況で確認します。
# cow モード(永続化が有効)の場合: $ df -h | grep cow /cow 9.8G 161M 9.2G 2% / # casper-rw モード(永続化が無効または誤作動の場合): $ df -h | grep casper /dev/disk/by-label/casper-rw ...
ISO 編集方法
ISO ファイルを直接マウントして編集は無意味です。以下のいずれかの方法を採用します。
- ISO からコンテンツを抽出して編集: GRUB.cfg を編集後、再コンパイル。
- バイトスワップ(簡易的な修正): ISO のヘッダー部分のみ置換。
$ export LANG=C # quiet splash -> persistent (注:置換文字列の長さが一致しないと FS が破損する) $ sed -i 's/quiet splash/persistent /' xubuntu-26.04-desktop-amd64.iso
Debian
- カーネルパラメータ:
(Ubuntu のpersistence
と異なります)persistent - パーティション要件:
- ラベルとして「persistence」を付ける。
- ルートに
ファイルが存在し、persistence.conf
行を含むこと。/ union
ISO 編集方法
同様にバイトスワップで可能です(ISO の文字列順序が異なるため注意)。
$ export LANG=C $ sed -i 's/splash quiet/persistence /' debian-live-13.5.0-amd64-xfce.iso
確認方法
オーバーレイが正しく機能しているか、マウント情報から確認します。
$ mount | grep sda3 /dev/sda3 on /run/live/persistence/sda3 type ext4 (rw,noatime) overlay on / type overlay (rw,noatime,lowerdir=/run/live/rootfs/filesystem.squashfs/,upperdir=/run/live/persistence/sda3/rw,workdir=/run/live/persistence/sda3/work,redirect_dir=on)
Fedora
- カーネルパラメータ:
selinux=0 rd.live.overlay=LABEL=<ラベル>:<ディレクトリ>- 例:
rd.live.overlay=LABEL=foo:/bar
- 例:
- パーティション要件:
- ラベル「foo」(任意の値だが、上記コマンドと一致);
- ディレクトリ「bar」;
- ハードコードされた
ディレクトリ。ovlwork
確認方法
$ df -h | grep sdb1 /dev/sdb1 9.8G 134M 9.1G 2% /run/initramfs/overlayfs $ mount | grep Live LiveOS_rootfs on / type overlay (rw,relatime,lowerdir=/run/rootfsbase,upperdir=/run/overlayfs,workdir=/run/ovlwork) $ file /run/overlayfs /run/overlayfs: symbolic link to /run/initramfs/overlayfs/bar
注意点
Fedora は既存の ISO ファイル構造を改変する方法(バイトスワップなど)が脆弱です。
GRUB.cfg のサイズ変更などで破損するリスクがあります。信頼性の高い方法として、ISO を分解してルートファイルシステムを抽出・編集し、再結合する必要があります。
3. Fedora での信頼できる構成方法
Fedora Live ISO は内部で 2.6GB の
squashfs.img (EROFS) を使用しています。これを以下のように再構築します。
ステップ 1: イメージの作成
- FAT32 パーティション: EFI ブートファイルとカーネル、initramfs を格納。
- ext4 パーティション:
の内容を抽出したものを格納(例: ラベル「Fedora-Live」)。squashfs.img
この 2 つのイメージを GPT レイアウトで結合し、USB に書き込みます。
ステップ 2: GRUB.cfg の設定
シンプルな構成にします。
set timeout=3 menuentry "Fedora Live" { linux /vmlinuz rd.live.image root=LABEL=Fedora-Live rw noresume initrd /initramfs }
- 重要:
パラメータは systemd がrd.live.image
サービスを起動するために必須です。省略すると liveuser が作成されません。livesys
ステップ 3: テスト環境での実行 (QEMU/KVM)
USB 書き込み前に、以下のように UEFI BIOS と仮想マシンでテストできます。
# ISO を分割して画像として出力 $ sudo ./mflip 10G Fedora-Xfce-Live-44-1.7.x86_64.iso out.img # QEMU コマンドのエイリアス定義 (グラフィックス有) $ alias qemu3d='qemu-kvm -machine q35 \ -bios /usr/share/OVMF/OVMF_CODE.fd -m 4G \ -display gtk,gl=on -smp 2 \ -device virtio-vga-gl,hostmem=2G,blob=true,venus=true' # VM を起動 $ qemu3d out.img