4

私の目的は、Linux がどのように機能するかを学ぶことです。もっと小さなカーネルがあることは知っています - 私は Minix の本を持っていますが、問題は、概念を教えても問題ないということです - 私は本当に Linux カーネルの詳細を学びたいと思っています。

Linux カーネル ソース コードのコピーがあります。このソース コードを「起動」して、どうにかしてコードをステップ実行し、何が起こっているかを確認できる方法はありますか?

そうでない場合、何が起こっているのかを正確に知るための次善の方法は何ですか (推奨される本、ブログ、テクニカル ドキュメントなどを含む)?

編集

ソース コードには、特定の OS 領域に関する優れたドキュメントがありますか?

4

2 に答える 2

8

「ユーザーモードLinux」アーキテクチャでカーネルを構築し、別の(Linux)OS内で通常のプロセスとして実行できます。(ヒント:RTFM、 "make ARCH = um")

次に、デバッガーで実行し、どこにでもブレークポイントを設定できます。これは、通常のユーザースペースタスクと同じです。

于 2013-01-16T22:13:18.550 に答える
5

http://www.amazon.com/Professional-Linux-Kernel-Architecture-Programmer/dp/0470343435/ref=sr_1_1?ie=UTF8&qid=1358373427&sr=8-1&keywords=professional+linux+kernel+architecture

他のどの本よりもこの本をお勧めします。これは、すべてがどのように機能するかをほぼ説明し、それでも非常に正確です。

コンセプトは本当に重要であり、この本はカーネル内の主要な機能を示しているので、詳細を自分で理解できます。読むべき簡単なことは、いくつかのシステムコールです。または、いくつかのコアファイルを開いて関数を読んで、それらが何をするかを理解しようとするか、手動でトレースするだけです。

カーネルをシングルステップしたい場合は、QEMU のような仮想化ソフトウェアを使用して、デバッグモードで内部のカーネルをロードし (QEMU にはリモート GDB サポートがあります)、カーネルのシンボルテーブルkernel.syms(IIRC) を GDB にロードすることができます。何が実行されているかを正確に確認します。これは、内部で実行されているカーネルの場合は非常に遅くなる可能性があり、実際には開発カーネルのデバッグにのみ役立ちますが、速度低下を受け入れる意思がある場合は、それを試してください.

前述のように、ソースを読むのが最善ですが、少なくともそれが私が学んだ方法です。見たい機能の主要な機能を見つけてください。コードをステップ実行して何が起こるかを確認するのは難しくありません (これを簡単にするために TAGS や CSCOPE などを使用します)。

于 2013-01-16T21:59:49.180 に答える