sysctl -a には log_buf_len は含まれません。

sysctl -a には log_buf_len は含まれません。

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カーネル時代にさかのぼります。今日の状況は異なるかもしれませんが、私は(素直に?)状況があまり変わらないと思います。

関連情報