OpenBSD LiveCDはCD-ROM単体で運用することができますが、電源を切ると mfs (メモリファイルシステム) 上のデータはすべて消えてしまいます。また、ネットワークなどの設定値は、起動時に毎回手で入力する必要があります。 そのような不便を解消するため、OpenBSD LiveCDでは、各種設定値やホームディレクトリ上のデータなどをUSBメモリに保存し、次回ブート時に復帰させる機能を持っています。 ---- #contents *USB flashの初期化 [#y3341308] +LiveCDを立ち上げ、rootでログイン。~ (以下、USB flashが/dev/sd0として認識されているとして説明) +fdiskを実行 # fdisk -e sd0 >(註)USB flashによっては、BIOSからディスクジオメトリ情報を取得できず、その結果、fdiskが正常に実行できない場合がある。そのときはシリンダ/ヘッド/セクタの各数値を明示的に指定してfdiskを実行すればよい。例えばdmesgの出力から、目的のUSB flashがデバイスsd0でサイズが248MBと認識されていたとすると以下のようになる; # fdisk -c 248 -h 64 -s 16 -e sd0 決め打ちでヘッド数を64, 1トラックあたりのセクタ数を16とすれば、1セクタ当たり512バイトであるから、~ ''64 * 16 * 512 = 1024 * 1024''~ なので1トラックあたり丁度1メガバイトとなる。よってメガバイト単位での容量をシリンダ数として指定すれば良い(上の例の''-c 248'')ことになる。 < これ以降はHDDなどへの通常のパーティション/ファイルシステム作成と同じ。 +fdiskパーティションとしてOpenBSD (ID=0xA6)確保。 +disklabelを使って ''aパーティション'' を確保。 # disklabel -E sd0 +aパーティションをフォーマットする。 # newfs -b 4096 -f 512 -i 1024 /dev/rsd0a 保存内容としてはシンボリックリンクやサイズの小さなファイルが多数含まれるため、ブロック/フラグメントサイズを最小にし、iノードの数も多めに設定。 +保存用ディレクトリを作成 # mount /dev/sd0a /mnt # mkdir /mnt/livecd-config # umount /dev/sd0a 以上で保存メディアの初期化は終了。 *保存データの作成 [#j0bbb5be] +USB flashに保存するデータのメンテナンスは、/boottmp/usbfadm というスクリプトを使用する。 # /boottmp/usbfadm Welcome to USB flash maintenance tool. Boot mode: manual Type ? for help. ?:? -> +rescanコマンドを使用してUSB flashを認識させる ?:? -> rescan Rescanning USB flash Please make sure the device inserted. Then press ENTER --> USB flash memory found as sd0 +dsnコマンドを使用して保存するデータに名前を付ける。保存対象は、/mfs以下の全てのファイルなので、/etc以下の設定ファイルや/home以下のユーザデータなどが含まれる。~ 名前を省略した場合、ホスト名がデフォルトの名前として使用される。 /dev/sd0a:? -> dsn Enter data set name [nimbus5.localnet] -> emgproxy Now data set name is set to ``emgproxy''. +syncコマンドを実行し、データ保存を実行する。 /dev/sd0a:emgproxy -> sync Sync current mfs as emgproxy, OK? -> y building file list ... done created directory /mnt/livecd-config/emgproxy ./ etc/ etc/bgpd.conf etc/boot.conf : : var/yp/Makefile.yp var/yp/Makefile.yp.dist var/yp/README sent 16455591 bytes received 232568 bytes 180412.53 bytes/sec total size is 15492096 speedup is 0.93 +infoコマンドで、保存されたデータの情報を表示させ、確認してみる。 /dev/sd0a:emgproxy -> info Filesystem Size Used Avail Capacity Mounted on /dev/sd0a 218M 18.9M 179M 9.6% /mnt scanning... 18.9M emgproxy +データが無事に保存されているようなので、終了。 /dev/sd0a:emgproxy -> bye # *データの復帰 [#aeabe7fe] 保存したデータの復帰は、ブート時に行われる。 ブート方法の選択で''1: with user data''を選択 Select boot method; 0: manual setup (CD-ROM only) 1: with user data (copy from USB flash) -->1 USB flash memory found as sd0 avairable configs; emgproxy your config name? -> emgproxy Copying files from flash to mfs ... done 保存したデータ名を指定すると、退避させていたデータを復帰したあと、ブートが続行される。各種パラメータ等もすべて設定済みであるため、manual modeと違い、設定の入力は促されない。 *データの退避 [#x10d6dfc] ブート後、任意の時点でデータを退避させることができる。データの退避は「保存データの作成」と同様 /boottmp/usbfadm コマンドで行う。データを退避させる場合は、新規保存の場合と比べ、以下の点が異なる; -変更があったファイルのみ保存が行われる。 -/mfs上のファイルを消去した場合、USB flash上のファイルも消去される。 -デバイス名と保存データ名称はあらかじめわかっているので設定する必要はなく、いきなりsyncコマンドを実行してよい。 -別名を付けて保存する場合はdsnコマンドで名前設定後、syncを実行。 また、シャットダウン時、退避は自動的には行われないので、手動で実行する必要がある。