|
bootm [kernel_addr] [initrd_address] [dtb_address], 其中kernel_addr為內(nèi)核鏡像的地址,initrd為initrd的地址,dtb_address為dtb所在的地址。若initrd_address為空,則用“-”來代替。
linux執(zhí)行內(nèi)核后,會運行init進程,掛載根文件系統(tǒng)(rootfs B)。 init進程,是在哪里呢?也是在根文件系統(tǒng)(rootfs A)。 rootfs A和rootfs B之間關(guān)系呢? kernel 2.6版之前,rootfs-A在initrd.img中。kernel先mount initrd.img,掛載rootfs-B,然后unmount 。 kernel2.6版及之后,rootfs-A在initramfs中。內(nèi)核啟動時,會對內(nèi)核文件中,.init.ramfs段中的數(shù)據(jù)進行解壓,然后使用它作為臨時的根文件系統(tǒng)。 kernel 2.6 以來都是 initramfs 了,只是很多還沿襲傳統(tǒng)使用 initrd。
說明: (initramfs和內(nèi)核編譯成一個文件(該initramfs是經(jīng)過gzip壓縮后的cpio格式的數(shù)據(jù)文件),該cpio格式的文件被鏈接進了內(nèi)核中特殊的數(shù)據(jù)段.init.ramfs上,其中全局變量__initramfs_start和__initramfs_end分別指向這個數(shù)據(jù)段的起始地址和結(jié)束地址。)
initrd和initramfs區(qū)別如下:
|
|
|
來自: 看見就非常 > 《OS操作系統(tǒng)》