ℹ️本記事は古いコンテンツを変換して表示しています。
表示が崩れたり、リンクが正しくない可能性があります。ご了承ください。
ℹ️本記事は古いコンテンツを変換して表示しています。
表示が崩れたり、リンクが正しくない可能性があります。ご了承ください。
2016/07/31 03:07 : カーネルデバッグに手を染めてみる(1)
もたもたしてたらFreeBSD 11.0-BETA2が出てしまった。この前から続けて、最後に試したFreeBSD 11.0-BETA1なシステムでiSCSI+zfsがハマる原因を調べる。(一応書いておくと、9.3-RELEASE, 10.1-RELEASE, 10.3-RELEASEのいずれでも発生している。)
もたもたしてたら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 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。出ないときは……知らない。# sysctl debug.kdb.enter=1
無事にローカル上での実行と同じようにddbのコンソールに移ればOK。途中で途切れたりキー入力を受け付けない場合は、きっと/boot/loader.confの設定あたりが怪しい。うまくいったらcont
で脱出。
長くなったので次に続く。