EBUGの原稿
*OpenBSDでLive CDをつくる [#t51994f1]
**Why OpenBSD?, Why Live CD? [#e2ba0579]
-Other BSD / Linux では?
--Linuxでも昔1FDとかいじっていた ... 1FD Linux 作成キットとして公開(( http://www.on.rim.or.jp/~kaw/fdlinux/ ))
--一番慣れたBSD → make build / make releaseが昂じてやってみたくなった
--OpenBSDには定番がない
---Linux ... FrozenTech's LiveCD List によると295種類
---FreeBSD ... FreeSBIE
---NetBSD ... pkgsrc - sysutils/mklivecd
---以前 OpenBSD を使った 1CD snortがあったがobsolete
// -Live CDの利点
// --利用の容易さ
**Boot手順の概要 [#e2b049ba]
// |BIOS|
// CENTER:↓
// ||HDD|FD|CD|
// |boot&br;sector|MBR|1st sector|El-Torito|
// |1st stage&br;boot|PBR(biosboot)|biosboot|cdbr|
// |2nd stage&br;boot|/boot|/boot|/cdboot|
// CENTER:↓
// |kernel|/bsd|
// |~|mount root fs|
// CENTER:↓
// |user&br;land|/sbin/init|
// |~|/etc/rc|
// |~|(fork gettys, etc...)|
>~
#ref(BootSeq.gif,center)
**方針 [#ke7c2074]
-実環境をなるべく弄らないで載せることにより;
--常用環境を持ち歩きたい
--実環境のバックアップシステムとして使用可能か
--H/Wの検証用などのテスト環境
**実際 [#t0c1505a]
***アプローチ1 [#b56439b6]
-CD-ROMを直接マウントする。
--kernel config~
 config bsd root on cd0c
--書き込み可能な領域の確保 ... union FSを使ってCDにmfsを被せる。
--CDの作成手順
+++ターゲットシステムのFile Treeを作成
 mkdir ./cdroot
 (cd TARGET-ROOT-DIR && pax -rwpe . WORKDIR/cdroot)
 rm -rf ./cdroot/{dev/fd,kern,mnt,proc,tmp}/*
+++ISOイメージ作成~
 mkhybrid -R -o ISO-IMAGE -b BOOT-RECORD -c BOOT-CATALOG ./cdroot
+++CD-ROM書込~
 cdrecord dev=/dev/rcd0c ISO-IMAGE
-欠点
--「実環境をなるべくいじらない」にちょっと反する;
---mfs + union mount の準備のため、ターゲットシステムでの/etc/rcの改造が必要
--Union FSが不安定 (OpenBSD 3.8 でレイヤー系のファイルシステムは削除されてしまった)
***アプローチ2 [#w2b10a7b]
-rd((FreeBSD, NetBSDではmd)) (RAM Disk)デバイスをrootとしてマウント ... インストーラが使っている方法 ... あらかじめ内容を作り込んでおける。
-rdは大容量 or 動的なサイズ確保が苦手 → mfsも併用する。
--kernel config~
 option    RAMDISK_HOOKS
 option    MINIROOTSIZE=3800   ← 512byte block
 config    bsd root on rd0a
 
 pseudo-device    rd    1    # ram disk
--vnデバイス上にrd内のファイルツリー作成
 dd if=/dev/zero of=./rdroot.img bs=512 count=3800
 mkdir ./rdroot
 vnconfig svnd0 ./rdroot.img
 disklabel -w svnd0 rdroot
 newfs /dev/rsvnd0a
 mount /dev/svnd0a ./rdroot
--rdsetrootコマンドでroot FSイメージをカーネルに組込む。
---ルートパーティション(/dev/rd0a)のレイアウト ... 必要なコマンド/ファイルのみ収録
 /+-boottmp/
  |  +-init*      ksh* = sh*     ln*         sysctl
  |    login.conf rc
  |    mount*     mount_cd9660*  mount_ffs*  mount_mfs*
  +-bin@  -> boottmp
  +-etc@  -> boottmp
  +-sbin@ -> boottmp
  +-cdrom/
  +-mfs/
  +-dev/
  |  +-MAKEDEV (many device files...)
  +-mnt/
  +-tmp/
上記イメージファイルの作成(アプローチ1 手順aと同じ方法)し、カーネルにファイルシステムのイメージを書き込み;
 ./rdsetroot bsd.rd < ./rdroot.img
--/etc/rcの内容
+++実装メモリ量の取得/設定 → mfsの作成
+++mfsとCD-ROMのマウント → /mfs, /cdrom~
これ以降通常のコマンドが使用可能となる(ダイナミックリンクしたものはまだ使用できない)。
+++/cdrom/{bin,sbin}を / にsymlink
+++Read/Write両方が必要なものを /mfs以下にコピー、/ に symlink
+++残りの /cdrom/* を / にsymlink
+++初期設定(ルート・パスワード、ネットワーク設定など)をユーザに問い合わせ
+++本来の /etc/rc にチェイン (以降通常のブートシーケンス)
--CD-ROMイメージの作成 ... 貴本的にはターゲットシステム(通常HDDにインストールして運用しているもの等)をそのままコピー
---/tmp, /proc, /kernfs, /dev/fdなどは空にしておく。
---ブートローダ(cdbr, cdboot)、カーネルのコピー
-欠点
--Read Onlyのサブディレクトリ以下を一部分書き込み可能にするのが繁雑
---一部書き込み可でないと動かない部分があった ... /usr/X11R6/X11/lib/xdm/authdir/*
---mfs+nullfs ... UnionFSよりは若干安定
---lndirによる方法 ... symlink NGなものもあり ... /usr/lib/exec/auth/*
**雑感 [#l36bc2da]
-セキュリティに注意
--ホスト固有の情報を入れると紛失した場合危険 ... 端末的使用が無難
--mfs上の情報は消えると復帰できないので、端末やFW, RT的使用が無難
-遅い
--CD上のファイルが圧縮されていればスループットが上がるのに。
**参考文献等 [#a2f27536]
-ソースコード
--src/distrib/i386/common/Makefile.inc, src/distrib/i386/cdfs/Makefile, src/distrib/i386/cdfs-emu/Makefileあたり
-manpage of section 8
--boot, biosboot, boot_i386, cdboot, installboot, release
-書籍
--rd, md, mfs関連: BSD Magazine No.4, 6, 10, 16
--ブート関連: Unix Magazine 1998.12 Linuxでリラックス / 1999.8 CD-Rで作るブータブル・リカバリーCD
-Links
--Building an OpenBSD Live CD~
 http://www.onlamp.com/pub/a/bsd/2005/07/14/openbsd_live.html
--How to Make a Bootable, Full System OpenBSD 3.2 CDROM~
 http://www.blackant.net/other/docs/howto-bootable-cdrom-openbsd.php
--CD Bootable OpenBSD firewall~
 http://www.jtan.com/jtanoss/cdboot/
--Construccion de un OpenBSD LiveCD~
 [[http://ieee.udistrital.edu.co/computer/docs/manuales/>http://ieee.udistrital.edu.co/computer/docs/manuales/2004.05.04.manual_livecd_openbsd/html/manual-livecd-openbsd.html]]↓~
  [[2004.05.04.manual_livecd_openbsd/html/manual-livecd-openbsd.html>http://ieee.udistrital.edu.co/computer/docs/manuales/2004.05.04.manual_livecd_openbsd/html/manual-livecd-openbsd.html]]
--FrozenTech's LiveCD List~
 http://www.frozentech.com/content/livecd.php
--ライブCDの部屋~
 http://www12.tok2.com/home2/sachs/
**作成したISOイメージは、以下に置いてあります; [#p7f635cf]
>アプローチ1により作成 ... http://kaw.ath.cx/dl/pub/OpenBSD/LiveCD/CD-OpenBSD-3.6.iso.bz2 ~
アプローチ2により作成 ... 
http://kaw.ath.cx/dl/pub/OpenBSD/LiveCD/CD-OpenBSD-3.7.iso.bz2

Front page   New Page list Search Recent changes   Help   RSS of recent changes