問題タブ [printk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - カーネルモジュール:コンソール出力を取得する方法は?
カーネルモジュールを作成していますが、を使用してロードするときに、コンソール出力に何かを出力できるようにしたいと考えていますinsmod module.ko
。
使ってみました
しかし、コンソールには何も表示されません。ただし、には表示されませんdmesg
。
追加情報:
Linux-3.0.0でIntelx8632ビットを使用しています
そしてcat /proc/sys/kernel/printk
与える4 4 1 7
linux - printk.timeを追加する場所は?
これは非常に単純な質問ですが、Linuxについての知識がほとんどなく、Linuxの構築を開始しています。
printk時間を使用してカーネルをデバッグしようとしています。私はこのウェブサイトをフォローしています:http://elinux.org/Printk_Timesそして真ん中にそれを使うように言っています:「カーネルを起動するとき、オプション「printk.time = 1」(または古いカーネルの場合は「time」)を追加しますカーネルコマンドラインで"
カーネルコマンドラインはどこにありますか?この行をgrubに追加して、grubを更新しますか?
このコマンドをどこに追加すればよいかアドバイスしてください。
どうもありがとう、
c - tcp_cubic.c の printk
tcp_cubic.cに次のprintkステートメントを含めました。
しかし、dmesg または syslog に値を出力していません。何故ですか?
linux - モジュールプログラミングでの printk loglevel の使用法
Rubini による本LDD3のセクションの下でprintk
、著者はメッセージにログレベル/優先度を与えることができると述べています。しかし、異なるログレベルのprintksを持つ単純なモジュールプログラムを試してみましたが、プログラム内にprintkメッセージを書いたのと同じ順序を示しています。優先度に従って印刷されないのはなぜですか?
ここにコードをコピーしました
そして、次のような出力を得ました
だから私はどのように優先度に従ってそれを印刷することができますか
linux - ログレベルが適切に設定されているにもかかわらず、Printk が印刷されない
私の問題は、カーネルにドライバーをビルドしようとしていることです。簡単な Hello World プログラムでコードをテストすることにしました。コードは次のようになります。
また、 cat /proc/sys/kernel/printk は 7 4 1 7 を示します .config ファイルから、「CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4」を見つけます
Makefile で obj-y += を使用してファイルを作成しています。「make」でモジュールをビルドできることがわかりましたが、ブート後に dmesg または /var/log/ の下に printk 出力が表示されません。
ドライバーがカーネルにまったく組み込まれていないのではないかと思っています。それを確認する方法はありますか?
ありがとう。
logging - dmesgと/var/log/kern.logの違い
kvmモジュールを変更し、カーネルコードにprintkステートメントを追加しました。仮想マシンを実行した後、printkは障害のあるアドレスとゲストOSに関するその他の情報を提供します。
この情報から統計を生成する必要があります.dmesgを使用すると、カーネルスペースで障害のあるアドレスのみを確認できます。つまり、アドレスが0XC0000000を超えています(VMEXITが発生した場合、つまりゲストモードからホストモードに切り替える場合は、障害のあるアドレスが必要です)
kern.logに同じ統計が表示されると、ユーザースペース(0XC0000000未満)から障害のあるアドレスも取得します。したがって、dmesgの容量は限られているように思えます。また、提供される情報はkern.logのサブセットです。
私のkern.logファイルは大きすぎます。grep、join、awkなどのテキスト処理コマンドがファイルで実行するのに時間がかかりすぎるため、kern.logから古いデータを消去しても問題ありません。
私の質問は次
のとおりです。dmesgとkern.logの違いは何ですか?
cronジョブとしてkern.logファイルのサイズを減らす方法は?(過去24時間に追加されたすべてのデータを消去する)
カーネルからprintfのような機能を取得するためのより良い方法はありますか?
linux-kernel - ユーザー空間で初期化された char * を printk するとどうなりますか?
導入演習として、新しいシステム コールを実装しました。バッファを取り込み、そのバッファを printk するだけです。後で、copy_from_user を使用するのが正しい方法であることを知りました。
これはアドレスを検証するための単なる予防措置ですか、それともシステム コールがエラー (ページ フォールト?) を引き起こしているのでしょうか?
それが単なる予防措置である場合、それは何から保護していますか?
ありがとう!
system-calls - printkデータの損失と切り捨て
カーネルローダブルモジュールでprintkを使用して、システムコールのパラメーターをログに記録しています。システムコールごとに、いくつかのprintkを使用して、区切り文字として「\t」が付いた変数ホエーを出力します。カーネルログバッファ内のデータをシステム/var/ log / messages以外の別のファイルにリダイレクトするには、「klogd-f」を使用してsyslogインターフェイスをバイパスします。取得されるログデータは、システムコールごとに1行です。しかし、データを分析したところ、2つの問題があることがわかりました。
問題1:データが失われる可能性があります。
問題2:あるシステムコールのデータが別のシステムコールに属するデータと混合されている(おそらく途中で)。
質問1:データの損失は、バッファ内の最も古いログを上書きするカーネルログバッファオーバーフローが原因ですか?もしそうなら、それを克服する方法は?カーネルログバッファのサイズを増やす予定です。あなたはそれが適切で、どのサイズが最適だと思いますか?
質問2:システムコールは別のシステムコールをプリエンプトできますか?または、状況によっては、あるシステムコールが別のシステムコールを呼び出し、呼び出されたシステムコールが終了しない限り終了できない場合がありますか?これがデータが混ざり合う理由ですか?
質問3:printkはアトミックですか?そうでない場合、printkをアトミックにする方法は?中断できないようにロックを追加しますか?
linux - モジュールのprintkの出力を自分のログファイルに作成する
Linuxモジュールのプログラミングを行っています。私は通常、デバッグ用に小さなエラー メッセージやその他のものを出力します。その後、モジュールを終了し、「dmesg」を使用して何が起きているかを確認します。
そのデバッグ方法はもはや十分ではありません。「printk」テキストを自分のログファイル (できればローカル) にパイプしたいのですが、それが不可能な場合は理解しており、var/log/*.log のような場所に配置する必要があります。
syslog.conf の編集を検討しましたが、そこで何をすべきかわかりません。モジュールのprintkだけを独自のファイルに入れたい。私のGoogle-fuがキャッチできないこれを行う簡単な方法はありますか?
c - printk loff_t 型の書式指定子?
学校の課題用に Linux キャラクター デバイス ドライバーを作成していますが、*ppos
渡された を読み取り関数に出力する方法がわかりませんloff_t
。
printk
カーネル内の標準ライブラリではなく使用する必要があることはわかってprintf
いますが、適切なフォーマット指定子がわかりません。