*OpenBSDでLive CDをつくる [#t51994f1] RIGHT:越後BSDユーザ会 第15回 会合 - 9/17, 2005 RIGHT:川俣 吉広 - kaw@on.rim.or.jp **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 ... Frozen Tech's LiveCD List によると295種類 ---FreeBSD ... FreeSBIE ---NetBSD ... pkgsrc - sysutils/mklivecd ---以前 OpenBSD を使った 1CD snortがあった(( http://slashdot.jp/article.pl?sid=03/11/27/1456226 ))が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の検証用などのテスト環境, 障害発生時の Soft/Hardの切り分け **実際 [#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 でレイヤー系のファイルシステムは削除されてしまった) --CD-ROMデバイスはアンマウントできない。 ***アプローチ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]] --Frozen Tech'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 / http://kaw.ath.cx/dl/pub/OpenBSD/LiveCD/CD-OpenBSD-3.8beta.iso.bz2