Linux内核总结
1.文件系統(tǒng)就是數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu),不要以為你的硬盤存儲(chǔ)東西理所當(dāng)然,沒有文件系統(tǒng),你存的只是0010101101100
2.內(nèi)存管理是計(jì)算機(jī)運(yùn)行時(shí)內(nèi)存的分配和使用。
3.進(jìn)程管理就是說每次執(zhí)行一個(gè)程序都要?jiǎng)?chuàng)建一個(gè)進(jìn)程。
4、通過vfs可以調(diào)用任何格式的文件系統(tǒng)如ext2,ext3..
虛擬文件系統(tǒng)包含好多結(jié)構(gòu)體,用來描述對(duì)象。
5.索引結(jié)點(diǎn)僅在文件被訪問時(shí),才在內(nèi)存中創(chuàng)建。
-------------------------------------------------------------
linux內(nèi)核默認(rèn)存放到/boot下,而/usr/src中可查看內(nèi)核的信息。
幾種linux內(nèi)核文件的區(qū)別:
1、vmlinux 編譯出來的最原始的內(nèi)核文件,未壓縮。
2、zImage 是vmlinux經(jīng)過gzip壓縮后的文件。
3、bzImage bz表示“big zImage”,不是用bzip2壓縮的。兩者的不同之處在于,zImage解壓縮內(nèi)核到低端內(nèi)存(第一個(gè)640K),bzImage解壓縮內(nèi)核到高端內(nèi)存(1M以上)。如果內(nèi)核比較小,那么采用zImage或bzImage都行,如果比較大應(yīng)該用bzImage。
4、uImage U-boot專用的映像文件,它是在zImage之前加上一個(gè)長度為0x40的tag(64個(gè)字節(jié),說明這個(gè)映像文件的類型、加載位置、生成時(shí)間、大小等信息)。其實(shí)就是一個(gè)自動(dòng)跟手動(dòng)的區(qū)別,有了uImage頭部的描述,u-boot就知道對(duì)應(yīng)Image的信息,如果沒有頭部則需要自己手動(dòng)去搞那些參數(shù)。換句話說,如果直接從uImage的0x40位置開始執(zhí)行,zImage和uImage沒有任何區(qū)別。
5、vmlinuz 是bzImage/zImage文件的拷貝或指向bzImage/zImage的鏈接。
6、initrd 是“initial ramdisk”的簡寫。一般被用來臨時(shí)的引導(dǎo)硬件到實(shí)際內(nèi)核vmlinuz能夠接管并繼續(xù)。
---------------------------------------------------------------------------------------------------------------
initrd.img是一個(gè)小的映象,包含一個(gè)最小的linux系統(tǒng)。通常的步驟是先啟動(dòng)內(nèi)核,然后內(nèi)核掛載initrd.img,并執(zhí)行里面的腳本來進(jìn)一步掛載各種各樣的模塊,然后發(fā)現(xiàn)真正的root分區(qū),掛載并執(zhí)行/sbin/init...
initrd.img當(dāng)然是可選的了,如果沒有initrd.img,內(nèi)核就試圖直接掛載root分區(qū)。
說initrd.img文件還會(huì)提到另外一個(gè)名角---vmlinuz。vmlinuz是可引導(dǎo)的、壓縮的內(nèi)核。“vm”代表 “Virtual Memory”。Linux 支持虛擬內(nèi)存,不像老的操作系統(tǒng)比如DOS有640KB內(nèi)存的限制。Linux能夠使用硬盤空間作為虛擬內(nèi)存,因此得名“vm”。另外:vmlinux是未壓縮的內(nèi)核,vmlinuz是vmlinux的壓縮文件。
為什么要initrd.img
系統(tǒng)內(nèi)核vmlinuz被加載到內(nèi)存后開始提供底層支持,在內(nèi)核的支持下各種模塊,服務(wù)等被加載運(yùn)行。這樣當(dāng)然是大家最容易接受的方式,曾經(jīng)的linux就是這樣的運(yùn)行的。假設(shè)你的硬盤是scsi 接口而你的內(nèi)核又不支持這種接口時(shí),你的內(nèi)核就沒有辦法訪問硬盤,當(dāng)然也沒法加載硬盤上的文件系統(tǒng),怎么辦?把內(nèi)核加入scsi驅(qū)動(dòng)源碼然后重新編譯出一個(gè)新的內(nèi)核文件替換原來vmlinuz。
需要改變標(biāo)準(zhǔn)內(nèi)核默認(rèn)提供支持的例子還有很多,如果每次都需要編譯內(nèi)核就太麻煩了。所以后來的linux就提供了一個(gè)靈活的方法來解決這些問題---initrd.img。initrd.img文件就是個(gè)ram disk的映像文件。ramdisk是用一部分內(nèi)存模擬成磁盤,讓操作系統(tǒng)訪問。ram disk是標(biāo)準(zhǔn)內(nèi)核文件認(rèn)識(shí)的設(shè)備(/dev/ram0)文件系統(tǒng)也是標(biāo)準(zhǔn)內(nèi)核認(rèn)識(shí)的文件系統(tǒng)。內(nèi)核加載這個(gè)ram disk作為根文件系統(tǒng)并開始執(zhí)行其中的"某個(gè)文件"(2.6內(nèi)核是 init文件)來加載各種模塊,服務(wù)等。經(jīng)過一些配置和運(yùn)行后,就可以去物理磁盤加載真正的root分區(qū)了,然后又是一些配置等,最后啟動(dòng)成功。也就是你只需要定制適合自己的 initrd.img 文件就可以了。這要比重編內(nèi)核簡單多了,省時(shí)省事低風(fēng)險(xiǎn)。
轉(zhuǎn)載于:https://www.cnblogs.com/mcy0808/p/5164916.html
總結(jié)
- 上一篇: 第一章 TestNG框架自动化简述
- 下一篇: 《linux内核设计与实现》第一章