「俺はお仕着せのISOイメージは嫌だ。
普段使いれた環境をLiveCD化して使いたい」~
という方のためのOpenBSD LiveCD作成マニュアル
**要なもの [#e6164fdc]
- A) LiveCD作成作業用のOpenBSD 4.0動作環境
-- カーネルがコンパイルできること(コンパイラ、ソースツリーなどがあること)。
-- vnodeデバイスによるファイルイメージがマウントできること。要するに、コンパイル時に~
 pseudo-device   vnd     4       # paging to files
を指定して作成したカーネルを使っていること((GENERICカーネルであればOK))。
-- ports / packagesなどからcdrtoolsがインストールされ、cdrecordが使用可能であること。
- B) [[作成ツール>http://kaw.ath.cx/dl/pub/OpenBSD/LiveCD/tools/]]
- C) LiveCDのとなるOpenBSD 4.0動作環境 (つまりLiveCDに収録したいアプリや設定が作りこんである環境)
**作成手順 [#qd0a3c92]
上記の要なものをそろえる。作業は前項Aの環境を動作させ、
その上で作業を行なう。~
作業は root 権限で行う。
***ツールの展開 [#gea31d91]
起動したLiveCD作成作業用のOpenBSD上で作業用ディレクトリを作成し、
その中で作成ツール (tools-X.X.tar.gz) を展開する。
 tar xvzf tools-X.X.tar.gz
展開されたツールは以下のファイルツリー構成となっている;
 tools-X.X
   +-Makefile
   +-bsd
   +-bsd.orig
   +-cdroot.dist/
   |   +-->[LiveCDのとなる環境(前項のC)]
   +-lib/
   |   +-RDROOT
   |   +-cdboot
   |   +-cdbr
   |   +-elfrdsetroot.c
   |   +-rdsetroot
   +-rdroot.dist/
   |   +-->[rdroot.imgのマウント・ポイント]
   +-rdroot.img   [rdrootの実体]
   +-rdroot.orig/ [カーネルに組み込むルートイメージ]
       +-bin@ -> boottmp
       +-boottmp/
       |   +-init*  ksh*          ln*         login.conf
       |     mount* mount_cd9660* mount_ffs*  mount_mfs*
       |     rc*    sh*           sysctl*
       |
       +-cdrom/
       +-dev/
       |   +-MAKEDEV, (各種デバイスファイル)
       +-etc@  -> boottmp
       +-mfs/
       +-mnt/
       +-sbin@ -> boottmp
       +-tmp/
***カーネルを作る [#ya67bbbb]
LiveCD上で動作させるカーネルを作成する。
生成時に使用するカーネル構成ファイルは、RAM Diskデバイスをマウントできるよう、
以下の記述を加える。
 #config         bsd     swap generic   ←この行はコメントアウト
 
 option          RAMDISK_HOOKS
 option          MINIROOTSIZE=3800      ←rootファイルシステムのサイズ
 config          bsd     root on rd0a     (512バイト/ブロック)
> ~略~

 pseudo-device   rd              1       # ramdisk
標準のカーネル構成ファイルGENERICにこの変更を加えたものがlib/RDROOTなので、
これを参考にする。

あとは、通常のカーネルの生成と同様、
自分の用途に合せて構成ファイルの容を編集し、カーネルを生成。
この構成ファイルをMYRDとすると、以下のように操作;
 cd /usr/src/sys/arch/i386/conf
 vi MYRD
 config MYRD
 cd ../compile/MYRD
 make clean && make depend && make
出来たカーネルをbsd.origにコピーする。
***環境の作成 [#a05b0132]
LiveCDのとなるOpenBSD動作環境をcdroot以下にコピーする。
他のマシンからコピーする場合
 cd cdroot && ssh root@orig-host 'tar cpf - /' | tar xvpf -

このままでも動作には差し支えないはずだが、不要なファイルもあるので、
それらを消去する。
- /tmp/* に残っているゴミ
- /home 以下の個人的なファイル
- /var/log, /var/cron/log などのログファイル (単に消去すると、正常に動作しなくなるデーモンもあるので、ファイル長を0にする)
- /var/run 以下のPIDファイルなど
- ... etc

用途によっては、その他ユーザの個人報を特定されるファイルが残っていないかどうかにも注意が必要。
***ISOイメージの作成 [#kd6c1c87]
以下の何れかのコマンドを実行する。
 make livecd.iso  ... ISOイメージを livecd.iso という名前で作成
                      (CDへの書き込みは行なわない)
又は
 make cdburn      ... CD-Rを作成する(焼きこみ)
又は
 make cdrburn     ... CD-RWを作成する(CD-RWの初期化+焼きこみ)
***動作確認 [#g20d6261]
make cdburn / make cdrburn で実際にCDを作成した場合は、
当り前だが、そのCDでbootして動作を確かめる。

エミュレータを使用して、CDに焼かずにISOイメージを直接確認する方法もある。~
portsなどから、QEMUをインストールし、以下のようにエミュレータを起動する。
 qemu -localtime -m 128 -boot d -cdrom livecd.iso
動作PCの部時計がUTCの場合は、-localtimeは不要。また、-mオプションでは
使用メモリをメガバイト単位で指定する。
実ハードウェアの検証などが不要な場合(起動スクリプトの動作確認など)は、
この方法が便利。
**(参考) Makefileターゲット [#sb13cc7b]
Makeファイルには以下のターゲットが存在する;
:vnon|rdroot.imgをvnodeデバイス経由でrdrootにマウントする
:vnoff|rdrootをアンマウントし、vnodeデバイスを解放する
:bsd.rdcd|CD-ROM用のカーネルを作成する。~
(カーネルにルートファイルイメージを書込んだあとgzipで圧縮する)
:tree|CD-ROMのファイルツリーをセットアップする~
(カーネルやブートローダの追加などを行う)
:livecd.iso|ISOイメージを作成する
:cdburn|cdrecordを起動し、CD-R/CD-RWへの書込みを行う
:cdrclean|cdrecordを起動し、CD-RWの初期化を行う
:cdrburn|cdrecordを起動し、CD-RW初期化後、書込みを行う
----
[[FrontPage]]へ戻る


Front page   Edit Diff History Attach Copy Rename Reload   New Page list Search Recent changes   Help   RSS of recent changes