我对安装固件映像并浏览其内容感兴趣。我尝试使用该mount
命令执行此操作,但收到一些错误(“您必须指定文件系统类型”)。但我认为这里可能还存在其他问题。我相信以下信息应该是我完成此任务所需的全部信息,我只是不确定如何处理这些信息。
如何挂载这个 .img 文件并浏览其内容?
跑步file
/root/Downloads/FW_WRT1900AC_1.1.8.164461_prod.img: u-boot legacy uImage, Linux-3.2.40, Linux/ARM, OS Kernel Image (Not compressed), 3856080 bytes, Thu Nov 20 13:45:36 2014, Load Address: 0x00008000, Entry Point: 0x00008000, Header CRC: 0x5CAE7F84, Data CRC: 0xFCF78543
跑步fdisk -l
Disk /root/Downloads/FW_WRT1900AC_1.1.8.164461_prod.img: 26 MB, 26345472 bytes
255 heads, 63 sectors/track, 3 cylinders, total 51456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x80811005
Disk /root/Downloads/FW_WRT1900AC_1.1.8.164461_prod.img doesn't contain a valid partition table
答案1
该文件的前 3856080 字节是内核映像。之后,就有一个文件系统映像。文件系统位于偏移量 3932160(3856080 四舍五入到下一个 128kB 的倍数);我通过检查发现了它,我不知道信息存储在图像中的位置(可能与预期设备上的擦除大小有关)。文件系统是JFFS2,这在此类设备上很常见。
JFFS2 文件系统不能直接安装在 Linux 上,因为文件系统驱动程序要求文件系统位于MTD设备。你可以在 RAM 中使用伪造的 MTD 设备解决这个限制。您需要从启动映像中提取JFFS2映像;它必须是整数个擦除块。简而言之:
modprobe mtdram total_size=32768 erase_size=128
modprobe mtdblock
<FW_WRT1900AC_1.1.8.164461_prod.img tail -c +3932161 | head -c 22413312 >/dev/mtdblock0
mount -t jffs2 /dev/mtdblock0 /mnt
或者,您可以使用这些程序jffs2dump
并jffs2reader
从MTD实用程序。
<FW_WRT1900AC_1.1.8.164461_prod.img tail -c +3932161 | head -c 22413312 >|FW_WRT1900AC_1.1.8.164461_prod.jffs2
jffs2reader FW_WRT1900AC_1.1.8.164461_prod.jffs2 >FW_WRT1900AC_1.1.8.164461_prod.contents
jffs2reader FW_WRT1900AC_1.1.8.164461_prod.jffs2 -d /
jffs2reader FW_WRT1900AC_1.1.8.164461_prod.jffs2 -f /etc/version