關于Linux的啟動和
出處:互聯(lián)網 發(fā)布于:2011-09-04 14:02:12
Linux是一類Unix計算機操作系統(tǒng)的統(tǒng)稱。Linux操作系統(tǒng)的內核的名字也是“Linux”。Linux操作系統(tǒng)也是自由軟件和開放源代碼發(fā)展中的例子。嚴格來講,Linux這個詞本身只表示Linux內核,但在實際上人們已經習慣了用Linux來形容整個基于Linux內核,并且使用GNU 工程各種工具和數(shù)據庫的操作系統(tǒng)。Linux得名于計算機業(yè)余愛好者Linus Torvalds。
一、Linux源碼結構介紹
二、編譯和配置的過程
三、系統(tǒng)啟動順序的相關文件
四、改造的一些經驗
一、
當安裝好一個Linux系統(tǒng),通常源碼存放在/usr/src/linux/目錄。
下面先看看這目錄下的各個子目錄及文件。
[/]#cd /usr/src/linux
[linux]#ls -aF
./ MAINTAINERS drivers/ kernel/ scripts/
../ Makefile fs/ lib/
COPYING README include/ mm/
CREDITS Rules.make init/ modules/
Documentation/ arch/ ipc/ net/
描述如下:
COPYING
GPL版權申明,看后你至少應該知道,你對具有GPL版權的源代碼改動而形成的程序,或使用GPL工具產生的程序,具有使用GPL發(fā)表的義務。其中之一就是公開源代碼。 bitsCN#com中國網管聯(lián)盟
CREDITS
光榮榜,你應當感謝的一些人的信息,其中的每一個人都對Linux做出過很大貢獻。
Documentation/
此目錄是一些文檔,起參考作用
MAINTAINERS
維護人員列表,對當前版本的內核各部分都有誰負責,如果你研究的夠深入,可以與他們討論
Makefile
如果你在UNIX編譯過程序,可以看明白README,Linus 所寫,及其編譯配置方法簡單介紹Rules.make: make時使用的一些共同規(guī)則
arch/
architecture(體系結構)arch 這個子目錄包含了此源代碼所支持的硬件體系結構相關的代碼 drivers/
系統(tǒng)中任何的設備驅動都位于此目錄中。他又進一步劃分成幾類設備驅動,每一種也有對應的子目錄,如聲卡的驅動對應于drivers/sound
fs/
文件系統(tǒng),實現(xiàn)了當前流行的幾乎所有文件系統(tǒng)。Cool
include/
這個目錄包括了的大多數(shù)include文檔。另外對于每種支持的體系結構分別有一個子目錄
init/
初始化文件,包含main.c和version.c兩個文件。Initialize。此目錄包含啟動代碼
ipc/
ipc的實現(xiàn),與SYS V兼容。此目錄包含了的進程間通訊代碼
kernel/
代碼,調度,中斷,信號等的處理
lib/
一些工具。
Mm/
此目錄包含了任何的內存管理代碼。和具體硬件體系結構相關的內存管理代碼位于arch/*/mm目錄下,如對應于X86的就是arch/i386/mm/fault.c Modules/
模塊文件目錄,用于存放編譯時產生的模塊目標文件(參考編譯過程)
net/
網絡實現(xiàn),包括TCP/IP在內的大量網絡協(xié)議的實現(xiàn)。
Scripts/
描述文件,腳本,用于對的配置。
二、
構造內核
常用命令包括:
make config, dep, clean, mrproper, zImage, bzImage, modules, modules_install
(1) make config
內核配置文件,包含由用戶選擇的配置選項,用來存放內核配置后的結果。
(2)make dep
尋找有關聯(lián)的關系,互相依存,從而產生兩個文件.depend和.hdepend。其中.hdepend表示每個.h文件都包含其它哪些嵌入文件。而.depend 文件有多個,在每個會產生目標文件(.o)文件的目錄下均有,它表示每個目標文件都依賴哪些嵌入文件(.h)。
(3)make clean
清出以前構核所產生的所有目標文件、模塊文件、以及一些臨時文件等,不產生任何文件。
(4)make rmproper
除了做make clean外,刪除所有因構核過程中產生的所有文件,還要刪除.config,.depend等文件,把源碼恢復到原始的狀態(tài)。下次構核時就必須重新配置了。
(5)make, make zImage, make bzImage
make:
構核。通過各目錄的Makefile文件進行。會在各個目錄下產生一大堆目標文件,若代碼沒有錯誤,將產生文件vmlinux,這就是所構的。并產生映射文件System.map通過各目錄的Makefile文件進行。.version 文件中的數(shù)加1,表示版本號(又產生一個新的版本了),讓你明白,你已經對改動過多少次了。
Make zImage:
在make的基礎上產生壓縮的映象文件./arch/$(ARCH)/boot/zImage以及在./arch/$(ARCH)/boot/compresed/目錄下產生一些臨時文件。
Make bzImage:
在make 的基礎上產生壓縮比例更大的映象文件./arch/$(ARCH)/boot/bzImage以及在./arch/$(ARCH)/boot/compresed/目錄下產生一些臨時文件。在太大時進行。
(6)make modules
編譯模塊文件,你在make config時所配置的所有模塊將在這時編譯,形成模塊目標文件,并把這些目標文件存放在modules目錄中。使用如下命令看一看。
Ls modules
(7)make modules_install
把上面編譯好的模塊目標文件目錄/lib/modules/$KERNEL_VERSION/ 中。比如我的版本是2.0.36,做完這個操作后可使用下面的命令看看:
ls /lib/modules/2.0.36/
三、
系統(tǒng)的啟動順序及相關文件
仍在源碼目錄下,看以下幾個文件
./arch/$ARCH/boot/bootsect.s
./arch/$ARCH/boot/setup.s
./init/main.c
bootsect.S 及 setup.S
在說明這個程序是linux kernel的個程序,也是linux自己的bootstrap程序之前,我們一般要先打開IBM PC的電源:
bootsect將它"自己"從被ROM BIOS載入的地址0x7C00處搬到0x90000處,然后利用一個jmpi(jump indirectly)的指令,跳到新位置的jmpi的下一行去執(zhí)行,
第二步
將其他segment registers包括DS,ES,SS都指向0x9000這個位置,與CS看齊。另外將SP及DX指向一任意位移地址( offset ),這個地址等一下會用來存放磁盤參數(shù)表(disk para- meter table )
第三步
利用BIOS中斷服務int 13h的第0號功能,重置磁盤控制器,使得剛才的設定發(fā)揮功能。
第四步
完成重置磁盤控制器之后,bootsect就從磁盤上讀入緊鄰著bootsect的setup程序,也就是setup.S,此讀入動作是利用BIOS中斷服務int 13h的第2號功能。Setup的image將會讀入至程序所指定的內存中緊鄰著bootsect 所在的位置。待setup的image讀入內存后,利用BIOS中斷服務int 13h的第8號功能讀取目前磁盤的參數(shù)。
讀入真正linux的kernel,可以在linux的根目錄下看到的"vmlinuz" 。在讀入前,將會先呼叫BIOS中斷服務int 10h 的第3號功能,讀取游標位置,之后再呼叫BIOS 中斷服務int 10h的第13h號功能,在螢幕上輸出字串"Loading",這個字串在boot linux時都會個出現(xiàn)。
檢查root device,仿照一開始的方法,利用indirect jump 跳至剛剛已讀入的setup部份比較
把大家所熟知的MS DOS 與linux的開機部份做個粗淺的比較,MS DOS 由位於磁盤上boot sector的boot程序負責把IO.SYS載入內存中,而IO.SYS則負有把DOS的kernel --MSDOS.SYS載入內存的重責大任。而linux則是由位於boot sector 的
bootsect程序負責把setup及l(fā)inux的kernel載入內存中,再將控制權交給setup。
Linux的的好處之一就是它的源碼公開。同時,公開的源碼也吸引著無數(shù)的電腦愛好者和程序員,解讀和分析Linux的源碼是他們的興趣,把修改Linux源碼和改造Linux系統(tǒng)作為自己對計算機技術追求的目標。
版權與免責聲明
凡本網注明“出處:維庫電子市場網”的所有作品,版權均屬于維庫電子市場網,轉載請必須注明維庫電子市場網,http://www.hbjingang.com,違反者本網將追究相關法律責任。
本網轉載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或證實其內容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品出處,并自負版權等法律責任。
如涉及作品內容、版權等問題,請在作品發(fā)表之日起一周內與本網聯(lián)系,否則視為放棄相關權利。
- ARM技術架構與應用開發(fā)實踐指南2026/1/6 10:40:19
- 嵌入式實時操作系統(tǒng)(RTOS)選型與移植技術指南2025/12/31 10:42:31
- 工業(yè)嵌入式系統(tǒng):通信接口技術選型與抗干擾設計實踐2025/12/15 14:36:53
- 深入解析嵌入式 OPENAMP 框架:開啟異核通信新時代2025/7/22 16:27:29
- 一文快速了解OPENWRT基礎知識2025/7/14 16:59:04









