Доброго времени суток! Разбираюсь с одним девайсом, который грузится с SD-карточки. Система закрыта от меня, есть только образ SD-карты. На котором присутствует 2 раздела: Code: # fdisk -l mmcblk0.dd Disk mmcblk0.dd: 7,4 GiB, 7951351808 bytes, 15529984 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 mmcblk0.dd1 62 15017267 15017206 7,2G b W95 FAT32 mmcblk0.dd2 15017268 15632803 615536 300,6M c W95 FAT32 (LBA) Code: # file -s mmcblk0.dd mmcblk0.dd: DOS/MBR boot sector; partition 1 : ID=0xb, start-CHS (0x0,1,1), end-CHS (0x3ff,145,62), startsector 62, 15017206 sectors; partition 2 : ID=0xc, start-CHS (0x3ff,145,62), end-CHS (0x3ff,145,62), startsector 15017268, 615536 sectors Code: # kpartx -a -v mmcblk0.dd add map loop0p1 (254:0): 0 15017206 linear /dev/loop0 62 device-mapper: resume ioctl on loop0p2 failed: Invalid argument create/reload failed on loop0p2 add map loop0p2 (0:0): 0 615536 linear /dev/loop0 15017268 Мне необходимо получить доступ ко второму разделу (W95 FAT32 (LBA)), но я ни как не могу этого сделать, ни какими способами и программными средствами. Определить, что за ОСь крутится на устройстве не представляется возможным, т.к. интерфейс заблокирован сторонней оболочкой, подключиться к нему по сети или просканировать порты так же нет возможности, перезагрузить и т.п. - аналогично. Предположительно там Windows CE. Есть мнение, что внутри LBA-раздела есть еще какая то логическая разбивка на разделы, поэтому и не получается его примонтировать как отдельный раздел. Подскажите пожалуйста как можно прочитать структуру LBA-раздела и получить к нему доступ?
Почему не можешь? Если там нормальная файловая система то монтироваться раздел должен нормально. Что выводит команда mount -t vfat mmcblk0.dd1 /mnt ?
В данном случае я получаю: Code: # mount -t vfat mmcblk0.dd2 /mnt mount: special device mmcblk0.dd2 does not exist
Блин. Я конечно подозревал, что такое может быть, но надеялся что раз чел так всё грамотно расписал то знает что делает. Естественно does not exist, а что ты сделал чтобы они exist? Сначала надо подмонтировать файл как блочное устройство, причём первый и второй раздел также должны быть подмонтированы с правильным сдвигом относительно 0 блока. Как это делается написано здесь https://major.io/2010/12/14/mounting-a-raw-partition-file-made-with-dd-or-dd_rescue-in-linux/ Но вычислять сдвиг не обязательно, хотя полезно знать как это делается. Команда losetup делает это за тебя. Code: losetup --find --partscan --verbose mmcblk0.dd ls -lh /dev |grep loop mkdir /mnt/part1 /mnt/part2 mount -t vfat /dev/loop0p1 /mnt/part1 mount -t vfat /dev/loop0p2 /mnt/part2
Дак понятное дело я его замонтировал сперва, ведь утилита kpartx, вывод которой я предоставил в своем первом посте, ясно показывает, что не может справиться со 2м разделом. Ваш вариант я в первую очередь проверил: Code: # losetup --find --partscan --verbose mmcblk0.dd # ls -lh /dev |grep loop ... ... loop0p1 ... loop0p2 ... # mkdir /mnt/loop_p{1,2} # mount -t vfat /dev/loop0p1 /mnt/loop_p1 # mount -t vfat /dev/loop0p2 /mnt/loop_p2 mount: wrong fs type, bad option, bad superblock on /dev/loop0p2, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so. # dmesg | tail [21216.560982] loop: module loaded [21216.577156] loop0: p1 p2 [21216.577309] loop0: p2 size 615536 extends beyond EOD, truncated [21240.645328] FAT-fs (loop0p2): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! [21240.645368] FAT-fs (loop0p2): bogus logical sector size 65535 [21240.645371] FAT-fs (loop0p2): Can't find a valid FAT filesystem Пробовал различные варианты: Code: mount -t vfat -o codepage=866,iocharset=utf-8 /dev/loop0p2 /mnt/loop_p2 mount -t vfat -o codepage=866,iocharset=cp1251 /dev/loop0p2 /mnt/loop_p2 mount -t vfat -o codepage=866,iocharset=koi8-r /dev/loop0p2 /mnt/loop_p2 ..... В любом случае получаю: Code: [21720.554197] FAT-fs (loop0p2): bogus logical sector size 65535 [21720.554202] FAT-fs (loop0p2): Can't find a valid FAT filesystem
Есть совсем дубовый способ. Просто запиши этот образ через dd на флешку размером >= 8гб и всё. А дальше если её винда не распознаёт то значит криво скопировано и единственный способ достать оттуда файлы - ковырять её программами по восстановлению дохлых файловых систем. Либо вообще вручную.
Я так тоже уже делал. Винда не видит. Но девайс грузится и работает, значит скопировано не криво. Какие программы можете посоветовать, на вскидку?
Ни чего не помогло из выше предложенного. :-( Но заметил интересную особенность: Code: # fdisk -l /dev/mmcblk0 Disk /dev/mmcblk0: 7,5 GiB, 8053063680 bytes, 15728640 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 /dev/mmcblk0p1 62 15017267 15017206 7,2G b W95 FAT32 /dev/mmcblk0p2 15017268 15632803 615536 300,6M c W95 FAT32 (LBA) Code: # fdisk -l /dev/mmcblk0p1 Disk /dev/mmcblk0p1: 7,2 GiB, 7688809472 bytes, 15017206 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: 0x6f20736b Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1p1 ? 778135908 1919645538 1141509631 544,3G 72 unknown /dev/mmcblk0p1p2 ? 168689522 2104717761 1936028240 923,2G 65 Novell Netware 386 /dev/mmcblk0p1p3 ? 1869881465 3805909656 1936028192 923,2G 79 unknown /dev/mmcblk0p1p4 ? 2885681152 2885736650 55499 27,1M d unknown Partition table entries are not in disk order. Code: # fdisk -l /dev/mmcblk0p2 Disk /dev/mmcblk0p2: 300,6 MiB, 315154432 bytes, 615536 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 Т.е. раздел /dev/mmcblk0p1 содержыт в себе несколько разделов, но монтируется как один.