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