live-buildはDebian公式のスクリプト集。これを利用して自分好みのパッケージをインストールしたり、設定を変更したりしたISOを作ることができる(USBに書き込めばLive USBになる)。
手順
1. live-buildのインストール、作業ディレクトリの作成
sudo apt install live-build mkdir live-build cd live-build
2. 前準備
lb config --distribution bookworm --architecture amd64 --archive-areas"main contrib non-free non-free-firmware"--bootappend-live"boot=live components locales=ja_JP.UTF-8 keyboard-layouts=jp"
このコマンドで、カレントディレクトリ下に必要なディレクトリやファイルが作成される(オプションについては後述)。
3. カスタム
この段階で、好みでパッケージを追加したり設定を変更したりする。上のコマンドで作成された
config/
が設定用ディレクトリで、基本的にここで設定の変更を行うことになる。パッケージの追加
基本的には、config/package-lists/
下にテキストファイルを作成し、インストールしたいパッケージ名を一行ずつ書いていけばよい。テキストファイルの末尾には.list.chroot
をつける。(GUI(XFCE)、ネットワークマネージャ、フォント、日本語入力を追加した一例)
config/package-lists/custom-packages.list.chroot
xfce4 xfce4-goodies lightdm network-manager fonts-noto fcitx5 fcitx5-mozc
また、以下の一行でシステムの基本パッケージがインストールされる。必須ではないが、指定しておいたほうが良い。config/package-lists/standard-packages.list.chroot
! Packages Priority standard
また、Debianのレポジトリにないパッケージをインストールしたい場合、config/packages.chroot/の下に.debファイルを置いてもインストールされる。この場合、.debファイルは命名規則に従っている必要があるので注意すること(従っていない場合、そのファイルに対してdpkg-name
コマンドをオプションなしで実行することで正しい名前に変換される)。
ファイルの追加
基本的には、config/includes.chroot_after_packages/
下に置いておけばよい。((マニュアルにはconfig/includes.chroot/
と書いてあるのだが、現在はconfig/includes.chroot_before_packages/
とconfig/includes.chroot_after_packages/
に分離されている))ディレクトリ構造が保存されるので、配置したい場所に置いておく。(たとえば、
config/includes.croot_after_packages/var/www/
下に置いたファイルは、作成されたlive OSの/var/www/
下に配置される )単体ファイルで動く移植性のあるプログラムなら、
config/includes.croot_after_packages/usr/local/bin/
に実行ファイルを置いてインストールすることも可能。注意点として、ログインユーザーはこの時点ではまだ作成されていないという点には気をつけること(ブート時に作成される)。ユーザーのホームディレクトリに置きたいファイルは、
config/includes.chroot_after_packages/etc/skel/
下に配置しておけばユーザー作成時にコピーされる。フックの追加
config/hooks/live/
下にスクリプトを置いておけば、ビルド時に実行される(パッケージのインストール後に実行されるので、パッケージの設定の変更なども可能)。ファイル名の末尾は.hook.chrootとし、ファイルに実行権限が必要。4. ビルド
sudo lb build
lb config
を実行したのと同じディレクトリから実行すること。
特に問題が発生しなければ、これでISOなどのファイルが作成される。
デフォルトのユーザ名は「user」、デフォルトのパスワードは「live」に設定される。
その他
ビルド前に戻る
sudo lb clean
これでsudo lb build
で生成された諸々を片付けてくれる(ダウンロードしたパッケージのキャッシュは残す)。カスタムしたconfig/下の変更は消えない。
lb cleanの実行後はlb configを再度実行すること。
キャッシュも消したいなら、
sudo lb clean --purge
lb configのオプションについて
(上で実行したコマンド)lb config --distribution bookworm --architecture amd64 --archive-areas"main contrib non-free non-free-firmware"--bootappend-live"boot=live components locales=ja_JP.UTF-8 keyboard-layouts=jp"
・--distribution bookworm
Debianのバージョン指定。
・--architecture amd64
アーキテクチャ。
・--archive-areas "main contrib non-free non-free-firmware"
Debianでは、ライセンスの都合でレポジトリが分かれている。デフォルトではmainからしかダウンロードできないのだが、これではノートPCのWi-Fiなどが使えないなど、不便なことが起こる可能性が高いので、contrib、non-free、non-free-firmwareまで追加しておく(Debianの哲学には反しているが……)
・--bootappend-live "boot=live components locales=ja_JP.UTF-8 keyboard-layouts=jp splash quiet"
--bootappend-liveオプションで、パラメータが指定できる。boot=live components
は必須で、それに続けて調整したいパラメータを指定する。ここではキーボードレイアウトとロケールを日本向けに変更してみた。(ちなみにこれは起動時にブートローダからカーネルに渡されるパラメータで、起動後にcat /proc/cmdline
で確認することができる。splashやquietを渡せるのもそのため)
※パッケージダウンロードのミラーを指定することもできる。ビルド時のミラーを変更するときは、--mirror-bootstrap URL
と--mirror-chroot-security URL
、ISO内のミラーを変更するときは--mirror-binary URL
と--mirror-binary-security URL
で指定する。
注意点
試してみたとき、依存関係やキャッシュの関係でsudo lb build
の実行が何度も失敗した。全部消してやりなおしてみたら上手く行ったので、困ったらsudo lb clean --purge
を実行してみると良いかもしれない。参考リンク
・公式ドキュメント(日本語)https://live-team.pages.debian.net/live-manual/html/live-manual/toc.ja.html
5章〜12章。かなり詳しく解説されているのでまず目を通すべき。
・その他
自分だけの Linux Liveイメージを作る - QG Tech Blog
Debian Live Build を使用したカスタムインストールISOの作成 - 気まぐれ気紛れ草紙