linux内核如何创建/ dev / root - Initramfs查询

时间:2016-05-18 21:01:50

标签: linux embedded-linux bootloader yocto

我需要创建一个initramfs来加载驱动程序以访问包含rootfs的EMMC。

  • 在我目前的内核构建中,EMMC驱动程序是模块化的(抱歉,无法更改此内容)。
  • 内核启动后,它会加载initramfs。
  • 从initramfs开始,它需要使用switch_root函数切换到包含实际rootfs的EMMC上的分区。

直到这里一切顺利。我可以创建initramfs,让内核加载它然后也让它切换到/ dev / mmcblk0p2,这是包含实际rootfs的EMMC分区。 我的问题:

引导完成后,mount命令显示以下内容:

on rootfs on / type rootfs(rw)
/ dev / mmcblk0p2 on / type ext4(rw,sync,noatime,data = ordered)
proc on / proc type proc(rw,relatime) < ...>
/ dev / mmcblk0p1 on / var / volatile / run / media / mmcblk0p1 type vfat(rw,relatime,fmask = 0022,dmask = 0022,codepage = 437,iocharset = iso8859-1,sh)
/ dev / mmcblk0p3 on / var / volatile / run / media / mmcblk0p3 type ext4(rw,relatime,data = ordered)
/ dev / mmcblk0p4 on / var / volatile / run / media / mmcblk0p4 type ext4(rw,relatime,data = ordered)

如果我将EMMC驱动程序构建为内核的一部分(并摆脱initramfs),那么输出就会大不相同:

on rootfs on / type rootfs(rw)
/ dev / root on / type ext4(rw,relatime,discard,journal_checksum,commit = 1,data = ordered)
devtmpfs on / dev type devtmpfs(rw,relatime,size = 112272k,nr_inodes = 28068,mode = 755) < ....>
/ dev / mmcblk0p1 on / var / volatile / run / media / mmcblk0p1 type vfat(rw,relatime,fmask = 0022,dmask = 0022,codepage = 437,iocharset = iso8859-1,sh)
/ dev / mmcblk0p3 on / var / volatile / run / media / mmcblk0p3 type ext4(rw,relatime,data = ordered)
/ dev / mmcblk0p4 on / var / volatile / run / media / mmcblk0p4 type ext4(rw,relatime,data = ordered)

  • 虽然当我检查内核日志和主要的次要设备号时,我发现/ dev / root仅对应于/ dev / mmcblk0p2。
  • 但我无法弄清楚为什么mount的输出不同。

在花了这么多精力让initramfs工作之后,我不想错过任何微不足道的事情。任何帮助,非常感谢。

0 个答案:

没有答案