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勉強会で配布したライブイメージをご利用ください。

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)に書かれています。

PXEブートでネットワーク越しに起動するDebian Liveを作ります。

Debian Liveのイメージを置くサーバーの設定は、ネットワーク越しにDebianインストーラを起動する設定とほぼ同じなので参考にしてください。

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の設定を見直す。

(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を作成することができました。

  • 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_PACKAGESnoneLH_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すればカスタムカーネルが使われます。