Debian Liveメモ
Debian Liveとは
Debianを利用した、ライブシステム作成フレームワークのlive-helperを用いて作成された、ハードディスクを使わないライブ起動するDebianです。
ライブの起動方法はCD/DVDだけではなく、USBメモリやネットワークブートで起動することも可能です。 live-helperなどのツールはDebianの公式サブプロジェクトのDebian Live Projectが制作しています。
本家はこちら
このページでは、その辺のことをなぐり書きしています。
ツールの説明
live-build(ex. live-helper)
live-build(とlive-boot/live-config)を使うと、Debianを使ったLive CD (DVD/USBメモリ/ネットワークイメージ) を作成できます。
live-boot/live-config(ex. live-initramfs)
live-helperを使って作成されたライブイメージに組み込まれる、ライブ起動補助の起動スクリプトです。live-initramfsはubuntuのcasperからフォークして作成されました。live-helper 2.xから完全に書き直されてlive-bootとlive-configに分けられました。
live-installer/live-install-launcher
live-installerはDebian Installer(d-i)を使ってDebian Liveの内容をインストールするd-iのモジュールです。live-install-launcherはd-iをライブ上から起動するユーティリティです。どちらも制作途中です。
ライブイメージなど
オープンソースカンファレンスなどで配布したDebian Liveのイメージを置いてます。
それぞれのイメージの説明については関西Debian勉強会のWikiを参照してください。
CD/DVDのイメージからUSBメモリの作成にはUNetBootinを使うと良いでしょう。
live-helperのレシピはgithubに置いてます。
詳しい作り方を知りたい人向けの資料はこちら
関西Debian勉強会で発表した文書が、関西Debian勉強会Wikiに置いているので、こちらをご覧ください。
FAQ
日本語が使える公式ライブイメージはありますか公式には配布してません。自分で作成するかDebian勉強会で配布したライブイメージをご利用ください。
Debian Live 2.0/3.0の変更点
live-helperとlive-initramfsががらっと変わってきているのでメモ。
live-helperのtodoはこのへん。
<del>live-helper</del>live-build
- 作成コマンドがlh_hogeという形式からlh hogeというアンダーバーを含まない形式に変更
1.xのときはlh_hogeという形で直接スクリプトを呼び出して使っていたのが、コマンド本体は/usr/share/live-helper/helpers/に移動し、lhコマンドからスクリプトを呼び出す形に変わりました。
- live-helperからlive-buildに名前が変わりました
これによってlhコマンドがlbコマンドに変わりました。
- オプションの有効/無効の指定がenabled/disabledからtrue/falseに変更
オプションの指定が変わりましたが、エラーが出ないので気をつけましょう。
- 自動化スクリプトの置き場がscriptディレクトリからautoディレクトリに移動
基本設定やクリーンアップスクリプトを置いていたscriptスクリプトディレクトリがautoディレクトリに変更されました。
- autoスクリプトからの呼び出しオプションがnoautoconfigからnoautoに変更
ループに入るので気がつくと思いますが、autoディレクトリのスクリプトからlive-helperを呼び出す際につけるオプションがnoautoconfigからnoautoに変わりました。
- パッケージのセクションを指定する–categoriesオプションが–archive-areasに変更
mainやcontribなどのパッケージセクションを指定する–categoriesオプションが–archive-areasに変わりました。
- パッケージリストの指定方法の変更
1.x系ではconfig/chroot_local-packageslists/にパッケージリストを置いて、–packages-listsオプションで置いたリストの名前を指定する方式でしたが、config/chroot_local-packageslists/にhoge.listという名前で置くだけで適用されるようになりました。
- –syslinux-menuオプションが増えた
menuとvesamenuの他にgfxbootもありますが中身が空っぽなのでこれから実装予定。
- live-initramfsパッケージがlive-bootとlive-configのパッケージに分かれました
initramfs内でliveシステムのブートやパッケージの設定をするスクリプト集のlive-initramfsが、ブート時のスクリプトlive-bootとそれ以外のシステム設定のlive-configの二つに分かれました。これにより以前の起動オプションは「boot=live」のみでしたが、「boot=live live-config」の二つが必要になり、このあとに必要なオプションを付け加えることになります。live-bootは従来のSystemV(init)だけでなく、systemdやupstart対応版もあります。
live-installerとlive-installer-launcher
live-installerはDebian Liveの内容をそのままDebian Installerからハードディスクにインストールします。 インストール作業としては、ハードディスクのパーティションを切って、rootのパスワードとユーザー名とパスワードを指定するだけなので、とても楽にDebianのインストールができます。
live-installer-launcherは、Debian Live上かDebian Installerを起動するもので、現在は動くだけの状態で、まともに使えませんが、使えるようになればubuntuやfedoraのようにLive上から手軽にインストールできるようになると思います。
Web上からDebian Liveが作成できます
http://live-helper.debian.net/ にアクセスして、liveの設定して、作成されたイメージ通知用のメールアドレスを入力すると、Web上からDebian Liveを作成できます。
ただ、2010年7月現在、live-helper 2.xが激変してる最中なので、きちんと作成するにはlive-helperで作成するときと同じ知識が必要になるのが欠点でしょうか。安定すれば変わると思うので、普通の人はしばらくの辛抱です。
Tips
apt-cacher-ngなどのキャッシュプロキシを利用する
apt-cacher-ngなどのパッケージキャッシュプロキシを利用している場合は、プロキシの設定をするとパッケージ取得が短縮されます。
lb config --apt-http-proxy http://localhost:3142/ --apt-ftp-proxy http://localhost:3142/
aptitudeのタスクを利用して日本語環境をインストールする
Debian Liveに日本語環境をインストールするとき、わざわざ日本語のパッケージリストを作っていましたが、aptitudeのタスクを利用すればリストを作る必要はありません。
$ lb config --tasksel aptitude --tasks "japanese japanese-desktop"
このようにすると日本語環境もインストールできます。
指定できるタスクの一覧はtasksel-dataパッケージに入っているdebian-tasks.desc(/usr/share/tasksel/debian-tasks.desc)に書かれています。
ネットワーク越しに起動するDebian Liveをつくる
PXEブートでネットワーク越しに起動するDebian Liveを作ります。
Debian Liveのイメージを置くサーバーの設定は、ネットワーク越しにDebianインストーラを起動する設定とほぼ同じなので参考にしてください。
- 4.5. TFTP ネットブート用ファイルの準備: http://www.debian.org/releases/testing/i386/ch04s05.html.ja
Debian Liveの作成
基本的には通常のDebian Live作成と変わりませんがバイナリイメージタイプにnet、イメージを置く母艦サーバーのアドレス–net-root-serverとパス–net-root-pathを指定して作成します。
$ lb config -b net --net-root-server "192.168.0.3" --net-root-path "/srv/debian-live"
ビルドするとbinary-net.tar.gzというアーカイブファイルができます。
サーバーの設定
母艦となるサーバーの設定です。起動させるにはdhcpとtftp、nfsが必要になります。
インストール
# aptitude install dhcp3-server tftpd-hpa nfs-kernel-server
dhcpサーバーの設定
/etc/dhcp/dhcpd.confにdhcpの範囲などを書く
# option definitions common to all supported networks... option domain-name "nofuture.tv"; ← ドメイン名を書く option domain-name-servers 192.168.0.1, 192.168.0.100; ← ネームサーバーを書く subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.51 192.168.0.61 ; ← レンジは192.168.0.51から192.168.0.61 option routers 192.168.0.100; ← ゲートウェイを書く } host tftpclient { hardware ethernet 00:0f:1f:13:e0:1f; ← ブートさせたいマシンのMACアドレスを書く filename "pxelinux.0"; ← Debian Installerのファイル名 }
/etc/default/isc-dhcp-serverにdhcpサーバーに使うインターフェース名を書く。
INTERFACES="eth0" ←インターフェース名を書く
再起動する
# service isc-dhcp-server restart
tftpの設定
/etc/default/tftpd-hpaの設定を変更します。
TFTP_DIRECTORY="/srv/tftpboot" ← デフォルトでは"/srv/tftp"になっているのを変更
作成したDebian Liveのイメージbinary-net.tar.gzを/srv以下に展開します。
# cd /srv/ # tar xvfj binary-net.tar.gz
tftpdを再起動します
# service tftp-hpa restart
nfsの設定
NFSはPXEブートでカーネル起動後に、Debian Liveイメージ本体をマウントするために必要になります。
/etc/exportsに以下の設定を書きます。
/srv/debian-live *(ro,async,no_root_squash,no_subtree_check)
設定を反映させます。
# exportfs -rv
クライアントマシンの設定
BIOSの設定をネットワークブートするように変更します。
トラブルシュート
- PXEブートしたときdhcpでアドレスが取れているか確認。
- dhcpd.confにPXEブートさせたいファイル名はtftpのルートから書く。 × filename “/srv/tftp/pxelinux.0” ○ filename “pxelinux.0”
- /etc/default/isc-dhcp-serverはデフォルトでは空になっているので、きちんとインターフェース名を書く。
- カーネル起動後に起動しないときは、NFSの設定を見直す。
live-helperを使ってubuntu liveを作る(2009/09/03)
(2010/07/19追記) live-helperを使ったubuntuのライブシステム作成は、のがたがgihyo.jpで書いた記事が参考になると思います。
しばらく前から、ubuntuの人がDebian Live MLにパッチを投げてて、作れるようになってたのでメモ。
作業用ディレクトリを作る
live-helperは設定ファイルやディレクトリをカレントディレクトリに作ってくれるので、専用の作業ディレクトリを作って、そこで作業をするのがよいかと思います。
$ mkdir ubuntu-live $ cd ubuntu-live/
live-helperのlh_configコマンドで設定する。
ここがキモですね。 lh_configコマンドはライブシステムの設定をおこなうコマンドですが、–modeオプションにubuntuと指定することでubuntu liveが作成されます。
$ lh_config \ --mode ubuntu \ --binary-images iso \ --bootappend-live "quiet splash tz=Asia/Tokyo utc=no -- debian-installer/language=ja console-setup/layoutcode?=jp console-setup/modelcode?=jp106" \ --bootloader grub \ --language ja \ --mirror-binary "http://ubuntutym.u-toyama.ac.jp/ubuntu/" \ --mirror-binary-security "http://security.ubuntu.com/ubuntu/" \ --mirror-bootstrap "http://ubuntutym.u-toyama.ac.jp/ubuntu/" \ --mirror-chroot "http://ubuntutym.u-toyama.ac.jp/ubuntu/" \ --mirror-chroot-security "http://security.ubuntu.com/ubuntu/" \ --packages "ubuntu-desktop ubuntu-minimal ubuntu-standard language-pack-ja language-support-ja language-pack-gnome-ja ubiquity"
ライブシステムを作成する
lh_buildコマンドを実行すれば作成作業が始まります。マシンの早さや作成するライブシステムの規模にもよりますが、30分から1時間程度かかります。
$ sudo lh_build
完成
lh_buildを実行したディレクトリにbinary.isoという名前のファイルがライブシステムのイメージです。
カスタムカーネル入りDebian Liveを作る簡単な方法(2008/10/16)
以前、推測していたことは正しかったらしく、確認してみるとカスタムカーネル入りDebian Liveを作成することができました。
- linux-image-2.6.26.6-rt11_20081016.1_i386.deb
- aufs-modules-2.6.26.6-rt11_0+20080719-4+20081016.1_i386.deb
- squashfs-modules-2.6.26.6-rt11_3.3-7+20081016.1_i386.deb
を使う場合、まず、config/chroot_local-packages/ ディレクトリにカスタムカーネルのパッケージとaufs, squashfsのモジュールパッケージを置きます。
次に設定を変更します。 LH_LINUX_PACKAGESにnone、LH_PACKAGESはインストールするパッケージ名、rtパッチを当てたカーネルなどを使う場合はカーネル名以下にrt11のようにsuffixがついているので、LH_LINUX_FLAVOURSに指定しておきます。
$ lh_config --linux-packages "none" --linux-packages "linux-image-2.6.26.6-rt11 aufs-modules-2.6.26.6-rt11 squashfs-modules-2.6.26.6-rt11" --linux-flavours "rt11"
もしくはconfig/chroot の以下の箇所を変更します。
# $LH_LINUX_FLAVOURS: set kernel flavour to use # (Default: autodetected) LH_LINUX_FLAVOURS="rt11" # $LH_LINUX_PACKAGES: set kernel packages to use # (Default: autodetected) LH_LINUX_PACKAGES="none" # $LH_PACKAGES: set packages to install # (Default: empty) LH_PACKAGES="linux-image-2.6.26.6-rt11 aufs-modules-2.6.26.6-rt11 squashfs-modules-2.6.26.6-rt11"
これでlh_buildすればカスタムカーネルが使われます。