Live manual Debian Live

# Debian Live Manual

# 実行時の挙動の独自化

552

# 10. 実行時の挙動の独自化

553

実行時に行われる設定は全て live-config により行われます。ユーザが関心を持つであろう live-config の最も一般的なオプションから一部を説明します。オプションの全容は live-config の man ページにあります。

554

10.1 live ユーザの独自化

555

重要な検討事項が1つあり、live ユーザはブート時に live-boot により作成され、ビルド時に live-build により作成されるのではないということです。この影響は Live/chroot ローカルインクルード で説明しているように、ビルドで live ユーザに関連する内容が導入されるところだけにはとどまらず、live ユーザに関連するグループや権限にも影響します。

556

You can specify additional groups that the live user will belong to by using any of the possibilities to configure live-config. For example, to add the live user to the `fuse` group, you can either add the following file in `config/includes.chroot/etc/live/config.conf.d/10-user-setup.conf`:

557

LIVE_USER_DEFAULT_GROUPS="audio cdrom dip floppy video plugdev netdev powerdev scanner bluetooth fuse"

558

を追加するかブートパラメータとして `live-config.user-default-groups=audio,cdrom,dip,floppy,video,plugdev,netdev,powerdev,scanner,bluetooth,fuse` と指定します。

559

デフォルトのユーザ名「user」やデフォルトのパスワード「live」を変更することもできます。何らかの理由で変更したい場合は以下のようにして簡単に変更できます:

560

デフォルトのユーザ名を変更するには単に設定で指定します:

561

$ lb config --bootappend-live "boot=live components username=live-user"

562

デフォルトのパスワードを変更できる1つの方法は ブート時フック で説明しているフックを使います。そのためには `/usr/share/doc/live-config/examples/hooks` から「passwd」を使い、適当な名前 (例えば 2000-passwd) で保存してそれを `config/includes.chroot/lib/live/config/` に追加します。

563

10.2 ロケールと言語の独自化

564

Live システムがブートする際、2つの段階で言語が関わってきます:

565

- ロケール生成

566

- キーボードの設定

567

Live システムをビルドする際のデフォルトのロケールは `locales=en_US.UTF-8` となっています。生成したいロケールの定義には `lb config` の `--bootappend-live` オプションで `locales` パラメータを指定します。例えば

568

$ lb config --bootappend-live "boot=live components locales=de_CH.UTF-8"

569

ロケールをコンマで区切って複数指定することもできます。

570

このパラメータも以下に示すキーボード設定用パラメータと同様にカーネルコマンドラインで指定できます。ロケールは `言語_国` (デフォルトのエンコーディングを使う場合) または完全な `言語_国.エンコーディング` の形式で指定できます。サポートしているロケールやそれぞれで利用されるエンコーディングの一覧は `/usr/share/i18n/SUPPORTED` にあります。

571

コンソールとXキーボードの設定はどちらも `live-config` により `console-setup` パッケージを使って行われます。設定には `--bootappend-live` オプション経由で `keyboard-layouts`、`keyboard-variants`、`keyboard-options`、`keyboard-model` ブートパラメータを利用します。それぞれの有効なオプションは `/usr/share/X11/xkb/rules/base.lst` にあります。ある言語向けのレイアウトや配列を見つけるには、その言語の英語名やその言語が話されている国を検索してみてください。例:

572

$ egrep -i '(^!|german.*switzerland)' /usr/share/X11/xkb/rules/base.lst
! model
! layout
ch German (Switzerland)
! variant
legacy ch: German (Switzerland, legacy)
de_nodeadkeys ch: German (Switzerland, eliminate dead keys)
de_sundeadkeys ch: German (Switzerland, Sun dead keys)
de_mac ch: German (Switzerland, Macintosh)
! option

573

それぞれの配列の説明に、適合するレイアウトが示されていることに注意してください。

574

レイアウトだけを設定する必要があることはよくあります。例えばXで利用するドイツ語のロケールファイル及びスイスのドイツ語のキーボードレイアウトを利用する場合:

575

$ lb config --bootappend-live "boot=live components locales=de_CH.UTF-8 keyboard-layouts=ch"

