我需要创建一个initramfs来加载驱动程序以访问包含rootfs的EMMC .
-
在我当前的内核构建中,EMMC驱动程序是模块化的(抱歉,无法更改此内容) .
-
内核启动后,它会加载initramfs .
-
从initramfs,它需要切换到EMMC上的一个分区,该分区包含使用switch_root函数的实际rootfs .
直到这里一切都运作良好 . 我可以创建initramfs,让内核加载它然后也让它切换到/ dev / mmcblk0p2,这是包含实际rootfs的EMMC分区 . 我的查询:
引导完成后,mount命令显示以下内容:
rootfs on / type rootfs(rw)
/dev/mmcblk0p2 on / type ext4 (rw,sync,noatime,data=ordered)
proc on / proc type proc(rw,relatime)<...>
/ var / volatile / run / media / mmcblk0p1上的/ dev / mmcblk0p1类型vfat(rw,relatime,fmask = 0022,dmask = 0022,codepage = 437,iocharset = iso8859-1,sh)
/ var / volatile / run / media / mmcblk0p3上的/ dev / mmcblk0p3类型为ext4(rw,relatime,data = ordered)
/ var / volatile / run / media / mmcblk0p4上的/ dev / mmcblk0p4类型为ext4(rw,relatime,data = ordered)
如果我将EMMC驱动程序构建为内核的一部分(并摆脱initramfs),则输出非常不同:
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)<....>
/ var / volatile / run / media / mmcblk0p1上的/ dev / mmcblk0p1类型vfat(rw,relatime,fmask = 0022,dmask = 0022,codepage = 437,iocharset = iso8859-1,sh)
/ var / volatile / run / media / mmcblk0p3上的/ dev / mmcblk0p3类型为ext4(rw,relatime,data = ordered)
/ var / volatile / run / media / mmcblk0p4上的/ dev / mmcblk0p4类型为ext4(rw,relatime,data = ordered)
-
虽然当我检查内核日志和主要的次要设备号时,我发现/ dev / root仅对应于/ dev / mmcblk0p2 .
-
但我无法弄清楚为什么mount的输出不同 .
在花了这么多努力让initramfs工作之后,我不想错过任何微不足道的事情 . 任何帮助,非常感谢 .