Linux核心分析。3
Linux核心原始碼簡介
arch/
該目錄中包含和硬體體系結構相關的程式碼,每種平臺佔一個相應的目錄。
和32位PC相關的程式碼存放在x86目錄下。
每種平臺至少包含3個子目錄:kernel(存放支援體系結構特有的特徵實現)、lib(存放體系結構特有的對通用函式的實現)、mm(存放體系結構特有的記憶體管理程式的實現),除了這3個子目錄之外,大多數體系結構在必要的情況下還有一個boot子目錄,包含了在這種硬體平臺上啟動核心所使用的部分或全部平臺特有程式碼。
init/
核心啟動相關程式碼 -> main.c
Linux核心啟動初始化的起點就位於main.c中的函式start_kernel,相當於普通程式的main函式。
kernel/
存放linux核心最核心的程式碼,用於實現系統的核心模組,包括程式管理、程式排程器、中斷處理、系統時鐘管理、同步機制等。
該目錄中的程式碼實現這些核心模組的主體框架,獨立於具體的平臺和系統架構。
核心模組與平臺相關的程式碼放在arch/中。
構造一個簡單的Linux系統
跟蹤分析Linux核心的啟動過程
使用實驗樓的虛擬機器開啟shell
cd LinuxKernel/
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img
核心啟動完成後進入menu程式(《軟體工程C編碼實踐篇》的課程專案),支援三個命令help、version和quit,您也可以新增更多的命令,對選修過《軟體工程C編碼實踐篇》的童鞋應該是a piece of cake.
使用gdb跟蹤除錯核心
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S # 關於-s和-S選項的說明:
-S freeze CPU at startup (use ’c’ to start execution)
-s shorthand for -gdb tcp::1234 若不想使用1234埠,則可以使用-gdb tcp:xxxx來取代-s選項
另開一個shell視窗
gdb
(gdb)file linux-3.18.6/vmlinux # 在gdb介面中targe remote之前載入符號表
(gdb)target remote:1234 # 建立gdb和gdbserver之間的連線,按c 讓qemu上的Linux繼續執行
(gdb)break start_kernel # 斷點的設定可以在target remote之前,也可以在之後
總結
init/main.c ->stat_kernel
是linux核心的入口。
參考資料
http://mooc.study.163.com/learn/USTC-1000029000?tid=2001214000#/learn/content?type=detail&id=2001400011&cid=2001388025
http://www.cnblogs.com/hyq20135317/p/5260671.html#3377323
相關文章
- Linux核心分析。4Linux
- Linux核心分析。5Linux
- LINUX核心分析。6Linux
- LINUX核心分析。7Linux
- LINUX核心分析。8Linux
- Linux核心技術分析Linux
- Linux核心分析方法(轉)Linux
- 戴文的Linux核心專題:07 配置核心 (3)Linux
- Linux核心排程分析(程式排程)Linux
- Linux程式排程核心實現分析Linux
- 深入分析LInux核心連結串列Linux
- Scrapy原始碼閱讀分析_3_核心元件原始碼元件
- Linux核心分析--系統呼叫實現程式碼分析(轉)Linux
- 《Linux核心分析》筆記與課件整理Linux筆記
- Linux核心記憶體管子系統分析Linux記憶體
- Linux核心原始碼分析之setup_arch (四)Linux原始碼
- Linux核心原始碼分析之setup_arch (二)Linux原始碼
- Linux核心原始碼分析之set_arch (一)Linux原始碼
- Linux核心原始碼分析之setup_arch (三)Linux原始碼
- Linux核心建立一個程式的過程分析Linux
- [轉帖]Linux核心原始碼分析分享專題Linux原始碼
- Linux 核心排程器原始碼分析 - 初始化Linux原始碼
- Linux4.1.15核心啟動流程簡單分析Linux
- Linux核心之 核心同步Linux
- 認識linux核心(linux核心的作用)Linux
- 《Linux核心分析》 之 計算機是如何工作的。1Linux計算機
- toa 核心模組分析
- Android核心分析Android
- 初識Linux核心-DIY核心模組Linux
- Linux 4.x MTD原始碼分析-核心資料結構Linux原始碼資料結構
- 《Linux核心分析》 之 作業系統是如何工作的。2Linux作業系統
- linux核心檔案IO的系統呼叫實現分析(open)Linux
- linux核心dos_ddos攻擊防禦演算法分析Linux演算法
- 深入淺出分析Linux系統核心漏洞的問題(轉)Linux
- Linux 核心剖析Linux
- Linux核心模組Linux
- Linux系統可解除安裝核心模組完全指南(3)(轉)Linux
- 【Linux核心設計與實現】Linux核心簡介Linux