「俺はお仕着せのISOイメージは嫌だ。 普段使い慣れた環境をLiveCD化して使いたい」
という方のためのOpenBSD LiveCD作成マニュアル

必要なもの

  • A) LiveCD作成作業用のOpenBSD 4.0動作環境
    • カーネルがコンパイルできること(コンパイラ、ソースツリーなどがあること)。
    • vnodeデバイスによるファイルイメージがマウントできること。要するに、コンパイル時に
      pseudo-device   vnd     4       # paging to files
      を指定して作成したカーネルを使っていること*1
    • ports / packagesなどからcdrtoolsがインストールされ、cdrecordが使用可能であること。
  • B) 作成ツール
  • C) LiveCDの元となるOpenBSD 4.0動作環境 (つまりLiveCDに収録したいアプリや設定が作りこんである環境)

作成手順

上記の必要なものをそろえる。作業は前項Aの環境を動作させ、 その上で作業を行なう。
作業は root 権限で行う。

ツールの展開

起動した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/

カーネルを作る

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にコピーする。

環境の作成

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イメージの作成

以下の何れかのコマンドを実行する。

make livecd.iso  ... ISOイメージを livecd.iso という名前で作成
                     (CDへの書き込みは行なわない)

又は

make cdburn      ... CD-Rを作成する(焼きこみ)

又は

make cdrburn     ... CD-RWを作成する(CD-RWの初期化+焼きこみ)

動作確認

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ターゲット

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?へ戻る



*1 GENERICカーネルであればOK
Reload  New Edit Freeze Diff Attach Copy Rename  Top Index Search Recent Backups  Help  RSS
Last-modified: 2007-01-16 (Tue) 08:53:24 (4350d)