もたもたしてたらFreeBSD 11.0-BETA2が出てしまった。
この前から続けて、最後に試したFreeBSD 11.0-BETA1なシステムでiSCSI+zfsがハマる原因を調べる。
(一応書いておくと、9.3-RELEASE, 10.1-RELEASE, 10.3-RELEASEのいずれでも発生している。)
参考資料
- カーネルをビルドする。
# cd /usr/src # cp sys/amd64/conf/GENERIC sys/amd64/conf/DEBUG # emacs sys/amd64/conf/DEBUG <ここでoptions DDBを追加> # make kernel-toolchain # make buildkernel KERNCONF=DEBUG # make installkernel KERNCONF=DEBUG # reboot
/usr/src
にソースがない人はftp://ftp.jp.freebsd.org/pub/FreeBSD/releases/amd64/11.0-BETA1/src.txz
あたりから持ってくる。持ってくるときはカーネルのバージョンに気をつけないとひどい目に遭う。(遭った。) - デバッガに入れるか確認する。sysctlでenterしてみる。
# sysctl debug.kdb.enter=1
ここで
debug.kdb.enter: 0 -> 0
と出る場合はカーネルが正しくビルド、もしくはインストールできていない。
無事にddbに入れたらcont
で脱出。 - シリアルケーブルをつなぐ。
テスト用機(デバッグされる側)と適当なマシン(デバッグ作業をする側)をシリアルケーブルでつなぐ。
接続できたかはcu
でチェックする。
双方でcu -l /dev/cuau0
を実行して、あとは適当にキーを叩いて他方に出ればOK。 /boot.config
と/boot/loader.conf
を書く。後者はいらないかも。
/boot.config:-h
/boot/loader.conf:
hint.uart.0.flags="0x90"
- デバッグ作業マシンで
cu
を叩いておいて、テスト用機を再起動する。
無事に起動時のメッセージが見えればOK。出ないときは……知らない。 - デバッグ作業マシンからデバッガに入る。cu越しに叩いてみる。
# sysctl debug.kdb.enter=1
無事にローカル上での実行と同じようにddbのコンソールに移ればOK。途中で途切れたりキー入力を受け付けない場合は、きっと/boot/loader.confの設定あたりが怪しい。うまくいったら
cont
で脱出。
これで、通常は画面に出るメッセージの類がすべてシリアルコンソールに向いた。
長くなったので次に続く。