2010年4月23日金曜日

OSX ログをFirewire経由で出力するには

ログをFirewire経由で出力するには

pdudf.LogFacilityを1にする必要があります。
またnvramの値も変更する必要があります。
これはnvramのboot-argsでのdebugで指定します。

例えば
% sudo nvram boot-args="debug=0xXXX"
のように指定します。
nvramコマンドについてはmanを参照してください

XXXに指定できるビット値としては(Mac OS X Internales p360 TABLE4-13)次の
ようなものがあります

0x800:DUMP_ON_NMI: NMI時Dump
0x400:DUMP_ON_PANIC: Panic時Dump
0x100:LOG_PI_SCRN: Panicデータをスクリーンに表示
0x040:DB_ARP
0x008:DB_KRPT: kprintfをremote output deviceへ
0x004:DB_NMI: kernel-debugging facilityを有効化(including support NMI
without a physical progremmer's switch)
0x002:DB_PRT: printfをconsoleへ

kext内で使用されているkprintfをremote output device(この場合firewire)に
出力するには0x008が必要となります。

PanicDumpをダンプするなども含め以下の設定を使ったりします。
nvram boot-args="debug=0x14e -v _panicd_ip=43.25.78.36"
appleのTN2118, QA1264も参照してください

実際にログを出力するときの手順
・ログを排出するMacとモニタとなるMacの両保のMacにて下記コマンドを発行
sudo nvram boot-args="debug=0x14e fwpkf=0x117"
・コマンド発行後に再起動
・再起動後に下記コマンドで変更内容が反映されているか確認
sudo nvram -p
・モニタ側のMacにて下記コマンドを発行 (-aを付けることでlogファイルにも書かれる)
fwkpfv -a

0 件のコメント:

コメントを投稿