sysctlを介してlog_buf_lenの値を確認したいがsysctl -a
表示されません。その理由は何であり、その値を確認する他の方法はありますか?
答え1
の価値はlog_buf_len
一気に決まっています。カーネルを設定およびビルドする場合、またはパラメータを使用して起動する場合log_buf_len=NNN
:それ以降は変更できません。sysctl
通常、あなたが興味を持っているものに興味があります。できるlog_buf_len
実行中のカーネルの変更点:おそらくこれが含まれていない理由です。
カーネル構成ファイルを使用すると、単に grep で構成された値を見つけることができますLOG_BUF_SHIFT
(使用可能であると仮定)。たとえば、私のFedora 29システムでは、次のことを行います。
$ grep CONFIG_LOG_BUF_SHIFT /boot/config-5.2.11-100.fc29.x86_64
CONFIG_LOG_BUF_SHIFT=18
log_buf_len
それから2^18と同じです〜しない限りこれは起動コマンドラインで設定されました。
そのような場合(または設定ファイルにアクセスできない場合)、私が知っている唯一の方法は、gdb
実行中のカーネルを確認することです。しかし、何年もそうしなかったので、実際に覚えておく必要はありません。すべてのステップ - 最も難しいのは、実行中のカーネルのデバッグシンボルを取得することです。他の人はこれらのガイドラインを提供する必要があります(またはおそらくより簡単な方法を提供する必要があります。たとえば、ロード時に値を印刷するカーネルモジュールを作成できます。単純なカーネルモジュールを作成するためのチュートリアルがたくさんあります。ここ:このチュートリアルは2.6カーネル時代にさかのぼります。今日の状況は異なるかもしれませんが、私は(素直に?)状況があまり変わらないと思います。