无法在 SD 卡上安装 UBIFS

无法在 SD 卡上安装 UBIFS

我想这不是一个大问题,但我还是看不出到底出了什么问题。

我正在使用 Buildroot 2013.11 为嵌入式 Linux (2.6.39) ARM9 系统构建映像,该系统从 SD 卡启动。我尝试了不同的文件系统格式,其中一些无法启动。

我为上班族做了什么:例如:rootfs.cramfs正在工作,在Linux menuconfig中我选择了

File Systems
- Miscellaneous filesystems
- - Compressed ROM file system support (cramfs)

然后我将内核放在 SD 的第一个分区上,对于第二个分区,我使用了命令dd

sudo dd if=/[path-to-rootfs]/rootfs.cramfs of=/dev/sdb2 bs=2048

内核命令行如下所示:

console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait

并且它可以毫无问题地启动系统。

我为那些不起作用的人做了什么:例如:rootfs.ubifs(还有许多其他的)。实际上我做了与上面几乎相同的步骤。内核命令行保持不变。我修改的内容在 linux-menuconfig 中:

File Systems
- Miscellaneous filesystems
- - SquashFS 4.0 - Squashed file system support
- - - Squashfs XATTR support
- - - Include support for LZO compressed file systems
- - - Include support for XZ compressed file systems

和 dd 命令:

sudo dd if=/[path-to-rootfs]/rootfs.ubifs of=/dev/sdb2 bs=2048

(顺便说一句:执行此步骤后,主机系统将无法再读取 2 分区的内容)。

但随后它在启动过程中崩溃并显示以下消息:

No filesystem could mount root

然后发生内核恐慌(由于上面的行)。如果有兴趣,我可以将 .config 文件放在这里。

有人看到我的错误吗?

答案1

UBIFS 专为原始闪存设备而设计,其中软件处理写入已擦除的位或页分别于块擦除。 UBIFS 不适用于块设备,在块设备上,硬件(或通常是固件)处理页面或块重新映射(因此在某种程度上进行磨损均衡),以便提供一个简单的接口,让软件可以假装写入扇区只是覆盖该扇区(就像在磁存储上一样)。

SD卡、MMC、SSD、USB闪存驱动器等在硬件中处理块重新映射并提供块设备接口,因此UBIFS不适用于这些设备。

UBIFS 工作在 MTD 设备上,以 UBI 作为中间层。

请参阅UBIFS 文档更多细节。

答案2

根据UBIFS 文档它根本不适用于 MMC/SD 等块设备。所以我想这就是错误。

相关内容