私はLinux4.2.0、Ubuntu14.04用のUbuntuWily HWEカーネル(私が実行しているもの)を使用しています。
厄介なバグ MacBook 11,4および11,5モデルでは、ラップトップが実際にシャットダウンすることはなく、Power down
カーネルメッセージに到達した後、ハングすることはありません。シャットオフ。このバグにより、一時停止と再開も妨げられている可能性があります。興味深いことに、reboot
が呼び出されても表示されず、マシンを停止しようとした場合にのみ表示されます。
詳細はそれほど関連性がありませんが、が関連しているのは、これをデバッグする方法です。カーネルのシャットダウン中にカーネルをstrace
またはデバッグして、出力を何らかの方法で観察する方法はありますか?電源オフロジックが、永久にハングし、何らかの奇妙な理由で戻ってこないシステムコールを作成していることはかなり確信しています。どのシステムコールが機能していないかを把握できれば、続けてなぜが機能していないのか、具体的にはハードウェアについてはどうなるのかを把握できます。シャットダウンが失敗する原因になっています。
カーネルのシャットダウンをデバッグするための標準的な方法はありますか?特別なハードウェアが必要ですか?カーネルのパッチを作成するのは問題ありませんが、機能していないシステムコールが見つからない限り、この問題をどこから探し始めるかさえわかりません。
あなたがする必要があるかもしれないことの大まかな概要:
Kgdbを使用してカーネルデバッグを検索すると、これらの手順の詳細を確認できます。
この ガイド は、デバッグ環境のセットアップに役立ちます。
カーネルログを確認します。
nano /var/log/kern.log
シャットダウンが適切に行われた場合、関連するすべての情報が含まれ、必要なデバッグ情報が提供されます。
Dmesgも確認できます
nano /var/log/dmesg
以前の起動/シャットダウンからのこれらのバックアップも表示され、次のように追加されます
dmesg.0 kern.log.1
そして、そこにはさらに遡るアーカイブもあります。
カーネルにオプションを追加することで、これらをより冗長にすることができます。
CONFIG_PRINTK_TIME-タイムスタンプをdmesgに追加します
CONFIG_DEBUG_KERNEL-カーネルのデバッグをオンにします
CONFIG_DETECT_HUNG_TASK-原因を特定するのに適しています
カーネルのフリーズ
CONFIG_DEBUG_INFO-カーネルをデコードできるようにします
CONFIG_EARLY_PRINTK
CONFIG_LOG_BUF_SHIFT = 21-カーネルバッファのログサイズを
最大のバッファー
CONFIG_NETCONSOLE = m-netconsoleをモジュールとしてコンパイルします
ハングは、電源状態変更の呼び出しなどから戻ってこないデバイスドライバーであると推測します。したがって、printkに精通していない限り、有用なデバッグメッセージはありません。
迅速で汚いハックを使用してこれを確認するには、カーネルブートアップコマンドライン(grub.cfgに存在する)のすべての不要なドライバーをブラックリストに登録します(wi-fi、ネットワークなど)。不正なドライバコード。