[eside-ghost] Tabla de particiones a TPC
Jon Ander Hernández
hernandez en movimage.com
Vie Feb 9 00:53:28 CET 2007
Aupi!
El jue, 08-02-2007 a las 23:07 +0100, Javier Allende Astigarraga
escribió:
> en una ida de olla, con el gparted, le he dado a crear tabla de
> particiones y como consecuencia todas a tomar vientos y xa completar
> la jugada he reiniciado y ya me da error del grub
>
> alguna manera de solventar esta avería??
Es normal que el grub haya petado, el grub tiene 2 stages, una parte se
carga desde el MBR (Master Boot Record) y la otra se carga del sistema
de archivos, con lo cual al haber estropeado la tabla de particiones,
grub no es capaz de cargar la segunda stage y peta.
Por otro lado lo bueno de haber petado solo la tabla de particiones, es
que realmente no has eliminado las particiones, tan solo la tabla con lo
cual las particiones siguen ahí, aunque claro el problema va a estar en
recrear la tabla.
A mi una solución que se me ocurre es la de mirar en como hace el
comando file para reconocer el tipo de un sistema de archivos (el magic
number).
Ejemplo :
$ sudo file -s /dev/hda1
/dev/hda1: Linux rev 1.0 ext3 filesystem data (needs journal recovery)
Y después buscamos en el fichero magic numbers (/usr/share/file/magic)
# ext2/ext3 filesystems - Andreas Dilger <adilger en turbolabs.com>
0x438 leshort 0xEF53 Linux
>0x44c lelong x rev %d
>0x43e leshort x \b.%d
>0x45c lelong ^0x0000004 ext2 filesystem data
>>0x43a leshort ^0x0000001 (mounted or unclean)
>0x45c lelong &0x0000004 ext3 filesystem data
>>0x460 lelong &0x0000004 (needs journal recovery)
>0x43a leshort &0x0000002 (errors)
>0x460 lelong &0x0000001 (compressed)
#>0x460 lelong &0x0000002 (filetype)
#>0x464 lelong &0x0000001 (sparse_super)
>0x464 lelong &0x0000002 (large files)
Con lo cual lo que habría que hacer es con un poco de paciencia
descubrir que significa esa estructura y después con un visor
hexadecimal buscar dentro del fichero de dispositivo del HDD esa
estructura y así poder descubrir el inicio de la partición (el offset) y
después usando el loopback de linux ir probando a ver si monta :
# mount -o loop,offset=3939941376 -t ext3 /path/to/hda_dd.image /mnt
http://edseek.com/~jasonb/articles/linux_loopback.html
(por cierto en la web hay formulillas para convertir los sectores del
fdisk en bytes para el offset y tal)
La verdad es que nunca he probado a hacer esto, pero me imagino que en
teoría es factible ;-) y además puede ser divertido.
Lo que si me parece bastante mofas es que el parece ser que con el
loopback no se necesita especificar el tamaño de la partición (o eso
parece), tan solo el offset, me pregunto si haciendo lo mismo con el
losetup en plan :
losetup -o 3939941376 /dev/loop0 /path/to/hda_dd.image
dumpe2fs /dev/loop0
Después igual con el valor Block count y Block size puedes sacar el
tamaño de la partición.
Y esto es todo lo que se me ocurre para ir haciendo experimentos :-)
Un saludete!
JonAn.
Más información sobre la lista de distribución eside-ghost