近期小结

最近了了一些琐碎的事情,颇感欣慰。首先当然是跟又耳哥一起把退役的微波炉给复活了的事。那个微波炉服役十多年,不明不白就歇了,实在可惜。经过又耳哥跟我俩人的一通忙活,又是买电线又是买保险,顺带还买了磁控管这种核心部件,又是量电流又是量电压,终于成功地把它鼓捣好了。而且还发现了买的那个备用磁控管反而是个坏的的事实,把它退回去了。其次就是想了想办法,让访问 ChatGPT 能够稍微更容易一些。正好手里有闲置的设备,再起用一下,效果也相当棒。

再有就是之前在 SD968 上小写了一个程序就搁下了(当然了,其实还改了改设备的启动/锁定画面),最近看到硬盘里制作的全系统映像文件(前些时还有网友要过这个),在琢磨着能不能直接把它当作研究对象,而勿需每次都插真实设备到电脑上然后再 adb 勘察呢?在 WSL 的配合下,结果是可以!

使用的系统是 Windows 10,一开始是在 WSL1 下操作。映像文件所处路径在 E:\Dandy\sd968.img,在 WSL 里对应的路径是 /mnt/e/Dandy/sd968.img 。首先使用 partx 命令查看映像文件的结构,如下:

粗略一扫就可以看出,重点是超过 1GB 的条目。但是超过 1GB 的条目竟然有两个,一个 1.6GB 一个 1.5GB,而系统所在的物理 TF 卡总共容量也才 2GB,这是怎么回事?在这儿老夫还走了一节弯路,因为当时用眼睛从上往下扫描的时候,看到 1.6GB 这一条就没往下看了,直接拿它对应的起始扇区号就去计算挂载偏移去了,结果死活都是挂载失败。后来用 DiskGenius 打开映像文件看了一眼才发现,1.6GB 是 MBR 分区格式下的一个扩展分区,数据其实是在扩展分区内的那个 1.5GB 的分区里。计算便宜要用 1.5GB 分区的起始扇区号 684830,用它乘以扇区大小即可得出该分区在映像文件内的起始偏移是 512 * 684832 = 350633984。以此数据来构造挂载该分区的命令行,

但是,在执行后总是出现 mount: /mnt/sd968/: mount failed: Operation not permitted. 的错误信息。经过若干盲目尝试后,有那么一丝感觉,WSL1 可能不支持这种目的的操作。于是决定转战 WSL 2。

首先执行了 wsl --set-default-version 2,然后执行 wsl --install -d Ubuntu-22.04。安装成功(包括第一次启动时的密码初次设置之类的工作)后进入,当然是先 sudo mkdir /mnt/sd968 了,接着执行 sudo mount -v -o offset=350633984 -o loop -t ext4 /mnt/e/Dandy/sd968.img /mnt/sd968/ 就发现上面在 WSL1 里看到的错误信息不见了,代之以 mount: /dev/loop0 mounted on /mnt/sd968. ,挂载就此成功。俺可以方便地查看其中的文件组织了。

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注