Linuxではmmcblkパーティションをマウントできません

Linuxではmmcblkパーティションをマウントできません

USBでKali liveを実行してWindows 10パーティションにアクセスしようとしました(Windowsに忘れたパスワードがあり、SAMファイルを変更しようとしたため)。 HDドライブでは、ちょうど使用してmount /dev/sdX /mnt入力しましたが、SDドライブでは(今回は初めて使用)、解決策がわからないファイルシステムエラーが発生します。fdisk -l結果は次のとおりです。

Disk /dev/mmcblk0: 29.1 GiB, 31268536320 bytes, 61071360 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: gpt
Disk identifier: BDCC441D-C0B3-4F13-A548-025EC15FA7FE

Device            Start      End  Sectors  Size Type
/dev/mmcblk0p1     2048   534527   532480  260M EFI System
/dev/mmcblk0p2   534528   567295    32768   16M Microsoft reserved
/dev/mmcblk0p3   567296 59054079 58486784 27.9G Microsoft basic data
/dev/mmcblk0p4 59054080 61059071  2004992  979M Windows recovery environment




Disk /dev/mmcblk0boot1: 4 MiB, 4194304 bytes, 8192 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 /dev/mmcblk0boot0: 4 MiB, 4194304 bytes, 8192 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 /dev/sda: 3.7 GiB, 4005560320 bytes, 7823360 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: 0x17fcad22

Device     Boot   Start     End Sectors  Size Id Type
/dev/sda1  *         64 5898239 5898176  2.8G 17 Hidden HPFS/NTFS
/dev/sda2       5898240 5899647    1408  704K  1 FAT12


Disk /dev/loop0: 2.6 GiB, 2779897856 bytes, 5429488 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

これが結果ですfdisk /dev/mmcblk0p3 -l

Disk /dev/mmcblk0p3: 27.9 GiB, 29945233408 bytes, 58486784 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: 0x78787878

Device           Boot      Start        End    Sectors   Size Id Type
/dev/mmcblk0p3p1      2021161080 4042322159 2021161080 963.8G 78 unknown
/dev/mmcblk0p3p2      2021161080 4042322159 2021161080 963.8G 78 unknown
/dev/mmcblk0p3p3      4294932600 8589899894 4294967295     2T 78 unknown
/dev/mmcblk0p3p4      4294967295 5035196669  740229375   353G ff BBT

これが結果ですfile -s /dev/mmcblk0p3

/dev/mmcblk0p3: DOS/MBR boot sector, code offset 0x58+2, OEM-ID "-FVE-FS-", sectors/cluster 8, reserved sectors 0, Media descriptor 0xf8, sectors/track 63, heads 255, hidden sectors 567296, FAT (32 bit), sectors/FAT 8160, serial number 0x0, unlabeled; NTFS, sectors/track 63, physical drive 0x1fe0, $MFT start cluster 393217, serial number 02020454d414e204f, checksum 0x41462020

これが結果ですlsblk

NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0          7:0    0  2.6G  1 loop /lib/live/mount/rootfs/filesystem.squashfs
sda            8:0    1  3.7G  0 disk 
├─sda1         8:1    1  2.8G  0 part /lib/live/mount/medium
└─sda2         8:2    1  704K  0 part /media/root/Kali Live
mmcblk0      179:0    0 29.1G  0 disk 
├─mmcblk0p1  179:1    0  260M  0 part 
├─mmcblk0p2  179:2    0   16M  0 part 
├─mmcblk0p3  179:3    0 27.9G  0 part 
└─mmcblk0p4  179:4    0  979M  0 part 
mmcblk0boot0 179:256  0    4M  1 disk 
mmcblk0boot1 179:512  0    4M  1 disk 
mmcblk0rpmb  179:768  0    4M  0 disk 

このコマンドを実行するとき:

mount /dev/mmcblk0p3/ /mnt

次のエラーが発生します。

NTFS signature is missing.
Failed to mount '/dev/mmcblk0p3': Invalid argument
The device '/dev/mmcblk0p3' 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?

私もこれを試しましたが、 mount -t vfat /dev/mmcblk0p3 /mnt次のような結果が得られました。

mount: wrong fs type, bad option, bad superblock on /dev/mmcblk0p3,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

ついに結果が出ました。cat /proc/filesystems

nodev   sysfs
nodev   rootfs
nodev   tmpfs
nodev   bdev
nodev   proc
nodev   cpuset
nodev   cgroup
nodev   cgroup2
nodev   devtmpfs
nodev   debugfs
nodev   tracefs
nodev   securityfs
nodev   sockfs
nodev   dax
nodev   bpf
nodev   pipefs
nodev   ramfs
nodev   hugetlbfs
nodev   devpts
nodev   pstore
nodev   mqueue
    vfat
    ntfs
    iso9660
nodev   overlay
    squashfs
nodev   autofs
nodev   efivarfs
nodev   binfmt_misc
    fuseblk
nodev   fuse
nodev   fusectl

これらのエラーの原因は何ですか?

答え1

根本的な原因は、ネストされたパーティションをマウントしようとしますが、Linuxがそれをブロックデバイスとして認識しないためです。 GPTテーブルは次のとおりです/dev/mmcblk0

Disk /dev/mmcblk0: 29.1 GiB, 31268536320 bytes, 61071360 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: gpt
Disk identifier: BDCC441D-C0B3-4F13-A548-025EC15FA7FE

Device            Start      End  Sectors  Size Type
/dev/mmcblk0p1     2048   534527   532480  260M EFI System
/dev/mmcblk0p2   534528   567295    32768   16M Microsoft reserved
/dev/mmcblk0p3   567296 59054079 58486784 27.9G Microsoft basic data
/dev/mmcblk0p4 59054080 61059071  2004992  979M Windows recovery environment

3番目のパーティションには、/dev/mmcblk0p3ファイルシステムの代わりにMBRテーブルが含まれています。

Disk /dev/mmcblk0p3: 27.9 GiB, 29945233408 bytes, 58486784 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: 0x78787878

Device           Boot      Start        End    Sectors   Size Id Type
/dev/mmcblk0p3p1      2021161080 4042322159 2021161080 963.8G 78 unknown
/dev/mmcblk0p3p2      2021161080 4042322159 2021161080 963.8G 78 unknown
/dev/mmcblk0p3p3      4294932600 8589899894 4294967295     2T 78 unknown
/dev/mmcblk0p3p4      4294967295 5035196669  740229375   353G ff BBT

上記のDOSディスクラベルを参照してください。ただし、Linuxはパーティション内にネストされたMBRテーブルを認識しません。したがって、MBRパーティションはインストールには使用できません。

NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
...
mmcblk0      179:0    0 29.1G  0 disk 
├─mmcblk0p1  179:1    0  260M  0 part 
├─mmcblk0p2  179:2    0   16M  0 part 
├─mmcblk0p3  179:3    0 27.9G  0 part
|  |-- No block devices are shown nested here.
└─mmcblk0p4  179:4    0  979M  0 part 
...

解決策

ループマウントを使用して、ネストしたパーティションをマウントできます。デフォルトでは、ネストされたパーティションを指すブロックデバイスを作成し、ブロックデバイスをマウントします。これは実行が難しく、表示されたネストされたfdiskパーティションの開始および終了セクタが明らかに正しくないため、多くのガイドラインを提供できません。

デフォルトでは、ネストされたパーティションが実際に開始および終了する場所を特定し、オフセットおよびサイズ制限オプションを使用してループデバイスを作成する必要があります。このような:

mount  /dev/mmcblk0p3 /mnt -o loop,offset=123,sizelimit=456

リソース

関連情報