dmesgエントリの意味を見つける方法は?

dmesgエントリの意味を見つける方法は?

dmesgのエントリを見るのは楽しいですが、そのエントリが何を意味するのかどうかはどうすればわかりますか?試してみましたがman dmesg、メッセージ自体を復号化する方法に関する情報が見つかりませんでした。

私は知りたいです:各項目の意味とソースを詳しく知る方法はありますか?たとえば、どのドライバーが書いたか(ドライバーの場合)、このメッセージの詳細な意味は何ですか?


dmesg 出力の例:

[101466.656676] Read(10): 28 00 00 07 c4 25 00 00 01 00
[101466.656706] end_request: I/O error, dev sr0, sector 2035860
[101466.656722] Buffer I/O error on device sr0, logical block 508965
[101471.444586] sr 1:0:0:0: [sr0] Unhandled sense code
[101471.444607] sr 1:0:0:0: [sr0]  
[101471.444616] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[101471.444627] sr 1:0:0:0: [sr0]  
[101471.444634] Sense Key : Medium Error [current] 
[101471.444649] sr 1:0:0:0: [sr0]  
[101471.444657] Add. Sense: No seek complete
[101471.444668] sr 1:0:0:0: [sr0] CDB: 
[101471.444675] Read(10): 28 00 00 07 c4 24 00 00 01 00
[101471.444705] end_request: I/O error, dev sr0, sector 2035856
[101471.444721] Buffer I/O error on device sr0, logical block 508964

ベストアンサー1

簡単な方法はありません。このメッセージは、一般ユーザーではなくカーネル開発者と経験豊富なシステム管理者を対象としています。共通構造はありません (カーネルが始まってからの秒数を示す括弧内の数字を除く)。

カーネルソースコードからメッセージテキストを見つけることができます。 Cプログラミング言語がわからない場合でも、これは役に立つ情報を提供できます。少なくともメッセージがどのファイルにあるかを調べると、どのドライバが責任があるかを知ることができます。ローカルコピーをアーカイブするか(ほとんどのディストリビューションにはDebianやその派生物などのカーネルソースコードを含むパッケージがあります)、オンラインブラウザを使用してください。apt-get install kernel-source-X.XX && cd /usr/src && sudo tar xf linux-source-X.XX.tar.xz自由電子LXRまたはlinux.noのLXR(より良い検索ですが、しばしばダウンします)。

検索時にメッセージがソースコードに文字通り表示されないことに注意してください。通常、テンプレートとパラメータで構成されます。たとえば、2行目はblk_update_request機能するblock/blk-core.c:

     printk_ratelimited(KERN_ERR "end_request: %s error, dev %s, sector %llu\n",
                        error_type, req->rq_disk ?
                        req->rq_disk->disk_name : "?",
                        (unsigned long long)blk_rq_pos(req));

%sテンプレートの最初の値は値に置き換えられerror_type、2番目の値は%s(または設定されていない場合はa req->rq_disk->disk_name)に置き換えられ、返された整数に置き換えられます。メッセージを含むファイルを見ると、ブロックデバイスに関連しています。ディスク名はどのデバイスかを示します。見たら?%llublk_rq_pos(req)sr0標準デバイス名は「最初のSCSI CD-ROM」でした(実際、ほとんどのIDE / SATAおよびUSBドライブを含むSCSIに似たプロトコルを使用する最初の光学ドライブ)。

これらのメッセージを引き続き移動できますが、ここには明確なパターンがあります。このメッセージはすべてに関連していますsr。すべてのメッセージは同じ問題が原因で発生します。つまり、セクター 2035860 (約 1 GB に相当) から DVD を読み取る際にエラーが発生しました。セクターは512バイトです)。コンピュータに突然ディスクが存在しないか、または読み取れないというメッセージが表示され、別のセクタに移動してそのセクタを読み取ろうとしても失敗します。

これは、ほこりの汚れ、ドライブが傷や破損している可能性があります。他の問題は、ドライブの不良やケーブルの不良などの読み取りエラーを引き起こす可能性がありますが、これらの問題は、特定のディスクの特定の領域だけでなく、常に読み取りに影響を与えます。

おすすめ記事