0

我有一个运行良好的嵌入式 Linux 环境,希望保存 rootfs 部分,然后用空的 nand 闪存其他新板。

所以,我尝试了什么。从barebox(在kernell启动之前),我把/dev/nand0.root.bb 放到我PC的tftp服务器上。

然后我尝试在 rootfs.ubifs 中重命名它,并在另一个(和一个新的)板上调用“update -t​​ rootfs”脚本的好地方。

大小不同:17301504 原rootfs.ubifs 264630784 /dev/nand0.root.bb

问题是系统无法正确启动。

这里有人以这种方式工作吗?我需要帮助...

4

1 回答 1

0

副网,

您应该以不同的方式执行此操作。UBI 文件系统与您的 nand flash 上的其他映像(MLO、barebox、内核)甚至硬盘映像不同。所以它不能只通过在 nand0.root.bb 分区上使用 cp 来复制。这就是为什么您的新系统无法正确启动的原因。

不幸的是,我也在寻找解决方案来做到这一点,但我只知道另一个方向(从 ubifs 图像复制到 flash)也不能像这样完成。

我认为你应该首先在你的裸机中拥有 UBI 工具(ubimkvol、ubiattach、ubiformat)。如果你不这样做,也许可以为你的系统寻找一个裸机版本,然后刷新它(当然在备份旧版本之前)。这是我以前的问题之一。如果你知道如何编译一个完全适合你的系统的,然后进入 menuconfig,你应该会找到正确的 ubi 命令。

但是,当有这个命令时,我认为可以将 /dev/nand0.root.bb 作为新的字符设备附加到系统,如下所示:

ubiattach /dev/nand0.root
UBI: attaching mtd0 to ubi0
...
...

当您想将新图像闪存到 nand 时,至少是这样。它创建一个 /dev/ubi0 节点。不幸的是,我尝试了这个并在以下 mount 命令上失败,只是为了测试它是否已正确创建:

mount /dev/ubi0 /mnt/rootfs
mount: bad file number

因此,即使安装失败,我认为这也不是创建图像的正确方法,但可能是正确的方向。也许其他人知道完整的解决方案?

佐利

于 2015-09-04T12:55:09.080 回答