bootm [kernel_addr] [initrd_address] [dtb_address], 其中kernel_addr为内核镜像的地址,initrd为initrd的地址,dtb_address为dtb所在的地址。若initrd_address为空,则用“-”来代替。
linux执行内核后,会运行init进程,挂载根文件系统(rootfs B)。 init进程,是在哪里呢?也是在根文件系统(rootfs A)。 rootfs A和rootfs B之间关系呢? kernel 2.6版之前,rootfs-A在initrd.img中。kernel先mount initrd.img,挂载rootfs-B,然后unmount 。 kernel2.6版及之后,rootfs-A在initramfs中。内核启动时,会对内核文件中,.init.ramfs段中的数据进行解压,然后使用它作为临时的根文件系统。 kernel 2.6 以来都是 initramfs 了,只是很多还沿袭传统使用 initrd。
说明: (initramfs和内核编译成一个文件(该initramfs是经过gzip压缩后的cpio格式的数据文件),该cpio格式的文件被链接进了内核中特殊的数据段.init.ramfs上,其中全局变量__initramfs_start和__initramfs_end分别指向这个数据段的起始地址和结束地址。)
initrd和initramfs区别如下:
|
|