解压其中包含 ubifs 映像的 ubi 映像
Unpacking a ubi image with an ubifs image inside
我 运行 在研究过程中遇到了一个问题。
我有一个从互联网上下载的固件文件,我正在尝试解压缩它以模拟固件。
好消息是我成功地完成了一次,但我恢复了我的机器,我现在无法重新创建这个过程。
首先,任何工具都无法提取文件,因为您会得到一个错误,即找到少于 2 个布局块。
之后我转储了 ubi 文件的一些信息:
==> app_ubifs <==
1 named volumes found, 2 physical volumes, blocksize=0x20000
== volume b'bakfs' ==
-rw-r--r-- 1 0 0 37879808 2020-04-22 01:27:47 ubifs
所以从我得到这个成功的时候我就知道在 bakfs 卷中有另一个 ubifs 图像可以被 public 工具成功提取。
我测试了很多方法来挂载这个镜像,但总是挂载失败。
modprobe ubi
modprobe nandsim first_id_byte=0x20 second_id_byte=0xaa \
third_id_byte=0x00 fourth_id_byte=0x15
我相信这是 blocksize=0x20000 的正确配置。
ubiformat /dev/mtd0 -f app_ubifs
ubiformat: mtd0 (nand), size 268435456 bytes (256.0 MiB), 2048 eraseblocks of 131072 bytes (128.0 KiB), min. I/O size 2048 bytes
libscan: scanning eraseblock 2047 -- 100 % complete
ubiformat: 2048 eraseblocks have valid erase counter, mean value is 0
ubiformat: flashing eraseblock 282 -- 100 % complete
ubiformat: formatting eraseblock 2047 -- 100 % complete
格式化和闪烁也正常。
这之后的下一部分我真的不明白。
网上有 100 种不同的方式,但我似乎无法让它发挥作用。
如果有人能在此过程中帮助我,我将不胜感激。
正如我所说,我已经有了带文件系统的解压版本。
但我现在无法重新创建解包过程。
所以我知道这是可能的。
---- 解决方案
modprobe nandsim first_id_byte=0x2c second_id_byte=0xac third_id_byte=0x90 fourth_id_byte=0x15
为 blocksize=0x20000 制作设备。
检查是否已设置。
cat /proc/mtd
让我们清理它。
flash_erase /dev/mtd0 0 0
现在格式化并刷新图像。
ubiformat /dev/mtd0 -f image.ubi -O 2048
然后附加设备。
modprobe ubi
ubiattach -p /dev/mtd0 -O 2048
现在我可以安装它了。
mount -t ubifs /dev/ubi0_X /mnt/ubifs
在我的例子中是 ubi0_1 确保在 /dev 上检查它。
我 运行 在研究过程中遇到了一个问题。 我有一个从互联网上下载的固件文件,我正在尝试解压缩它以模拟固件。 好消息是我成功地完成了一次,但我恢复了我的机器,我现在无法重新创建这个过程。
首先,任何工具都无法提取文件,因为您会得到一个错误,即找到少于 2 个布局块。
之后我转储了 ubi 文件的一些信息:
==> app_ubifs <==
1 named volumes found, 2 physical volumes, blocksize=0x20000
== volume b'bakfs' ==
-rw-r--r-- 1 0 0 37879808 2020-04-22 01:27:47 ubifs
所以从我得到这个成功的时候我就知道在 bakfs 卷中有另一个 ubifs 图像可以被 public 工具成功提取。
我测试了很多方法来挂载这个镜像,但总是挂载失败。
modprobe ubi
modprobe nandsim first_id_byte=0x20 second_id_byte=0xaa \
third_id_byte=0x00 fourth_id_byte=0x15
我相信这是 blocksize=0x20000 的正确配置。
ubiformat /dev/mtd0 -f app_ubifs
ubiformat: mtd0 (nand), size 268435456 bytes (256.0 MiB), 2048 eraseblocks of 131072 bytes (128.0 KiB), min. I/O size 2048 bytes
libscan: scanning eraseblock 2047 -- 100 % complete
ubiformat: 2048 eraseblocks have valid erase counter, mean value is 0
ubiformat: flashing eraseblock 282 -- 100 % complete
ubiformat: formatting eraseblock 2047 -- 100 % complete
格式化和闪烁也正常。
这之后的下一部分我真的不明白。 网上有 100 种不同的方式,但我似乎无法让它发挥作用。
如果有人能在此过程中帮助我,我将不胜感激。
正如我所说,我已经有了带文件系统的解压版本。 但我现在无法重新创建解包过程。 所以我知道这是可能的。
---- 解决方案
modprobe nandsim first_id_byte=0x2c second_id_byte=0xac third_id_byte=0x90 fourth_id_byte=0x15
为 blocksize=0x20000 制作设备。
检查是否已设置。
cat /proc/mtd
让我们清理它。
flash_erase /dev/mtd0 0 0
现在格式化并刷新图像。
ubiformat /dev/mtd0 -f image.ubi -O 2048
然后附加设备。
modprobe ubi
ubiattach -p /dev/mtd0 -O 2048
现在我可以安装它了。
mount -t ubifs /dev/ubi0_X /mnt/ubifs
在我的例子中是 ubi0_1 确保在 /dev 上检查它。