歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux服務器 >> 從GRUB到內核 從內核到根文件系統

從GRUB到內核 從內核到根文件系統

日期:2017/3/2 16:42:36   编辑:Linux服務器

按下電源,咔一下,電腦啟動啦,接著BIOS的畫面出來啦,不一會,GRUB的界面出來,然後就是一行接一行的字符在黑屏上閃動,不時地有OK的字樣出現.呵呵,不要走神哈,該輸入用戶名和密碼啦,….成功地進入了系統,這算是系統啟動完成啦。那麼這個過程到底有什麼事情發生啦,哪些值得我們學習呢?本文就以linux 開機為線索,講述引導器,內核,根文件系統的關系。

1)引導器

這個是大家所熟知的吧,linux下常用的就有:grub,這是當今主流啦;lilo,這啊,曾經風光過,現在讓grub接了重任;syslinux這是個輕量級的引導器,一般在光盤,USB上做引導器,做個liveUSB的應該很清楚哦,無盤啟動的應用中也能找到它的身影.

引導器的主要功能就是找到內核(vmlinuz),然後把它載入內存,當然還有initrd啦,以GRUB為例,在我的系統(centos5.2)裡是這麼寫的

#/boot/grub/menu.lst

title Centos 5.2 kernel-2.6.18-92.1.17.el5
root (hd0,7)
kernel /vmlinuz-2.6.18-92.1.17.el5 root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-92.1.17.el5.img
boot


在這明確了內核的位置,並向內核傳遞了一些參數。initrd扮了一個很重要的角色 ,負責在內核訪問根文件系統前加載驅動。

2)內核

一個完整的內核就是由內核源碼產生的,在這kernel.org 能找到源碼,壓縮後有50M左右,解開後有好幾百M呢,我們可以重新編譯源碼來更新我們已有的內核,以提高性能和兼容能力。那麼這個源碼經編譯後產出了哪些東東呢,出以我的機子為例:

A)內核部分,在/boot分區下

/boot/initrd-2.6.18-92.1.17.el5.img

/boot/System.map-2.6.18-92.1.17.el5…………….這是符號表,函數與地址的映射關系

/boot/vmlinuz-2.6.18-92.1.17.el5

/boot/config-2.6.18-92.1.17.el5………………………..內核的配置文件,由make xconfig命令產生的


B) 內核模塊部分,在/lib/modules/2.6.18-92.1.17.el5目錄下 ,2.6.18-92.1.17.el5這是版本號,每一個人的機子上可能會不同。所有模塊都在這,還有它們之間的依賴關系

[root@xx 2.6.18-92.1.17.el5]# pwd
/lib/modules/2.6.18-92.1.17.el5
[root@xx 2.6.18-92.1.17.el5]# ls -l
總計 1128
lrwxrwxrwx 1 root root 48 11-11 20:14 build -> ../../../usr/src/kernels/2.6.18-92.1.17.el5-i686
drwxr-xr-x 2 root root 4096 11-05 03:09 extra
drwxr-xr-x 10 root root 4096 11-11 20:28 kernel ……………………………內核模塊就中此目錄
drwxr-xr-x 2 root root 4096 11-13 14:50 misc
-rw-r–r– 1 root root 252332 11-13 14:50 modules.alias
-rw-r–r– 1 root root 69 11-13 14:50 modules.ccwmap
-rw-r–r– 1 root root 209702 11-13 14:50 modules.dep………………….模塊間的依賴關系
-rw-r–r– 1 root root 147 11-13 14:50 modules.ieee1394map
-rw-r–r– 1 root root 375 11-13 14:50 modules.inputmap
-rw-r–r– 1 root root 2314 11-13 14:50 modules.isapnpmap
-rw-r–r– 1 root root 74 11-13 14:50 modules.ofmap
-rw-r–r– 1 root root 191108 11-13 14:50 modules.pcimap……………….物理設備與內核模塊的對應關系
-rw-r–r– 1 root root 589 11-13 14:50 modules.seriomap
-rw-r–r– 1 root root 105259 11-13 14:50 modules.symbols
-rw-r–r– 1 root root 322731 11-13 14:50 modules.usbmap
lrwxrwxrwx 1 root root 5 11-11 20:14 source -> build
drwxr-xr-x 2 root root 4096 11-05 03:09 updates
drwxr-xr-x 4 root root 4096 11-11 20:14 weak-updates


注意source,build這兩個目錄,在裝顯卡驅動時就認識它們倆了吧,

C)頭文件及相關的內核配置文件

/usr/src/kernels/2.6.18-92.1.17.el5-i686,在構造或者是編譯相關內核模塊就要用到這個地方的文件,在安裝顯卡驅動的時候就是這個目錄下的東東,有沒有什麼映象啊,為什麼呢?當然是想看看3D桌面啦,是不是啊。。。。

[root@xx 2.6.18-92.1.17.el5-i686]# pwd
/usr/src/kernels/2.6.18-92.1.17.el5-i686
[root@xx 2.6.18-92.1.17.el5-i686]# ls
arch drivers init kernel mm net sound
block fs ipc lib Module.kabi scripts symsets-2.6.18-92.1.17.el5.tar.gz
crypto include kabi_whitelist Makefile Module.symvers security usr


頭文件在include目錄下

3)根文件系統

根文件系統很熟悉撒,開機後進入的系統就在根文件系統裡,有/boot,/usr,/bin,/var等等

引導器,內核,根文件系統 ,有了一個大概的映象了,現在就說說它們之事有一些事兒。

引導器找內核,如GRUB它自代了一點驅動可以讀內核所處的文件系統,如syslinux它是通過扇區地址找到的內核,initrd內有個名叫linuxrc或init的可執行文件(shell腳本也可以),提供一個虛根環境,加載硬盤驅動,讀取根文件系統,為內核換根(從虛根環境到根文件系統)做個物質准備。內核換到根文件系統後,以前的虛根環境被umount掉啦,至此內核就可加載它所需要的內核模塊啦,然後系統就啟動啦

Copyright © Linux教程網 All Rights Reserved