bootm [kernel_addr] [initrd_address] [dtb_address], 其中kernel_addr為內(nèi)核鏡像的地址,initrd為initrd的地址,dtb_address為dtb所在的地址。若initrd_address為空,則用“-”來代替。
linux執(zhí)行內(nèi)核后,會(huì)運(yùn)行init進(jìn)程,掛載根文件系統(tǒng)(rootfs B)。 init進(jìn)程,是在哪里呢?也是在根文件系統(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)核啟動(dòng)時(shí),會(huì)對(duì)內(nèi)核文件中,.init.ramfs段中的數(shù)據(jù)進(jìn)行解壓,然后使用它作為臨時(shí)的根文件系統(tǒng)。 kernel 2.6 以來都是 initramfs 了,只是很多還沿襲傳統(tǒng)使用 initrd。
說明: (initramfs和內(nèi)核編譯成一個(gè)文件(該initramfs是經(jīng)過gzip壓縮后的cpio格式的數(shù)據(jù)文件),該cpio格式的文件被鏈接進(jìn)了內(nèi)核中特殊的數(shù)據(jù)段.init.ramfs上,其中全局變量__initramfs_start和__initramfs_end分別指向這個(gè)數(shù)據(jù)段的起始地址和結(jié)束地址。)
initrd和initramfs區(qū)別如下:
|
|