学習コンテンツの4週目
Paodingjieniu Linuxカーネルの分析第三章:MenuOS建設
Linuxカーネルの分析第三の実験
私はいくつかの知識を学びました
- オペレーティングシステム2つの剣:1割り込みコンテキストスイッチング - プロセスのコンテキストスイッチ2フィールドのサイトを保存し、復元
- 命名規則Linuxカーネルバージョン:ABCD、Aはカーネルの実質的な変化を表し、Bはカーネルに大きな変更の数を意味し、Cは、カーネルの本当のバージョンであり、Dは、セキュリティパッチやバグ修正です
- Linuxカーネルのソースディレクトリ構造:
- これだけのx86ファイルディレクトリに焦点を当てる必要があります、基本的にはx86アーキテクチャです我々はコンピュータを使用し、Linuxカーネルの内容が異なるCPUとアーキテクチャをサポートすることができますアーチことができます
- デバイス管理部に格納されているLinuxのストレージ・システムのブロック・コード
- 暗号休日ストアなどCRC32、MD5、SHA1、としてそのC言語コードの暗号化アルゴリズム、
- 文書には、いくつかのドキュメントを格納します
- ドライバは、すべてのハードウェアドライバのソースコードをサポートするためのLinuxカーネル内に格納され、ディレクトリを駆動します
- ファームウェアファームウェア
- Linuxの一覧を示します達成FSファイルシステムは、様々なファイルシステムをサポートしています
- 公共のヘッダファイルを格納したヘッダファイルのインクルードディレクトリ
- 初期化初期化コードは、main.cのソースファイルは、全体Linuxカーネルのブートの出発点であるLinuxカーネルの開始時に保存されています
- IPCは、プロセス間通信、ストレージは、IPCのLinuxのコードの実装によってサポートされています
- 自身が必要とするコアコードの一部を格納するためのカーネルのカーネル、カーネルファイル
- libの公共図書館、いくつかの公共図書館
- MMは、メモリ管理、メモリ管理、ストレージ管理コードのLinuxカーネルであります
- そのようなTCP / IPスタックなどのネット関連するコード・ストレージ・ネットワーク、
- readmeファイルは、Linuxが何であるかを説明した文書は、Linuxは、ハードウェアやその他の問題に実行することができます。
- より重要なのLinuxカーネル解析がアーチのx86ディレクトリの下のディレクトリ内のソースファイルで、次のカーネルスケジューリングおよびプロセス関連のコードの下のmain.cのinitディレクトリは、他のメモリ管理、ネットワーキング、ファイルシステムのコードがあります
ウェブテスト
Linuxカーネルのブートプロセスのフォローアップ分析
1. menuos
cd LinuxKernel/
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img
開始効果が示されています
2. GDBのデバッグカーネルのトレース
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S
別のシェル・ウィンドウを開き、次のLinuxカーネルディレクトリのgdbの入力入力して
GDBにセットブレークポイントを
file linux-3.18.6/vmlinux #加载符号表
target remote:1234 #建立gdb和gdbserver之间的连接
break start_kernel #设置断点
c #让qemu上的linux继续运行
break rest_init #设置另一个断点
c #继续执行
結果の図の実装