0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

組込みLinuxでログ解析

Last updated at Posted at 2025-04-25

質問:「組込みLinuxのログ解析をするのに必要な知識について教えてください.」
以下はChatGPTの回答.


組込みLinuxでログ解析を行うには、システムの構造を理解しつつ、ログの出力先や意味を正しく読み解くスキルが求められます。以下に、ログ解析に必要な知識を優先度別に整理して紹介します。


🔧 【基礎知識】まずはここから!

1. ログの種類と出力先の理解

  • dmesg:カーネルリングバッファ(カーネル関連のイベント)
  • journalctlsystemdが管理するシステムログ
  • /var/log/以下:
    • syslogkern.logmessages(ディストリビューションにより異なる)

2. ログの見方・フィルタ方法

  • journalctl -k:カーネルログだけを表示
  • journalctl -b -1:前回起動時のログ
  • journalctl -u <サービス名>:特定のサービスのログ
  • dmesg | grep -i error:カーネルエラーを抽出

3. タイムスタンプと起動セッションの区別

  • journalctl --list-boots:起動セッションを確認
  • journalctl -b -1-b -2などで過去のログ確認が可能

🧠 【中級】問題の特定に必要な知識

4. システム構成の理解

  • systemdのユニットとログ連携
  • udevNetworkManagerdbusなど周辺プロセス

5. ログメッセージの意味

  • カーネルログのレベル([INFO], [WARN], [ERROR], BUG, Oops, panic
  • OOM Killer(Out of Memory)によるプロセス終了
  • Call Trace: の読み方と関数名からの原因推定

6. リソース状況との関連

  • free, vmstat, top, iotop 等でメモリ/CPU/IO状況を補完的に確認

🧪 【実践知識】クラッシュや異常時の解析力

7. カーネルクラッシュログ解析

  • BUG, Oops, Kernel panic のログ構造理解
  • panic=1kdump を使ったクラッシュダンプ収集と解析(高度)

8. デバイスドライバ・ハードウェアエラーの検出

  • usb 1-1: device descriptor read/64, error -110
  • mmc0: Timeout waiting for hardware interrupt

9. root cause(根本原因)の特定スキル

  • 単なる結果としてのログでなく、因果関係の読み解き
  • 直前の操作・イベントと照らし合わせる力

🛠️ 補助ツール・スキル

  • gdb, addr2line などでアドレス→ソース対応
  • ビルド時にCONFIG_DEBUG_INFOを有効にしておく
  • strace, perf, ftrace, lttng 等トレースツール

💡まとめ:おすすめステップアップ順

  1. dmesgjournalctlに慣れる
  2. OOMやpanicの典型ログパターンを理解
  3. systemdやサービス構造に慣れる
  4. アドレス・関数名から原因を深堀できるようにする

「こういうとき、何を見るといい?」というパターンを積み上げるのが一番身になります。
必要なら「異常リスト&原因特定の早見表」的な資料も一緒に作れますよ。欲しいですか?


質問2:「異常リスト&原因特定の早見表を作ってください.」
以下はChatGPTの回答.


了解です!以下に、「異常ログと原因特定の早見表」を表形式でまとめました。これは組込みLinuxの開発・検証中によく遭遇する問題を中心に、確認ポイントや原因、対処の方向性を整理したものです。


📋 異常ログ&原因特定の早見表(組込みLinux向け)

種類 典型的なログ/症状 原因の候補 確認コマンド / ファイル 対処の方向性
⚠️ OOM(Out Of Memory) oom-kill: task=xxx, pid=yyy
Out of memory: Killed process
メモリ枯渇、プロセスの暴走 dmesg / journalctl -k
free -h, top
メモリ使用量制限、swap増設、暴走プロセス特定
💥 カーネルパニック Kernel panic - not syncing
Unable to handle kernel NULL pointer dereference
NULLポインタ参照、ハード障害、ドライババグ dmesg直前ログ / シリアル出力 カーネルデバッグ / 回避策実装
panic=1による再起動など
💣 Oops / BUG BUG: unable to handle kernel NULL pointer dereference
Oops: 0000 [#1] SMP
カーネル内エラー、ドライバ問題 dmesg or journalctl -k
Call Trace解析
問題箇所特定 & 修正 / addr2lineでアドレス変換
⛔ デバイスエラー mmc0: Timeout waiting for hardware interrupt
usb 1-1: device descriptor read/64, error -110
デバイス不良、電源不足、ドライバ未対応 dmesg, /sys/class/...
lsusb, lsblk, i2cdetect
ハード検証、別電源使用、ドライバ確認
🌀 起動ループ・再起動 起動直後に再起動を繰り返す パニック、電源異常、watchdog発火 シリアルログ / journalctl -b -1 panic設定・watchdog解除・ハード確認
🚫 サービス起動失敗 Failed to start xxx.service
Exit code=1
設定ミス、依存サービス未起動 systemctl status xxx
journalctl -u xxx
設定ファイル確認・依存関係修正
🔒 ファイル書き込み不可 Read-only file system
No space left on device
ストレージ破損、容量不足 df -h, mount, dmesg fsck、ストレージ交換・拡張
🔄 時計の異常 RTC not present
System clock wrong
RTC未接続、NTP未設定 timedatectl, dmesg RTC接続、ntpd/systemd-timesyncd設定
📶 ネットワーク不通 eth0: link down
Network is unreachable
ケーブル断、IP設定ミス ip a, ping, ethtool ケーブル・設定・DHCP確認
🧨 アプリクラッシュ Segmentation fault (core dumped) NULL参照、境界超えなど journalctl, coredumpctl
gdbでcore解析
アプリ修正、ログ・バックトレース確認

🛠 補足:困ったときに見るファイル&コマンド

リソース 内容
/var/log/syslog, kern.log, messages システム全般のログ(ディストロ依存)
dmesg, journalctl -k カーネル関連のイベント
journalctl -b -1 前回の起動セッションのログ確認
systemctl status <service> サービスの状態・エラー確認
free -h, vmstat, top, iotop リソースの使用状況
coredumpctl アプリのクラッシュ情報(coredump)

この表をPDFにしたり、Markdownで書き出してドキュメントにすることもできます。
必要ならフォーマット指定してください!また、どれか深掘りしたい項目があれば、そこを詳しく解説することもできますよ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?