Tengo una tarjeta sd con formato MBR y cuando me conecto a una máquina Linux (xubuntu 12.04) puede montar una partición y analizar el sistema de archivos (como GParted). Sin embargo, cuando trato de leer el MBR desde el dispositivo usando dd, me da un montón de datos espurios.
¿Podría alguien arrojar alguna luz sobre cómo Linux / GParted puede leer y entender el MBR cuando dd no puede leer el MBR? ¿Utilizan diferentes métodos para obtener los datos? IE no abierto (), read ()
El comando DD es:
dd if=/dev/sdb of=mbr.bin bs=512 count=1
La salida DD es:
1+0 records in
1+0 records out
512 bytes transferred in 0.000786 secs (651345 bytes/sec)
mbr.bin dump con hexdump -C mbr.bin
es:
00000000 04 16 41 53 4d 49 2d 53 44 03 00 00 00 00 16 f1 |..ASMI-SD.......|
00000010 00 7f 00 32 1f 5b 80 00 36 db bf bf 96 c0 00 01 |...2.[..6.......|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 6f 00 00 10 00 00 02 2e 00 00 00 00 00 00 00 00 |o...............|
00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200
dd
da?fdisk -lu /dev/sdb
,gdisk -l /dev/sdb
ygrep sdb /proc/partitions
?Respuestas:
La tarjeta no tiene un Master Boot Record (MBR). Si tuviera su hexdump le habría dado al menos una entrada de partición en el desplazamiento
0x1C0
y55aa
al final.No todas las tablas de partición presentan datos en los primeros 512 bytes. Los datos espurios que ve son el registro SID y CSD de (a / the) tarjeta SD. Pero por lo que parece, no son los datos correctos para la tarjeta (a menos que sea un viejo modelo 1 MiB 2001).
Los primeros 16 bytes son:
Siguientes 16 bytes (al menos parte de él):
Además, la verificación CRC7 para el registro CSD es incorrecta. Podrían ser datos antiguos de un pasatiempo.
Esos registros y más pueden consultarse directamente desde la tarjeta mediante varios comandos. Esto se realiza mediante controladores de módulos, concentradores de tarjetas, etc.
Sería interesante ver lo que encuentra por los comandos dados por Stephane Chazelas, slm, etc.
fuente
Intentaría usar el
sfdisk
comando en lugar dedd
. Por ejemplo:Ahora mirar
mbr_using_sfdisk.bin
revela lo que estás buscando:Entonces, ¿por qué no puedo ver la tabla de particiones usando
dd
?No estoy completamente seguro de por qué, pero encontré este truco que le muestra cómo ver las tablas de partición en el
mbr.bin
uso delfile
comando.Por ejemplo:
Referencias
fuente
hexdump
para la salida (texto plano) desfdisk -d /dev/sda
?Estos datos no son la memoria de su tarjeta SD, pero son enviados por su controlador de tarjeta SD (ASMI). Esta página describe el problema como me sucedió a mí:
http://www.idioten-notschlachten.de/blog/2011/11/13/kennen-sie-asmi/
fuente