タグ付けされた質問 「kernel」

UNIXカーネルに関するすべて:開発、構成、コンパイル、設計など


3
Linuxカーネルは共有IRQをどのように処理しますか?
これまでに読んだことによると、「カーネルが割り込みを受け取ると、登録されているすべてのハンドラーが呼び出されます」。 各IRQの登録済みハンドラーはを介して表示できることを/proc/interrupts理解しています。また、登録済みハンドラーrequest_irqは、おおよそ次の形式のコールバックの受け渡しを呼び出したドライバーからのものであることも理解しています。 irqreturn_t (*handler)(int, void *) 私が知っていることに基づいて、特定のIRQに関連付けられたこれらの割り込みハンドラーコールバックのそれぞれを呼び出す必要があり、割り込みを実際に処理するかどうかを決定するのはハンドラー次第です。ハンドラーが特定の割り込みを処理しない場合、カーネルマクロを返す必要がありますIRQ_NONE。 私が理解できない問題は、各ドライバーが割り込みを処理する必要があるかどうかをどのように判断するかです。割り込みを想定している場合、内部的に追跡できると思います。もしそうなら、同じIRQの背後にある複数のドライバーが割り込みを予期している状況にどのように対処できるかわかりません。 これらの詳細を理解しようとする理由はkexec、PCIeブリッ​​ジとダウンストリームPCIのリセットピンとさまざまなレジスタで遊んでいる間にシステム操作の途中でカーネルを再実行するメカニズムをいじっているからです。端末。そうすることで、再起動後にカーネルパニックが発生するか、他のドライバーが操作を行っていなくても割り込みを受け取っていると不平を言っています。 ハンドラーが割り込みを処理する必要があると判断した方法は謎です。 編集:関連する場合、問題のCPUアーキテクチャはx86です。
14 linux  kernel  pci  interrupt  irq 

3
カーネルメモリサイズの増加
Linux 2.6.29とUBootブートローダーを実行する512MBのRAMを備えた組み込みボードがあります。ただし、カーネルは128MBのRAMしか使用できません。 の値を変更してみましたがXCODE_MEMSIZE、カーネルが使用するRAMの量を決定すると思います。 512に設定すると、起動中にカーネルがクラッシュします。変更する必要がある他の構成パラメーターはありますか?

1
Linuxカーネル:ソースツリー、ツリー内、ツリー外の意味
「ツリー内」および「ツリー外」という用語の正確な意味は何ですか?また、「ソースツリー」とは、kernel.orgからリリースされた/保守された公式カーネルを指しますか、または(修正された)Linuxカーネルソースを指すことができるより一般的な用語ですか?
14 linux  kernel 

2
カーネル/ディストリビューションのリリースとバージョンの違いは何ですか?
次のコマンドを使用して、カーネルの名前、リリース、およびバージョンを確認します。 -bash-4.1$ uname -s Linux -bash-4.1$ uname -r 2.6.32-279.el6.x86_64 -bash-4.1$ uname -v #1 SMP Wed Jun 13 18:24:36 EDT 2012 カーネルのリリースとバージョンの違いと関係は何ですか?ありがとう! Linuxディストリビューション(Ubuntu、Mintなど)についても同様の質問はありますか?つまり、Linuxディストリビューションのリリースとバージョンの違いと関係は何ですか?
14 kernel 

3
/ dev / sdaのメモリ内(カーネル)パーティションテーブルを読み取る方法
誤って/ Part / sdaパーティションテーブルをGParted で上書きしました(AskUbuntuの全容)。まだリブートしておらず、ファイルシステムは完全に使用可能なので、カーネル内のメモリからパーティションテーブルを回復できる可能性があると言われました。それは可能ですか?もしそうなら、どのようにそれを回復し、復元しますか?

