我的问题是:我无法使用压缩的 rootfs(内核在启动过程中崩溃),但未压缩的 rootfs 工作正常。
我做了什么:我正在使用 Buildroot 2013.11 为我的嵌入式 Linux (2.6.39) ARM 9 系统生成映像,从 SD 卡启动。
我将图像(例如 ext4)“dd”到 SD 卡的第二个分区
sudo dd if=/path-to/rootfs.ext4 of=/dev/sdb2 bs=2048
并在linux-menuconfig中启用驱动程序,即
File systems
- <*> The Extended 4 (ext4) filesystem
- [*] Use ext4 for ext2/ext3 file systems
- [*] Ext4 extended attributes
现在,当我喜欢使用压缩的 ext4(例如使用 lzo)时,buildroot 会rootfs.ext4.lzo
在此处生成一个“dd”
sudo dd if=/path-to/rootfs.ext4.lzo of=/dev/sdb2 bs=2048
该命令执行时没有任何错误,但从此时起,“sdb2”将无法再访问,直到再次格式化为止。当使用这个 SD 启动系统时,内核崩溃,告诉我它正在尝试用 ext4 解释该分区,但他无法读取它。
我哪里错了?
答案1
您省略了很多信息,但是您在这里显示的内容没有意义。如果创建压缩的文件系统映像,则需要将其加载到内存中并解压缩,以便随后在内存中以未压缩的方式使用它。看起来您试图像访问文件系统一样访问压缩映像,但事实并非如此,压缩的 ext4 文件系统不是 ext4 文件系统,无法安装。
如果您想使用闪存中的文件系统(即根据需要加载和卸载文件),则需要对其进行解压缩。如果您想从内存中使用该文件系统,最好将其设为初始化文件系统:您不会在文件系统的空部分上浪费内存,如果您想释放内存,您可以在运行时擦除文件,并且您需要更少的基础设施来构建它并从中启动。