uCLinux (linux 4.9 nommu) VFS: 无法打开根设备“(null)”

uCLinux (linux 4.9 nommu) VFS: 无法打开根设备“(null)”

我陷入了这种内核恐慌之中。

我想要的是将 initramfs 嵌入到内核 xip 映像中,但 linux 恐慌并告诉我传递有效的“root=” rootfs 值。但为什么 Linux 会寻找这个输入呢?

(我没有给出任何真正的 .cpio 的唯一原因是我无法构建一个,因为诸如“找不到#include”之类的错误)。但默认的 initramfs 应该可以完成这项工作不是吗?

CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_BLOCK=y
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_NULL_BLK is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=1
CONFIG_BLK_DEV_RAM_SIZE=4096

Linux 不应该关心任何“root=”参数???不??

完整的linux.config:http://pastebin.com/gWGCEeCw

完整的 UART 输出:http://pastebin.com/Mk3c9su8

感谢您阅读本文。

编辑:这就是当我指定“root=/dev/ram0”时发生的情况:

[    0.580000] brd: module loaded
[    0.630000] loop: module loaded
[    0.650000] F2FS-fs (ram0): Magic Mismatch, valid(0xf2f52010) - read(0x0)
[    0.650000] F2FS-fs (ram0): Can't find valid F2FS filesystem in 1th superblock
[    0.650000] F2FS-fs (ram0): Magic Mismatch, valid(0xf2f52010) - read(0x0)
[    0.670000] F2FS-fs (ram0): Can't find valid F2FS filesystem in 2th superblock
[    0.680000] F2FS-fs (ram0): Magic Mismatch, valid(0xf2f52010) - read(0x0)
[    0.680000] F2FS-fs (ram0): Can't find valid F2FS filesystem in 1th superblock
[    0.690000] F2FS-fs (ram0): Magic Mismatch, valid(0xf2f52010) - read(0x0)
[    0.690000] F2FS-fs (ram0): Can't find valid F2FS filesystem in 2th superblock
[    0.700000] List of all partitions:
[    0.700000] 0100            4096 ram0 [    0.710000]  (driver?)
[    0.710000] No filesystem could mount root, tried: [    0.720000]  f2fs
[    0.720000] 
[    0.720000] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)
[    0.720000] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)
[    1.520000] random: fast init done

我不确定是否理解“没有文件系统可以挂载 root”的含义,当然你(Linux)需要创建它!发生了什么?

答案1

问题是双重的:

  • 我不知道为什么,但默认的 .cpio 不起作用。

  • 我在网上找到的“stm32 minimal blablabla”cpio 不起作用。

我尝试使用 buildroot 运行整个系统构建,它可以开箱即用,并尝试使用 rootfs.cpio,它可以工作!

如果我找到原因,我会在这里发布。

现在我调查一下,因为对我来说,该板的外部 RAM 从 0xD0000000 开始,但 buildroot 制作的系统从 0x90000000 开始。两个系统都在工作......不知道如何哈哈。

相关内容