3
Module.symversを生成する方法は?
最近、カーネルソースのrpmをシステム外(OpenSuse)で解凍しましたか?; マシンで10時間以上かかったので、そこで説明されているプロセスを実行した後、Module.symversどこにも見つからないことに驚いたことを想像してください。 「Generate Module.symvers」を検索すると、次のようになります。 注: CONFIG_MODVERSIONSが設定されていても、「modules_prepare」はModule.symversをビルドしません。したがって、 モジュールのバージョン管理を機能させるには、完全なカーネルビルドを実行する必要があります。 (Linuxカーネルドキュメント:: kbuild:modules.txt) ...しかし、私は実際にそれを取得しません-前のステップでカーネルが構築されなかった(上記のリンクで説明されていますか?ファイル、およびそれらをリンクするLDであるため、何かが構築されている必要がありModule.symversます。 より明確に言えば、Module.symversを生成するために正確にどのコマンドを呼び出す必要がありますか?私はそれmake prepareが機能しないことを知っています-しかし、コマンドは何ですか?


6
実行中のカーネルバージョンを確認するにはどうすればよいですか?
イーサネットカードの問題のトラブルシューティングを行っているときに、現在使用しているドライバーに古いカーネルバージョンの問題がある可能性があることがわかりました。現在実行しているカーネルのバージョンを確認するには、どのコマンドを使用できますか?

1
LinuxでNCQを(本当に)無効にする方法
VHDLで独自のSerial-ATA Host-Bus-Adapter(HBA)を実装し、FPGAにプログラムしました。FPGAは、任意のデジタル回路でプログラム可能なチップです。また、SATAまたはPCIe用の高速信号を生成するシリアルトランシーバーも装備しています。 このSATAコントローラーは、SATA 6 Gb / sラインレートをサポートし、ATA-8 DMA-IN / OUTコマンドを使用して、デバイスとの間で最大32 MiBのチャンクでデータを転送します。この設計は、最高速度で動作することが実証されています(例:Samsung SSD 840 Pro-> 550 MiB / s以上)。 複数のSSDおよびHDDデバイスを使用したいくつかのテストの後、新しいSeagate 6 TB Archive HDD(ST6000AS0002)を購入しました。このHDDは最大190 MiB / sの読み取りパフォーマンスに達しますが、書き込みパフォーマンスは30〜40 MiB / sに過ぎません。 そこで、より深く掘り下げて、送信されたフレームを測定しました(FPGAデザインで可能です)。私の知る限り、Seagate HDDは転送の最初の32 MiBを1枚で受け取る準備ができています。この転送は、580 MiB / sの最大回線速度で発生します。その後、HDDは残りのバイトを800ミリ秒以上ストールします!その後、HDDは次の32 MiBを受信する準備ができ、800ミリ秒間再び停止します。全体で1 GiBの転送には30秒以上必要です。これは約35 MiB / sに相当します。 このHDDには32 MiBの書き込みキャッシュがあり、バーストサイクルの間にフラッシュされると想定しています。32 MiB未満のデータ転送では、この動作は示されません。 私のコントローラーは、DMA-INおよびDMA-OUTコマンドを使用してデータを転送します。NCQ対応AHCIコントローラーで使用されるQUEUED-DMA-INおよびQUEUED-DMA-OUTコマンドを使用していません。FPGAプラットフォームでのAHCIとNCQの実装は非常に複雑であり、アプリケーション層では必要ありません。 Linux PCでこのシナリオを再現したいのですが、Linux AHCIドライバーではデフォルトでNCQが有効になっています。NCQを無効にする必要があるため、このWebサイトでNCQを無効にする方法を説明していますが、機能しません。 Linux PCはまだ190 MiB …
13 linux  kernel  drivers  sata 

3
Linuxはどのように「initrd」イメージをロードしますか?
起動プロセスを理解しようとしてきましたが、頭に浮かぶことが1つだけあります。 Linuxカーネルがブートされ、ルートファイルシステム(/)がマウントされるとすぐに、プログラムを実行し、追加の機能を提供するためにカーネルモジュールを統合できます。ルートファイルシステムをマウントするには、特定の条件を満たす必要があります。カーネルは、ルートファイルシステムが配置されているデバイス(特にSCSIドライバー)にアクセスするために、対応するドライバーを必要とします。カーネルには、ファイルシステムの読み取りに必要なコード(ext2、reiserfs、romfsなど)も含まれている必要があります。ルートファイルシステムがすでに暗号化されていることも考えられます。この場合、ファイルシステムをマウントするにはパスワードが必要です。 初期RAMディスク(initdiskまたはinitrdとも呼ばれる)は、上記の問題を正確に解決します。Linuxカーネルは、実際のルートファイルシステムがマウントされる前に、RAMディスクに小さなファイルシステムをロードし、そこでプログラムを実行するオプションを提供します。initrdのロードは、ブートローダー(GRUB、LILOなど)によって処理されます。ブートローダーに必要なのは、ブートメディアからデータをロードするBIOSルーチンだけです。ブートローダーがカーネルをロードできる場合、初期ramdiskもロードできます。特別なドライバーは必要ありません。 / bootが別のパーティションではなく、/パーティションに存在する場合、「initrd」イメージとカーネルイメージにアクセスするために、ブートローダーがSCSIドライバーを必要とするべきではないでしょうか?イメージに直接アクセスできる場合、なぜSCSIドライバーが必要なのですか?
13 linux  kernel  boot  initrd 

1
プログラム開始時のエントロピー消費を防止できますか?
貴重な暗号キーを作成するための安全な環境として、Knoppix(または他のLive CD / DVD)を使用しています。残念ながら、そのような環境ではエントロピーは限られたリソースです。プログラムの開始ごとにかなりのエントロピーが消費されることに気付きました。これは、アドレスのランダム化が必要なスタック保護機能が原因であると思われます。 素晴らしい機能ですが、完全に役に立たず、さらに悪いことに、私のシナリオでは破壊的です。この機能を無効にする可能性はありますか?元のKnoppix(または何でも)イメージを引き続き使用でき、実行時に構成が必要なものを好むでしょう。 これはglibcが原因だと読みました。strace -p $PID -f -e trace=openプログラムを起動したときに、bashに対して/ dev / randomへのアクセスが表示されないことに驚いています。しかし、私はexecve()とリンカーの相互作用に慣れていません。
13 linux  kernel  security 

3
SSDでの大量の書き込みアクティビティにより、システムのパフォーマンスが低下します
大量の書き込みアプリケーションを実行すると、システム全体の速度が低下することに気付きました。これをさらにテストするために、これを実行して(比較的)低CPU、高ディスクアクティビティを実行しました。 john -incremental > file_on_SSD これにより、毎秒何万もの文字列がシステムディスク上のファイルに送り出されます。 これを行うと、マウスが遅れ、TTYが応答しなくなり、アプリケーションが「フェード」し、一般的にコンピューター全体が使用できなくなります。最終的にControl + Cができるjohnと、システムは数秒後に完全な強度に戻ります。 これは極端な例ですが、高速ソースからの大きなファイルのコピーやトランスコーディングなど、書き込みの負荷が少し少ないアクティビティで同様の問題が発生します。 私のメインOSディスクは、EXT4を備えた非常に高速なSSD(OCZ Agility 60GB)です。私の書き込みした場合johnEXT4との機械的なディスクへの出力レートがたくさん遅いものの、私は(SSDは毎秒〜42,000の単語を行い、機械は8000ワット/秒をして)同じスローダウンを経験しません。スループットが関係する場合があります。メカニカルディスクもシステムとは関係ありません。それは単なるデータです。 そして、カーネル2.6.35-2を使用していますが、この問題は、SSDを入手したときに、おそらく.31またはその頃の何かを使用していたときに気づきました。 それでは、減速の原因は何ですか?EXT4の問題?カーネルの問題?SSDの問題?上記のすべて?他に何か? 追加のテストを実行する必要があると思われる場合は、何をすべきかを伝えるコメントをドロップするだけで、質問に結果を追加します。
13 kernel  performance  io  ssd 


5
menuconfigの観点から2つのカーネル構成ファイルを比較しますか?
2つのカーネル構成ファイル(同じカーネルソース用)がある状況があります。どちらにも必要な機能の一部があります(一方では、USBは正しく機能し、もう一方では、2番目のI2Cが機能します)。 menuconfigの観点から見ると、2つの構成ファイルの違いには、選択されたオプションのほんの一部しか含まれていないことを知っています。(しかし、どれがわからない) ただし、構成ファイルを手動で比較する場合(2つの.configファイル間で融合)、違いを特定するのは簡単ではありません。私はそれらを手動でマージしようとしましたが成功しませんでした。私は最終的に成功すると確信していますが、ファイルがmenuconfigに表示される方法で比較された場合、プロセスははるかに簡単になると考えています。 これは達成できますか?そうであれば、どのように?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.