Linuxシステムを運用していると、予期しないトラブルやハードウェアのエラー、ドライバの問題に遭遇することがあります。そんなときに役立つのが「カーネルログ」です。Linuxでは、カーネルが出力するメッセージを記録したログファイルがあり、それが/var/log/kern.log
です。このファイルを確認することで、システムの奥深くで何が起きているのかを把握できます。この記事では、/var/log/kern.log
の基本的な確認方法から、ログの読み方、トラブルシューティングへの活用までをわかりやすく解説します。Linux初心者から中級者の方まで、ぜひ参考にしてください。
/var/log/kern.logとは?
/var/log/kern.log
は、Linuxカーネルが出力するログメッセージを格納するファイルです。カーネルはOSの中核部分で、ハードウェアの制御やプロセス管理などを担当しています。そのため、カーネルログには以下のような情報が含まれます。
- ドライバの読み込み・アンロード
- ハードウェアの接続・切断
- ファイルシステムのマウント・アンマウント
- カーネルのエラーメッセージや警告
- IRQ(割り込み)の情報や競合の警告
システムの起動やシャットダウン時、異常時の動作など、普段は目にしない低レイヤの処理内容を確認できる重要なログです。
kern.logが存在するか確認する
Linuxディストリビューションによっては、/var/log/kern.log
が存在しないことがあります。Debian系(Ubuntuなど)では一般的にこのファイルが使われますが、Red Hat系(CentOS、RHEL)などでは/var/log/messages
やjournalctl
を使うのが主流です。
以下のコマンドでファイルの存在を確認できます。
ls -l /var/log/kern.log
ファイルが存在しない場合、rsyslog
の設定やログレベルが原因の可能性があります。
kern.logを表示する基本的なコマンド
ログファイルを確認する際、以下のようなコマンドを使うと便利です。
1. 内容を一括表示する
cat /var/log/kern.log
ただし、この方法だと長いログファイルを一気に出力するため、見にくくなります。
2. ページ分けして読む
less /var/log/kern.log
矢印キーやスペースでスクロールでき、検索(/キーワード
)も可能です。
3. 直近のログを確認する
tail /var/log/kern.log
tail -n 50 /var/log/kern.log
-n
オプションで表示行数を指定できます。
4. ログの追跡(リアルタイム監視)
tail -f /var/log/kern.log
ログが追記されるたびにリアルタイムで画面に出力されます。デバイスの接続テストなどに有効です。
kern.logの典型的な出力内容と読み方
ログの一部を例にとって見てみましょう。
Apr 5 10:25:36 hostname kernel: [12345.678901] usb 3-2: new high-speed USB device number 4 using xhci_hcd
このログの見方は以下の通りです。
- Apr 5 10:25:36:ログが記録された日時
- hostname:ログを出力したマシン名
- kernel::出力元がカーネルであることを示す
- [12345.678901]:カーネル起動からの秒数
- usb 3-2: new high-speed USB device number 4 using xhci_hcd:内容(ここではUSBデバイスの接続)
このように、カーネルの動作ログには、接続されたデバイスの詳細や異常の兆候が記録されています。
rsyslogによるカーネルログの設定確認
/var/log/kern.log
が生成されていない場合、rsyslogがカーネルログを記録していない可能性があります。
設定ファイルは以下のいずれかです:
/etc/rsyslog.conf
/etc/rsyslog.d/*.conf
設定の一例:
kern.* /var/log/kern.log
このように記述されていれば、すべてのカーネルレベルのメッセージが/var/log/kern.log
に記録されます。設定変更後はrsyslogを再起動します。
sudo systemctl restart rsyslog
journalctlでカーネルログを確認する方法(systemd対応)
多くのディストリビューションでは、systemd
の導入によりjournalctl
が標準となっています。/var/log/kern.log
がなくても、以下のコマンドでカーネルログを確認できます。
journalctl -k
特定期間のカーネルログを見たい場合:
journalctl -k --since "1 hour ago"
ブートごとのログを確認したい場合:
journalctl -k -b
複数の起動履歴がある場合、どのブートのログを確認したいかを選択することも可能です。
カーネルログが役立つトラブルシューティング例
1. USBデバイスが認識しない
カーネルログにUSB接続に関するエラーが記録されることで、ケーブル断線や電力不足が原因であると判断できることがあります。
2. ハードディスクのI/Oエラー
ATA bus error
やI/O error
のようなログが出る場合、ハードディスクの劣化や接続不良を疑えます。
3. ドライバの不具合
モジュールの読み込みエラーが記録されると、対応ドライバが不足している、あるいはバージョンが適合していないことが分かります。
ログをgrepでフィルタリングして効率よく読む
特定の情報だけを抽出したいときにはgrep
が便利です。
grep usb /var/log/kern.log
エラーのみを見たい場合は次のように:
grep -i error /var/log/kern.log
カーネルが再起動した原因を追いたいときは次のようなキーワードが役立ちます:
grep -i panic /var/log/kern.log
まとめ
/var/log/kern.log
は、Linuxカーネルの動作を記録した非常に重要なログファイルです。ハードウェアやドライバまわりのトラブルシューティングには欠かせない情報源であり、ログを読み解く力がLinux管理者としてのスキル向上にもつながります。
Debian系以外ではこのファイルが存在しないこともありますが、journalctl -k
で代替が可能です。普段からログを定期的に確認しておくことで、トラブルの早期発見や対応にもつながるため、ぜひ習慣づけていきましょう