2008年12月24日水曜日

FreeBSD インストール用 USB メモリの作成 #1

FreeBSD を USB メモリからインストールするために,インストール用の USB メモリを作成する.今回は,FreeBSD 上で作業するので,FreeBSD がインストールされたマシンを用意してほしい.

僕は,VMware Fusion 上の FreeBSD 7.0-RELEASE で作業した.使用した USB メモリは,ELECOM の MF-BU204GWH.VMware Fusion の設定から USB デバイスを選択し,USB メモリに対応するやつ(僕が使った USB メモリの場合,Transcend series となっていた.)を有効にする.そうすると,FreeBSD に認識され,画面にメッセージが表示される.このとき表示される da?(? の部分は数字.)をきちんとメモしておこう.

さて,ここからが本題.FreeBSD 上でやっていこう.作業手順は次のとおり.

1. MBR(この説明をすると長いので,自分で調べてほしい.また,FreeBSD のブートは面白いので,そっちについてもぜひ♪)を書き込み (-B),USB メモリ全体をひとつのスライス(物理パーティション)として確保する (-I).冗長モードはいわずもがな (-v).これで,/dev/da?s1 というスライスができているはず.
# fdisk -BIv /dev/da?

2. ラベル(論理パーティション)をスライス (da?s1) 上に作成する.ラベルを書き込み (-w),ブートストラップ(FreeBSD のブートについて調べれば出てくるよ.)を書き込む (-B).これで,/dev/da?s1a というラベルができているはず.
# bsdlabel -w -B /dev/da?s1

3. da?s1a というラベルにファイルシステムを作成する.
# newfs /dev/da?s1a

4. FreeBSD のインストール用の ISO イメージをダウンロードする.
# ftp ftp://ftp3.jp.FreeBSD.org/pub/FreeBSD/releases/i386/ISO-IMAGES/7.0/7.0-RELEASE-i386-bootonly.iso

5. ISO イメージをマウントする.mdconfig で /dev/md0 を作成する.md0 (-u) に,ISO ファイル (-t vnode -f) をアタッチ (-a) する.そして,/dev/md0 をタイプを指定して (-t cd9660) マウント.
# mdconfig -a -t vnode -f 7.0-RELEASE-i386-bootonly.iso -u 0
# mount -t cd9660 /dev/md0 /cdrom

6. USB メモリ (/dev/da?s1a) をマウントする.
# mount /dev/da?s1a /mnt

7. ISO イメージの中身をコピーする.ディレクトリを再帰的に (-R),パーミッションをできる限り保持したまま (-p) コピーする.冗長モードはいわずもがな (-v)w
# cp -Rpv /cdrom/* /mnt

8. ISO イメージと USB メモリをアンマウントし,ISO イメージをデタッチ (-d) する.
# umount /mnt
# umount /cdrom
# mdconfig -d -u 0

こんな感じで完成♪

ためしに,DNRH-001 で起動してみた.Load Optimized Defaults を実行した状態から,Advanced BIOS Features の First Boot Device をUSB-HDD にすることで USB メモリから起動できたので,おそらくほかの PC でもいけると思う.

ほかの情報を見ると,MBR とスライスのブートセクタをゼロクリアしているものがあるが,これは必要なのだろうか?妥当性が不明だったので,今回はゼロクリアしないことにしている.

参考文献:
kishiro.com: USBメモリからFreeBSDをインストールする

追記(2009年1月18日):
disc1 をコピーする方法から,bootonly をコピーする方法に変更.この方が小さくて済む.ネットワークインストールではなく,USB メモリをメディアとしてインストールするための方法は,林檎生活100: FreeBSD インストール用 USB メモリの作成 #3を参照のこと.

0 件のコメント: