zfs bootかつCAM化

結構面倒くさかったというか,なんで現状うまく起動出来ているのかが謎過ぎるくらいに危ういので,メモ.

基本的には
http://wirednoize.net/freebsd/index.php?FreeBSD%208.0RC2%20amd64%20pure%20ZFS%20install#u3943866
の手順を参考に,FreeBSD 8-RELEASEをインストール.
その後,FreeBSD 9-CURRENTにあげる.

ここで,うっかりZFSのversionをv14にあげてしまって,起動できなくするのだけど,Google グループの手順で復活.

その後,FreeBSD 9-CURRENTで,AHCI to CAMを有効にしてコンパイル

cd /usr/src/sys/amd64/conf
cp GENERIC WITH_CAM
vi WITH_CAM # ATA関係を消した上で,device ahciを追加.
cd /usr/src
make buildkernel KERNCONF=WITH_CAM
make installkernel KERNCONF=WITH_CAM

ここで,再起動をかけると,案の定ルートのマウントに失敗する.ともかく,ドライブの割当が変わってるので,それに対応して/boot/zfs/zpool.cacheを書き換えてあげる必要がある.
起動ディスク単独だとどうにもならないので,ルートのマウントに失敗して,手動でマウントポイントを指定する画面でrescue用に作ってある(FreeBSD 9-CURRENTが入っている)USBスティックを突っ込んで,ルートとしてマウントさせる(ufs:/dev/da0s1a とでも入力する).
このUSBスティックはAHCI to CAMを有効にしていないので,最初からこれで起動しても/boot/zfs/zpool.cacheの書き換えは出来ない.こういうねじれた状態でも,一度CAMを有効にしたシステムで起動して,ルートのマウントに失敗させた状態でマウントさせればOK.素直に,CAM有効かつUFSなUSBスティックを作って起動させてもOKといえばOK.

この状態で,

zpool export 
zpool import -a -f

とすると,ルートでimportされたZFS上の/boot/zfs/zpool.cacheが書き換えられて,以降普通に起動するようになる.
この方法はちょっと危うすぎるので,

zpool export 
zpool import  -R /mnt/ 
cp /boot/zfs/zpool.cache /mnt/boot/zfs/zpool.cache

とした方が安全かも知れない.

懸案だった消費電力は
/boot/loader.conf

cpufreq_load="YES"
kern.hz=250
hint.acpi_throttle.0.disabled=1
hint.acpi_throttle.1.disabled=1
hint.acpi_throttle.2.disabled=1
hint.acpi_throttle.3.disabled=1

/etc/rc.conf

powerd_enable="YES"
performance_cx_lowest="C2"
economy_cx_lowest="C2"

で,Linuxよりは少し消費電力が高いけど,アイドル34W.
cpufreqをわざわざ有効にしないといけないってのは盲点.

ただ,結局無線LAN経由のTS再生の問題は解決せず.アイドル消費電力(といっても,再生時もほとんど変わらない)と,OSX上のvlc 1.0.5で再生した時の状況をまとめると,

kern.hz アイドル消費電力(W) TS再生時の状況
100 32-33 ほとんど再生できない
250 34-36 ときどき途切れる
300 39-40 ときどき途切れる
500 40-41 問題なし
1000 40-41 問題なし

というような感じ.マシン構成はH55を買ってみた. - smectic_gの日記にあるとおりで,ネットワークカードの周期が100Hzなので,100だといろいろかち合うのかなと想像.