標籤:linux 核心 啟動流程
一、Linux啟動核心檔案
1.Linux系統組成
動態視角:核心+根檔案系統
靜態視角:磁碟分割+相關檔案
2.Kernel特點
(1)支援某塊化:.ko (kernel object)檔案
centos7的ko檔案:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/80/69/wKiom1dAWsqgGSJbAAGIzZrrfQg922.jpg" title="ko檔案" alt="wKiom1dAWsqgGSJbAAGIzZrrfQg922.jpg" />
centos6的ko檔案:
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/80/69/wKiom1dAW9PSC1y-AAGLXq46iqM024.jpg" title="ko檔案2.jpg" alt="wKiom1dAW9PSC1y-AAGLXq46iqM024.jpg" />
注意:
Linux核心模組檔案的命名方式通常為<模組名稱.ko>
centos6系統的核心模組被集放在/lib/modules/‘uname -r ‘/目錄下
centos7系統的核心模組被集放在/usr/lib/modules/‘uname -r ‘/目錄下
(2)支援模組運行時動態裝載或卸載;
模組的相關命令:
a)載入模組:insmod modprobe
insmod和modprobe的區別:
當a模組與b模組有依賴關係時,假設安裝b模組需先安裝a模組。
如果用insmod命令那麼需要先insmod a.ko 然後再insmod b.ko。
如果用modprobe命令那麼直接可以modprobeb.ko。
其中/lib/modules/“核心版本號碼”/modules.dep中記錄了模組之間的依賴關係。
通過modprobe載入的核心均在當前的電腦內有效,電腦重新啟動後需要重新載入才有效。
如果想要開機後自動掛載核心,需要將modprobe命令寫入/etc/rc.sysint檔案中
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/80/69/wKiom1dAYD_w1ssNAAEwyRfwgfg333.jpg" title="ip_vs.jpg" alt="wKiom1dAYD_w1ssNAAEwyRfwgfg333.jpg" />
b)卸載模組:rmmod modprobe -r
rmmod:只需要調用模組名即可,比如安裝的時候是inmod a.ko 安裝完畢後該模組存在於核心中的名字為a,那麼卸載該模組只需要rmmod a即可。
modprobe -r:能將依賴的模組一併卸載掉
[[email protected] ~]# modprobe ip_vs #動態載入ip_vs模組
[[email protected] ~]# lsmod |grep ip_vs #查看模組是否載入成功
ip_vs 125220 0
libcrc32c 1246 1 ip_vs
ipv6 317340 289 ip_vs
[[email protected] ~]# modprobe -r ip_vs #卸載動態模組
[[email protected] ~]# lsmod |grep ip_vs #模組已經卸載乾淨
c)查看模組:lsmod
輸出三列資訊
分別為模組 佔用記憶體 是否被調用
如果第三列為0則該模組可以隨時可以卸載。
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/80/69/wKiom1dAXiWCynvDAAB99f8BiMk997.jpg" title="lsmod.jpg" alt="wKiom1dAXiWCynvDAAB99f8BiMk997.jpg" />
總結:Linux kernel在單核心設計模型上,吸取了多核心設計的優點,使用了模組化設計
單核心設計:把所有功能整合於同一個程式;如Linux
微核心設計:每種功能使用一個單獨的子系統實現;如Windows,Solaris
3.kernel組成
(1)核心檔案
1)/boot/vmlinuz-VERSION-release
註: vmlinuz最後一一個z表示壓縮格式的kernel檔案
2)ramdisk(中間臨時檔案根系統,動態建立出來的,使用緩衝和緩衝來加速對磁碟上的檔案訪問)
安裝作業系統後臨時產生的檔案,能夠掃描當前作業系統的硬碟驅動,裝載對應的模組
用於實現系統初始化的基於記憶體的磁碟裝置,把記憶體中的一段空間當記憶體使用量
CentOS 5:/boot/initrd-VERSION-release.img
工具程式:mkinitrd
CentOS 6,7:/boot/initramfs-VERSION-release.img
工具程式:dracut,mkinitrd
注意:
a)不是必須的,當自編譯核心時候知道硬碟介面時候將硬碟驅動編譯進kernel,ramdisk就不用了
b)initrd,基於ramdisk的磁碟映像檔案;initramfs,基於ramdisk的檔案系統
initrd啟動該後用free查看memory時候,有一段空間被buffers和cached佔用,二次緩衝
本文出自 “2913680” 部落格,謝絕轉載!
CentOS系列啟動流程(5系列,6系列,7系列)