このディスクイメージをマウントするにはどうすればいいでしょうか?

このディスクイメージをマウントするにはどうすればいいでしょうか?

Project Sandcastle (iPhone 7 で Android 10 を実行できるプロジェクト) が提供する Android NAND イメージをマウントしようとしています。このディスク イメージをマウントして、このイメージに含まれていると思われる boot.img ファイルを編集できるようにしています。ファイルに関する情報は次のとおりです。

$ file nand
nand: DOS/MBR boot sector; partition 1 : ID=0xee, start-CHS (0x0,0,2), end-CHS (0x0,4,4), startsector 1, 255 sectors; partition 2 : ID=0x7, start-CHS (0x0,4,5), end-CHS (0x0,8,8), startsector 256, 256 sectors
$ sudo fdisk -lu nand
Disk nand: 3.5 GiB, 3269459968 bytes, 6385664 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
Disklabel type: dos
Disk identifier: 0x00000000

Device Boot Start   End Sectors   Size Id Type
nand1           1   255     255 127.5K ee GPT
nand2         256   511     256   128K  7 HPFS/NTFS/exFAT

これを macOS にマウントしようとしましたが、ファイルシステムが要求され、ext4 と msdos は機能しませんでした。そこで、Ubuntu ライブ USB を作成し、次のコマンドを試したところ、次の出力が得られました。

$ sudo mkdir /android
$ sudo mount -o loop,rw,offset=512 nand /android
mount: /android: wrong fs type, bad option, bad superblock on /dev/loop6, missing codepage or helper program, or other error.

そこでファイル拡張子を付けてみたのですがnand、拡張子がないのでファイルとして認識されていないのではないかと思いました。

$ mv nand android.image
$ sudo mount -o loop,rw,offset=512 android.image /android
NTFS signature is missing.
Failed to mount '/dev/loop6': Invalid argument
The device '/dev/loop6' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?

他のパーティションをオフセット=$((512*256))でマウントしてみましたが、同じ出力が出ました。オフセットなしでも試してみましたが、同じ出力が出ました。最後に、rwの代わりにroを使ってみましたが、やはり同じ出力が出ました。行き詰まってしまい、次に何をすればいいのかわかりません。gzip圧縮されたnandイメージは、このリンクどなたか助けていただけると本当にありがたいです。

答え1

出力fdiskはこれがない有効なパーティション テーブル: nand2 は 128 KB しか占有しませんが、これは NTFS パーティションには十分ではありません。私は、Wine で実行されている 7-zip (ネイティブで使用できる p7zip も使用できる可能性があります) を使用してイメージを開きました。イメージには、2 つの「パーティション」と、ext4 パーティションである巨大なファイルが含まれています。

方法は聞かないでください。この ext4 パーティションのオフセットを見つけました。次のコマンドでマウントできます。

mount -o loop,offset=3145728,ro nand /mnt/sandcastle

Android 10 では「shared_blocks」と呼ばれる新しい ext4 機能が実装されていますが、これはまだメインラインに導入されていないため、読み取り書き込みでマウントすることはできません。

関連情報