576

非常に具体的な事例ですが他のパラメータを同時に指定することもできます。例えばフランス語のシステムを用意して TypeMatrix EZ-Reach 2030 USB キーボードで (Bepo と呼ばれる) フランス語用の Dvorak 配置を使う場合:

577

$ lb config --bootappend-live \
"boot=live components locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-variants=bepo keyboard-model=tm2030usb"

578

値を1つだけ受け付ける `keyboard-model` は例外ですが、他の `keyboard-*` オプションではそれぞれに値をコンマで区切って複数指定することもできます。`XKBMODEL` や `XKBLAYOUT`、`XKBVARIANT`、`XKBOPTIONS` 変数の詳細や例については `keyboard(5)` man ページを見てください。`keyboard-variants` に複数の値を指定した場合、1つずつ `keyboard-layouts` の値 (`setxkbmap(1)` の `-variant` オプション参照) との照合が行われます。空白の値も使えます。例えばデフォルトとして米国向けの QWERTY、それとは別に米国向けの Dvorak、の2つの配列を指定する場合:

579

$ lb config --bootappend-live \
"boot=live components keyboard-layouts=us,us keyboard-variants=,dvorak"

580

10.3 保持機能

581

典型的なライブCDというものは CD-ROM 等の読み取り専用メディアから起動するインストール済みシステムで、書き込みや変更は起動したホストハードウェアの再起動により消え去ります。

582

Live システムはそれを一般化したものであり、CD以外のメディアもサポートしますが、デフォルトの挙動としては読み取り専用であり、そのシステムで実行時に行ったことは全てシャットダウンにより失われるものだと考えるべきです。

583

「保持機能」というのは、実行時にシステムに行ったことの一部あるいは全てを保存し、リブート後に引き継ぐための様々な策の共通の呼び名です。それが機能する仕組みを理解するためには、読み取り専用メディアからブート、実行している場合でもファイルやディレクトリへの変更が書き込み可能メディア、標準的にはRAMディスク (tmpfs) に書かれ、RAMディスクのデータはリブート後には残らないのだ、ということを知っておくと良いでしょう。

584

このRAMディスクに保存されるデータは、ローカルストレージメディアやネットワーク共有、あるいはマルチセッションで (再)書き込み可能な CD/DVD のセッション等の書き込み可能な保持用メディアに保存する必要があります。こういったメディアは Live システムで様々な方法でサポートされています。また、特別なブートパラメータ `persistence` をブート時に指定する必要があるということも重要です。

585

ブートパラメータ `persistence` がセットされている (と同時に `nopersistence` がセットされていない) 場合、保持用ボリューム用のローカルストレージメディア (例えばハードディスクやUSBドライブ) がブート中に調査されます。live-boot(7) man ページで説明している特定のブートパラメータを指定することにより、利用する保持用ボリュームの種類を制限できます。保持用ボリュームは以下のどれかになります:

586

- GPT名により識別されるパーティション

587

- ファイルシステムラベルにより識別されるファイルシステム

588

- 読み取り可能な任意のファイルシステム (異質のOSの NTFS パーティションも利用可) の最上位に置かれている、ファイル名により識別されるイメージファイル

589

オーバーレイ用のボリュームラベルは `persistence` でないといけません。さらにその最上位に、ボリュームの保持を完全に制御するのに利用する `persistence.conf` というファイルが置かれていない限り無視されます。これは言うに及ばず、リブート後に保持用ボリュームに保存する対象となるディレクトリを指定します。さらなる詳細については persistence.conf ファイル を見てください。

590

保持用に利用するボリュームを用意する方法についていくつか例を示します。これは例えばハードディスクやUSBメモリに例えば

591

# mkfs.ext4 -L persistence /dev/sdb1

592

により作成した ext4 パーティションを利用できます。 USBメモリの空きスペースの利用 も見てください。

593

デバイスに既存のパーティションがある場合は以下に示すどれかによりラベルを変更するだけで準備は終わりです:

594

# tune2fs -L persistence /dev/sdb1 # for ext2,3,4 filesystems

595

保持用に利用する ext4 ベースのイメージファイルの作成例:

