萌えハッカーニュースリーダー

2025/05/24 17:33 Use ramoops for logging under Linux (2021)

出典: https://embear.ch/posts/using-ramoops/
hakase
博士

やっほー、ロボ子!今日はRamoopsについて話すのじゃ!

roboko
ロボ子

Ramoopsですか、博士。初めて聞きました。どんなものなのですか?

hakase
博士

Ramoopsはね、RAMの中に特別な場所を作って、カーネルのoopsとかコンソール出力を保存するドライバのことなのじゃ。再起動してもデータが消えないから、クラッシュの原因を特定するのに役立つんだぞ。

roboko
ロボ子

なるほど!フラッシュメモリの代わりにRAMを使うんですね。なぜRAMを使うんですか?

hakase
博士

RAMは書き込みが速いからなのじゃ!それに、永続メモリを消費しないという利点もあるぞ。ただし、RAMに保存するから、電源を切ると情報は消えちゃうけどね。

roboko
ロボ子

電源が切れると消えてしまうのは少し残念ですが、高速な書き込みは魅力的ですね。具体的には、どんな情報を保存できるんですか?

hakase
博士

`record-size`でカーネルパニック時のklogメッセージ用に64kB、`console-size`でカーネルからのコンソール出力用に最大64kB、`pmsg-size`でユーザーメッセージ用に4kBを保存できるのじゃ。

roboko
ロボ子

結構たくさん保存できるんですね!設定も必要なんでしょうか?

hakase
博士

そうじゃ!デバイスツリーで予約済みメモリ領域を定義する必要があるぞ。それから、pstoreとramoopsの設定がカーネル設定で有効になっているか確認するのじゃ。

roboko
ロボ子

なるほど、デバイスツリーの設定も必要なんですね。実際にRamoopsが有効になっていると、どうなるんですか?

hakase
博士

再起動すると、`/mnt/console-ramoops-0`に前回の起動からのカーネルコンソール出力が保存されるのじゃ。カーネルパニックが発生した場合は、`/mnt/dmesg-ramoops-0`に詳細なdmesgログが保存されるぞ。

roboko
ロボ子

`dmesg-ramoops-0`ファイルはカーネルパニック後にのみ表示されるんですね。通常の再起動後には表示されないと。

hakase
博士

その通り!あと、`/dev/pmsg0`にユーザーメッセージを書き込むことで、再起動後もメッセージを保持できるのじゃ。例えば、再起動コマンド実行後に"reboot"を保存しておけば、再起動後に`/mnt/pmsg-ramoops-0`を確認することで、ユーザーによる再起動、電源サイクル、カーネルパニックを区別できるぞ。

roboko
ロボ子

それは便利ですね!システムの再起動理由を特定できるのは、デバッグに役立ちそうです。

hakase
博士

じゃろ?Ramoopsは、カーネルパニック後のログを保持したり、コンソールログやユーザーデータを再起動間で保持したりするのに使えるのじゃ。Apalis iMX8QM from Toradexのような環境で、Reference Multimedia Image 5.1.0を使っている場合に特に便利じゃ。

roboko
ロボ子

なるほど、よくわかりました!Ramoopsは、組み込みシステム開発で活躍しそうですね。

hakase
博士

そういうことじゃ!ところでロボ子、Ramoopsを使って、冷蔵庫が勝手に再起動する原因を突き止める、というのはどうかの?

roboko
ロボ子

冷蔵庫ですか!?それは面白いかもしれませんね。でも、まずは博士の部屋の掃除から始めませんか?

hakase
博士

むむ、それは見なかったことにするのじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search