11行でFreeBSD 9.0-RELEASEをUSBメモリにインストールする。

9.0-RELEASEからは配布がtxz形式になったので連結する手間が省けた分だけ簡単に。なんかもうインストーラとか煩わしいだけな気がしてきた。

1)USBのストレージから起動できるPCがあること

2)既にFreeBSDがinstallされてるマシンがあること

3)ftp//ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/9.0-RELEASE/ あたりから base.txzと kernel.txzを持ってきてどこかに置いてあること(この例では /usr/freebsd-dist)

4)USBメモリをいれると/dev/da0に見えること

# dd if=/dev/zero of=/dev/da0 bs=1m count=1
# gpart create -s gpt da0
# gpart add -s 64K -t freebsd-boot da0
# gpart add -t freebsd-ufs -l freebsd da0
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 da0
# newfs /dev/da0p2
# mount /dev/da0p2 /mnt
# cd /mnt
# tar xvfzp /usr/freebsd-dist/base.txz
# tar xvfzp /usr/freebsd-dist/kernel.txz
# echo '/dev/da0p2 / ufs rw,noatime 0 0' > /mnt/etc/fstab


以上でおしまい。最低限のことしかしてないんで、もう少しこだわれますが、基本はこんな感じ。

以下駄文

FreeBSDのルータなんかほとんどHDDに書きにいかないようにできるわけで、ルータくらいならUSBメモリ onlyのPCでいいんじゃね?と思ったが、FreeBSDの8だと(少なくとも8.1-RELEASEまでは)起動したあとrootをマウントするところでこける。

これはUSBメモリが使えるようになるまで時間がかかるのに、その分待たないからで、カーネルにrootをマウントする前に数秒waitを入れるパッチをいれればいいというところまでは気がついた。

オイラはこれを sys/kern/vfs_mount.cの vfs_mountroot内の root_mount_prepare()の次あたりに

pause("mount root", 2*hz);

とか書いてカーネルを再構築して対処していたわけですが、最近改めて調べてみたら

/boot/loader.conf に kern.cam.boot_delay=10000

と書くというやり方があるそうな。(こちらのほうがカーネルの再構築がないからスマート)

9.0ではこのあたりが大きく書き直されていて、こんなことをしなくても良いようになったようです。

追記

動いているFreeBSDなんてネーヨ!って人は

ftp://ftp.jp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/9.0/

あたりから起動用のimgをゲットしてなんとかしてUSBメモリに書き込んだりCDに書き込んで起動させる。 でもってそれからブートしたのちLiveCDまたはshellにおとして、インストールしたいUSBメモリをつっこむ。

それが da0 または da1に見えるはずなので、適当に読み替えて頑張ってください。
Posted by issei

カテゴリ: BSD

Listing Comments

日本国内なら藤枝君が管理してくれてるftp.jaist.ac.jpが 速くて良いような。転送速度だけでなくRTTも早い気がします。 何時の間にやらmemstickとかいうインストールイメージも有りますが、最早 HDDに入れなくても直接Flashメモリにinstallして運用してしまえば良い ような気がしますね。CPU-NorthBridge-SouthBridge-USB-Flashメモリ なんてまどろっこしい変換を繰り返さなくても、NorthかいっそCPUにFlashメモリI/F入れてしまえば良いのに。 とりあえずML115とかDELLの安鯖なんかはM/B内部に直接USBメモリが刺せるので、これで運用してみるかな。
kaz

JAISTは ftp6.jp.freebsd.org か。だいたいftp ~ ftp3ですましちゃってるから、そこまで届いてなかったw
issei

昨日の17:00頃(JST)に www.FreeBSD.org のトップページのLATEST RELEASE 見たら 9.0-RC3 の案内が消えてるにもかかわらず 9.0-RELEASE の案内がなかったけど、ついさっき見たら Production のとこに 9.0 が追加されてました。アナウンスもされたようですね。 仮想マシンモニタを一段かましといて、/etc, /var, /usr/local, /tmp, /boot が初期状態のイメージをVHDで用意しといて、あとは差分だけ flashメモリ に保存する... なんてのでどうでしょ。 あと、私的には tar のフラグで f の直後にアーカイブファイル名が来るようになってないと気持ちが悪い :-)
ふたつき

>私的には tar のフラグで f の直後にアーカイブファイル名が来るようになってないと気持ちが悪い :-) 分かります。古典的(昔のSUNやSVR2なHP-UXとか)tarや、MINIXのtarはgetoptなコマンドライン パーザじゃないので、fの直後をfの引数と解釈してしまう。 最近の若い学生さん達は、GNU tarに汚染され過ぎと思ってる。
kaz