596

$ dd if=/dev/null of=persistence bs=1 count=0 seek=1G # for a 1GB sized image file
$ /sbin/mkfs.ext4 -F persistence

597

イメージファイル作成後、例えば `/usr` を保持させる場合に、保存するのはディレクトリに対する変更だけで、`/usr` の内容を丸ごと保存したいわけではない、という場合、「union」オプションを利用できます。イメージファイルがホームディレクトリに置かれている場合はハードドライブのファイルシステム最上位にコピーして `/mnt` にマウントします:

598

# cp persistence /
# mount -t ext4 /persistence /mnt

599

それから、内容を追加する `persistence.conf` ファイルを作成してイメージファイルのマウントを解除します。

600

# echo "/usr union" >> /mnt/persistence.conf
# umount /mnt

601

ブートパラメータ「persistence」を指定して Live メディアでリブートします。

602

10.3.1 persistence.conf ファイル

603

`persistence` のラベルを付けられたボリュームは `persistence.conf` ファイルを使って、任意のディレクトリを保持するように設定します。ボリュームのファイルシステム最上位に置かれているこのファイルは保持するディレクトリや方法を制御します。

604

独自のオーバーレイマウントの設定方法は persistence.conf(5) man ページで詳細に説明されていますが、ほとんどの場合簡単な例で十分なはずです。/dev/sdb1 パーティションの ext4 ファイルシステムにホームディレクトリとAPTキャッシュを保持させる場合:

605

# mkfs.ext4 -L persistence /dev/sdb1
# mount -t ext4 /dev/sdb1 /mnt
# echo "/home" >> /mnt/persistence.conf
# echo "/var/cache/apt" >> /mnt/persistence.conf
# umount /mnt

606

それからリブートします。最初のブート中に `/home` と `/var/cache/apt` の内容が保持用ボリュームにコピーされ、以後のこのディレクトリへの変更は全て保持用ボリュームに残ります。`persistence.conf` ファイルに列挙するパスには空白文字や特別なパス構成要素 `.` and `..` を含めることは一切できないことに注意してください。また、`/lib` や `/lib/live` (はそのサブディレクトリを含めて)、`/` は独自マウントを使って保持させることができません。この制約の回避策として、`persistence.conf` ファイルに `/ union` を追加すると完全な保持を実現できます。

607

10.3.2 保持先を複数使いたい場合

608

複数の保存先を使う方法は複数あります。目的の明確な例として、複数のボリュームを同時に使う場合と1つだけを選択して使う場合を取り上げます。

609

異なる (個別の `persistence.conf` ファイルを利用する) 独自オーバーレイボリュームを複数同時に利用できますが、同一のディレクトリを保持させる設定のボリュームが複数ある場合はその中から1つだけが利用されます。ある2つのマウントが「入り組んでいる」(つまり他にマウントしたディレクトリ以下のサブディレクトリとしてマウントする) ような場合には子孫側ディレクトリよりも前に親側ディレクトリがマウントされるため、他のマウントにより見えなくなるマウントは発生しません。入り組んでいる独自マウントが同一の `persistence.conf` ファイルで指定されている場合は問題があります。そういった状況が実際に必要な場合の処理方法については persistence.conf(5) man ページを見てください (ヒント: 通常は必要ありません)。

610

ありそうな事例: ユーザデータ、つまり `/home` とスーパーユーザのデータ、つまり `/root` を異なるパーティションに保存するため `persistence` ラベルの付いたパーティションを2つ作成し、それぞれに `persistence.conf` ファイルを1つはユーザのファイルを保存する最初のパーティション向けに `# echo "/home" > persistence.conf`、もう1つはスーパーユーザのファイルを保存する2つ目のパーティション向けに `# echo "/root" > persistence.conf` として作成します。最後に、ブートパラメータとして `persistence` を使います。

611

別の位置やテストのために例えば `private` と `work` のようにして同一の種類で複数の保持先が必要な場合、ブートパラメータ `persistence` と合わせてブートパラメータ `persistence-label` を使うと、複数でそれぞれ一意となる保持用メディアを使えるようになります。例として、ブラウザのブックマークその他の個人用データ用に `private` のラベルを付けられた保持用パーティションを使いたい場合、ブートパラメータとして `persistence` `persistence-label=private` を使います。そして文書や研究プロジェクトその他の仕事関係のデータ用にはブートパラメータとして `persistence` `persistence-label=work` を使います。

612

各ボリューム `private` 及び `work` にはそれぞれ最上位に `persistence.conf` ファイルが必要だということは重要ですので覚えておいてください。古い名前でこういったラベルを使う方法についてさらなる情報が live-boot man ページにあります。

613

10.3.3 暗号化した保持先の利用

614

保持機能を使うことには重要なデータが漏洩する危険がいくらか存在します。特に保持するデータがUSBメモリや外付ハードドライブ等のポータブル機器に保存される場合は。そういった場合には暗号化が便利です。手順が多いために全体として複雑に見えるかもしれませんが、live-boot で暗号化したパーティションを扱うのは実際には簡単です。サポートしている luks という種類の暗号化を利用するためには、暗号化したパーティションを作成する側と暗号化した保持用パーティションを利用する Live システムの両方のマシンに cryptsetup をインストールする必要があります。

615

マシンへの cryptsetup のインストール:

616

# apt-get install cryptsetup

617

Live システムに cryptsetup をインストールするには、パッケージ一覧に追加します:

618

$ lb config
$ echo "cryptsetup cryptsetup-initramfs" > config/package-lists/encryption.list.chroot

619

cryptsetup を備えた Live システムが出来たら、基本的に必要なのは新しいパーティションを作成して暗号化し、`persistence` と `persistence-encryption=luks` パラメータを指定してブートするだけです。既にこの段階を予測し、通常の手順に沿ったブートパラメータを追加してあります:

620

$ lb config --bootappend-live "boot=live components persistence persistence-encryption=luks"

621

暗号化についてよく理解していない人たちのために詳細を見て行きましょう。以下の例では `/dev/sdc2` に対応するUSBメモリ上のパーティションを利用します。自分で使う際にはどのパーティションになるのか判断する必要があることに注意してください。

622

最初の段階はUSBメモリを接続してそれがどのデバイスになるのか判断することです。live-manual で推奨するデバイス一覧方法では `ls -l /dev/disk/by-id` を使います。それから新しいパーティションを作成、さらにパスフレーズを使って暗号化します:

623

# cryptsetup --verify-passphrase luksFormat /dev/sdc2

624

仮想デバイスマッパーから luks パーティションを開きます。好きな名前を使ってください。ここでは例として live を使います:

625

# cryptsetup luksOpen /dev/sdc2 live

626

次の段階はファイルシステムを作成する前にデバイスをゼロで埋めることです:

627

# dd if=/dev/zero of=/dev/mapper/live

628

これでファイルシステムを作成する準備ができました。ラベル `persistence` の指定を追加しているためこのデバイスはブート時に保持用としてマウントされるということに注意してください。

629

# mkfs.ext4 -L persistence /dev/mapper/live

630

準備を続けるにはデバイスをマウントする必要があります。例として `/mnt` にマウントします。

631

# mount /dev/mapper/live /mnt

632

そしてパーティション最上位に `persistence.conf` ファイルを作成します。これは前に説明したように必ず必要です。 persistence.conf ファイル を見てください。

633

# echo "/ union" > /mnt/persistence.conf

634

それからマウントポイントのマウントを解除します:

635

# umount /mnt

636

オプションですがパーティションに追加したばかりのデータを安全にしておくと良いでしょう。デバイスを閉じます:

637

# cryptsetup luksClose live

638

手順をまとめます。これまでに、暗号化を有効化した Live システムを作成しました。これは ISO hybrid イメージのUSBメモリへのコピー で説明しているようにUSBメモリにコピーできます。暗号化したパーティションも作成しました。これは同一のUSBメモリに置いて持ち運べます。保持先として利用する暗号化パーティションを設定しました。あと必要なのは Live システムをブートするだけです。ブート時に live-boot は保持用として利用する暗号化したパーティションのパスフレーズを質問し、マウントします。