RIGHT:川俣吉広
RIGHT:EBUG 第22回会合 - 2007, 5/19
*LiveCDその後 [#y0dea220]
前回(2005/9)の勉強会ではOpenBSD 3.8ベースのものを紹介 ~
現在OpenBSD 4.1ベースのものを開中。
RIGHT:EBUG 第29回会合 - 2009, 2/21
*LiveCD河豚板のUSB boot対応 [#ldb19a88]
OpenBSD LiveCD「河豚板」は、2008年末にUSBフラッシュメモリからの起動に
対応しました。
現在、布サイト((http://kaw.ath.cx/dl/pub/OpenBSD/LiveCD/ , http://livecd-mirror.ebug.jp/LiveCD/))では、
CD-ROM用、USBメモリ用の2つのイメージを布しています。

前回からの変更点を中心にご報告致します。
-2005 02/21 CD-OpenBSD-3.6
-2005 08/16 CD-OpenBSD-3.7
-2006 05/02 CD-OpenBSD-3.8
-2006 08/10 CD-OpenBSD-3.9 (×数回リリース)
-2006 10/25 FuguIta-4.0pre2
-2006 10/30 FuguIta-4.0-200611011, 200611131, 200611231, 200701201, 200702181, 200703111
-2007 05/17 FuguIta-4.1-200705161
今回は、このUSB boot対応の容、および前回(2007年5月)の発表以降の変更点などについて説明します。
**発端 [#r17a7fed]
ebug members MLでの神保氏の発言が発端
>''神'' - 河豚板をCDドライブのないネットブックで動かしたいんだけど、USB boot対応できますかね? ~
''川'' - USBメモリがBIOSとOpenBSDカーネルの両方からHDDとして認識できてれば、OpenBSDを素でインストールすれば動くんじゃないですかね?

CD-OpenBSD-3.9からは、Security Advisoryが出た時点で
可能な限りアップデート版をリリース
で、やってみたところ、通常の方法でOpenBSDをインストール、起動できることを確認((神保氏はFreeBSDでも追試))、
河豚板のUSB boot対応にとりかかりました。
**河豚板のしくみ おさらい [#uc366925]
今回のUSB boot対応の概要を理解するため、河豚板のブートの仕組みとファイルシステムの構成について概観します。
***カーネル起動直後まで [#uc1017f5]
BIOSによってブートローダ(CDの場合はEl Torito規格、HDDの場合はMBR)が読み込まれ、続いて二次ローダ (/cdboot or /boot)が、最後に
カーネル (/bsd)が起動します。~
カーネル起動直後のファイルシステムの状は以下のようになっています。
|CENTER:&ref(fuguita.gif);|
|CENTER:カーネル起動直後のファイルシステム(概要)|
ルートファイルシステムとなっているrdデバイスはカーネルにあらかじめ組込まれており、
カーネル起動と同時にルートにマウントされます。これはFDDインストーラなどで使われている技術です。

**実方法 [#f4779cd6]
大まかには変わっていない
-小さなルートファイルシステム(rd)をカーネルに組み込み ... 初期化用スクリプト/コマンド、デバイスファイルなど
-CD-ROMは /cdromにマウント
-Memory file systemを /mfsにマウント - /cdromにlndirしている
rdデバイスには、起動のために須な必要最小限のコマンド、設定ファイルのみ収録されています。
また、容量低減のためこれらは単一のディレクトリ /boottmp に収められています。

変わった点
-名前がつきました - 河豚板 (FuguIta)
--FuguIta-v.r-yyyymmddn.iso.{gz,bz2{,.torrent}}
-ブート方法を選択出来るようになった
--CD-ROM only mode ... fast & low memory mode
--FD, USB flashへの保存と復帰
--シェル直起動(デバッグ用)
-起動用バイナリのクランチ化 ... /boottmp/*
-IPv4のDHCP/IPv6のauto configurationに対応
このあと、通常のBSDの起動シーケンスにのっとり、/sbin/init が起動、つづいて /etc/rc が実行されます。
***通常の運用状まで [#k2152b78]
/etc/rc (実際は、/boottmp/rc)は概ね、以下のような動作をします;
-mfs, CD-ROMのマウント
-動作モードの選択
-キーボード形式, ルートパスワード, ネットワークパラメータなどの設定

**作成方法 [#gbe0693c]
(ホスト固有のデータやテンプラリファイルがない)クリーンな
ファイルツリーをCD-ROMに焼くには?
-以前は普通にHDDにインストールしたものをシコシコとお手れ ~
現在はエミュレータ(QEMU)を用いて仮想ディスクにインストール
 qemu-create -t raw cdroot.dist.img 650M
 qemu -localtime -fda floppy41.fs -hda cdroot.orig.img
vnconfigで吸い出し
 vnconfig svnd0 /opt/fuguita/4.1/cdroot.orig.img
 mkdir cdroot.orig
 mount /dev/svnd0a /opt/fuguita/4.1/cdroot.orig
 mkdir cdroot.dist
 cd cdroot.orig && pax -rwvpe . ../cdroot.dist
-CD-ROMに書き込むファイルツリーをいじる場合は、chrootでターゲットのファイルツリーに降りてから作業 ~
→ 実環境と思って作業してよい
 chroot cdroot.dist /bin/ksh -l
--開発環境で make package → chroot環境で pkg_add
-実際には、(主にファイルシステムがReadOnlyであることによる)
細かい不合がアプリ毎に発生する場合があり、これは個別に対応 ~
→ 実はこれが一番手間がかかる。
これらの初期化を終えたあと、/fuguita/etc/rc に制御を移します。これ以降はOpenBSDネイティブの処理が実行されます。~
最終的に運用状になった時点でのファイルシステムの状態は以下のようになります;
|CENTER:&ref(fuguita-op.gif);|
|CENTER:運用状でのファイルシステム(概要)|

出来上がったISOイメージのチェックにもQEMUを使用
**リリース [#y6eaafcc]
-OSの各リリース毎に作成 / SAが出たらそれにも対応させている
-Wikiにて進捗やBugTrackなどをリリース
-build toolとその使用方法を開 ~
http://kaw.ath.cx/openbsd/index.php?%B2%B6CD%A4%F2%BA%EE%A4%EB
-ミラーサイト(livecd-mirror.ebug.jp)の開設, BitTorrentによる-布状況(HTTPのみ, ~2007, 5/S)
  日付別集計
  日時    | バイト数
 =========+=========================================
  2005/09 | * 2,023,928,486
  2005/10 | ** 6,538,506,715
  2005/11 | * 4,218,994,619
  2005/12 | * 3,851,178,101
  2006/01 | * 5,104,971,394
  2006/02 | ** 8,094,446,543
  2006/03 | * 5,249,054,126
  2006/04 | * 4,017,368,052
  2006/05 | ****** 28,046,841,681
  2006/06 | ***** 21,781,342,007
  2006/07 | ***** 21,843,821,572
  2006/08 | *** 14,999,888,250
  2006/09 | ********* 43,191,654,233
  2006/10 | ******* 33,181,931,202
  2006/11 | **************************************** 210,964,557,620
  2006/12 | ******* 32,687,272,842
  2007/01 | ********** 49,585,150,553
  2007/02 | ******** 38,895,872,535
  2007/03 | ********* 43,168,592,482
  2007/04 | ******** 41,409,782,209
  2007/05 | *** 12,688,897,068
~
 ドメイン別集計,
  (計: 60ドメイン)
  ドメイン  | 閲覧回数
 ===========+=========================================
  (IPv4)    | **************************************** 3,776
  *.jp      | *************** 1,415
  *.net     | ********** 918
  *.com     | ***** 391
  *.pl      | *** 283
  *.eg      | ** 120
  *.by      | * 93       *.mx      | * 31        *.gov     | * 7
  *.fr      | * 78       *.org     | * 26        *.hr      | * 6
  *.mm      | * 69       *.se      | * 26        *.arpa    | * 5
  *.it      | * 67       *.at      | * 25        *.au      | * 5
  *.in      | * 62       *.cn      | * 23        *.dk      | * 5
  *.br      | * 52       *.ro      | * 22        *.fi      | * 5
  *.id      | * 45       *.tw      | * 22        *.sk      | * 5
  *.ar      | * 43       *.ca      | * 21        *.tr      | * 5
  *.ru      | * 42       *.bg      | * 19        *.pt      | * 4
  *.de      | * 36       (local)   | * 16        (IPv6)    | * 3
  *.hu      | * 34       *.be      | * 12        *.ve      | * 3
  *.gr      | * 33       *.es      | * 12        localhost | * 3
  *.nl      | * 33       *.uk      | * 12        *.ee      | * 2
  *.ua      | * 32       *.ch      | * 11        *.mil     | * 2
                         *.my      | * 11        *.yu      | * 2
                         *.cz      | * 8         *.co      | * 1
                         *.ma      | * 8         *.lb      | * 1
                         *.th      | * 8         *.lv      | * 1
                         *.cl      | * 7         *.sg      | * 1
                         *.edu     | * 7         *.sy      | * 1
**他の実系 [#q2538582]
-Anonym.OS
-OliveBSD
-Quetzal (LiveDVD)
-OpenBSD Live-CD Firewall (OpenBSD Live-CD Firewall)
rdによるルートファイルシテムは引続き存在し、CD-ROMは、/fuguitaに、mfsは/mfsにマウントされます。
そして、これらのファイルツリーは通常のUnixのファイルツリーとして扱えるようにシンボリックリンクが張られ(まくり)ます。
特に、/usr以下はシンボリックリンクが2段階で張られています。例えば、/usr/bin/viにアクセスする場合は、
         /usr/bin/vi

     /mfs/usr/bin/vi

 /fuguita/usr/bin/vi
というようにリンクが辿られます。

**収録容(*は、非ports) [#gc3195ff]
アプリケーションは、
コンパクトな実CUI/GUI両方で使用できるものを中心に採用。
:OS|
OpenBSD (フルセット、ただしC言語の静的ライブラリ(lib*.a, lib*_pic.a, lib*_p.a)は割愛)
:ネットワーク関連|
fetchmail /
procmail /
w3m /
rdesktop /
rsync /
Mew* /
Riece* /
Emacs-w3m* /
Transmission /
DeleGate*
:メディア関連|
xv /
MPlayer,MEncoder /
cdparanoia /
lame /
:その他諸|
bash /
bzip2 / zip,unzip /
screen /
Ruby /
Gauche* /
IceWM /
ROX-Filer /
Emacs 22
:日本人用|
kterm /
jless /
nkf /
freefonts /
ja-fonts-funet /
ja-fonts-gnu /
mplus /
Navi2ch* /
Migemo*
**活用事例 [#x95fec22]
-実家帰ってるときに、
--自分ちみたいにネットにアクセスしたい。 ~
IRCも使いたい、YouTubeも見たい...
--Schemeで遊びたい。 ~
...
-ネットワークの調査など
--古~いWinNT 3.51マシンに繋がってるネットワークの調査
--ncとnetstatを使ってthroughputを実測
--DMZの監視
--TAG付VLANの実通テスト ~
...
-OpenBSDの伝道 :-)
なぜこのようなややこしいことをするのか? それは、「/usr以下をread onlyにせず、ファイルの置き換えを
可能にすることによって、securityアップデートやports/packagesの追加を可能にするため」です。~
LiveCDの場合、通常このような機能は「スタッカブルファイルシステム」などによって実しますが、
OpenBSDではスタッカブルファイルシステムは実されていないため、河豚板では今述べたような方法を採用しています。

また、/mfs以下の大半をシンボリックリンクで置き換えることで、
/mfs以下の容を保存する場合に必要なファイル容量も大幅に低減することができています。
**変更作業 [#l47cfa24]
まず、冒頭の「発端」でも触れたように、OpenBSDを通常のインストーラを用いて
USBメモリにインストール((OpenBSDからは、SCSIディスクとして見える))し、起動試験を行ってみました。
-結果 ... ハードウェアによって、起動できるものとできないものがある。

ネット上の報を調べたところ、USB bootをサポートするBIOSであっても、ストレージデバイスをHDDとして認識するものと、
Removable Diskとして認識するものがあり、後の場合はUSBデバイスに通常のインストールを行った
OpenBSDは起動できないようであることが判明しました。~
とりあえず、河豚板のUSB boot対応は、前のBIOSを対象として実施することとしました;

-方針と実
--USB用の別バージョンは作成しない。単一のスクリプトでCD-ROM / USB両対応とする。~
... 開発・保守の手間が2倍になる(一人でやってるので、これはツライ!!)。
--USBであっても、read onlyでマウントする。~
... これによって、USBの書換え回数の問題を回避する。
--USBデバイスに導する場合HDDと同様パーティショニングやブートローダの書き込みが必要なため、
本来インストーラが要になるが、とりあえず生のディスクイメージを作成し、それを配布する。
--いままでCD-ROM決め打ちでやっていた初期化部分を変更。
---/cdrom を /fuguita に変更
---OSに認識されたストレージデバイスを順次スキャンし、河豚板のっているメディアを検出する。
---前のメディアをデフォルト値とし、実際に /fuguita にマウントするデバイスをユーザに尋ねる。
---ユーザデータ保存機能など、関連するサポートツールの改造
---ビルドツールへの機能追加

実際の変更箇所は、初期化の大部分を当する /boottmp/rc に集中しました。

「発端」となったMLでのやり取りは 2008年11月30日、USB対応版のリリースは12月11日の''FuguIta-4.4-200812111''にて行われました。
**その他諸[#x3d47ab8]

**2007年5月以降の河豚板の主な変更点 [#d8aab8cc]


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