jueves, 26 de enero de 2012

Recuperar discos con linux

Hace poco no pude abrir mi disco externo. El mensaje que encontraba era:
 Unable to mount dat_1 
Error mounting: mount: wrong fs type, bad option, bad superblock on /dev/sdb,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail  or so

 


Donde 'dat_1' es la etiqueta de una de las particiones del disco. En ese disco tengo 5 particiones de 100 GB. También una partición con debian instalado (el sistema operativo de respaldo). El disco duro se veia bien fisicamente y no habia hecho nada extraño que pudiera desconfigurar el disco. Haciendo dmesg tenia:
[ 3095.498043] sd 9:0:0:0: Attached scsi generic sg2 type 0
[ 3095.499779] sd 9:0:0:0: [sdb] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[ 3095.500651] sd 9:0:0:0: [sdb] Write Protect is off
[ 3095.500657] sd 9:0:0:0: [sdb] Mode Sense: 28 00 00 00
[ 3095.500660] sd 9:0:0:0: [sdb] Assuming drive cache: write through
[ 3095.502518] sd 9:0:0:0: [sdb] Assuming drive cache: write through
[ 3095.533430]  sdb: unknown partition table
[ 3095.535384] sd 9:0:0:0: [sdb] Assuming drive cache: write through
[ 3095.535389] sd 9:0:0:0: [sdb] Attached SCSI disk
[ 3096.247271] EXT3-fs error (device sdb): ext3_check_descriptors: Block bitmap for group 0 not in group (block 742866512)!
[ 3096.247760] EXT3-fs (sdb): error: group descriptors corrupted
y al ejecutar fdisk -l el resultado era:
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 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 identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table
Viendo esto se sabe que el error esta en la tabla de particiones que no puede ser leida. Para reconfigurar la tabla de particiones se puede usar testdisk haciendo:
testdisk /dev/sdb
Se selecciona el disco, luego Intel como tipo de particion y por último Analyse. Luego resulta:
Should TestDisk search for partition created under Vista ? [Y/N]
En este caso ninguna particion se creo con Windows Vista, por lo que selecciono 'N'. Luego de esto puedo ver que se han encontrado las particiones que tenia originalmente.


Todo parece bien. Las particiones no se solapan y mantienen su formato, excepto una, que corresponde a la particion del sistema operativo (por eso no tiene etiqueta). Al ver que todo esta bien presiono 'Enter' y luego 'Write' para escribir la tabla de particiones. Luego de esto puedo acceder a mis archivos. el resultado de fdisk -l es:
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63   976768064   488384001    f  W95 Ext'd (LBA)
/dev/sdb5             126   205117919   102558897   83  Linux
/dev/sdb6       205117983   409914539   102398278+  83  Linux
/dev/sdb7       409914603   614711159   102398278+  83  Linux
/dev/sdb8       614711223   819507779   102398278+  83  Linux
/dev/sdb9       819507843   976768064    78630111    c  W95 FAT32 (LBA)
En este caso la particion del Sistema Operativo de respaldo tiene que ser booteable, por lo que se hace:
fdisk /dev/sdb
Se ingresa 'a' para darle una bandera de bootable a la particion 8 (/dev/sdb8), y w para escribir la partición. Luego se vuelve a instalar el grub en el MBR del disco extraible:
mount /dev/sdb8 /mnt/
mount --bind /dev /mnt/dev/
mount --bind /dev/pts /mnt/dev/pts
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt
   grub-install /dev/sdb
   exit
Finalmente el disco queda reconfigurado para leer datos y para acceder al sistema operativo de respaldo.  fdisk -l muestra:
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63   976768064   488384001    f  W95 Ext'd (LBA)
/dev/sdb5             126   205117919   102558897   83  Linux
/dev/sdb6       205117983   409914539   102398278+  83  Linux
/dev/sdb7       409914603   614711159   102398278+  83  Linux
/dev/sdb8   *   614711223   819507779   102398278+  83  Linux
/dev/sdb9       819507843   976768064    78630111    c  W95 FAT32 (LBA) 
Para iniciar el sistema operativo sin correr el GRUB desde el disco externo se puede modificar el archivo menu.lst que esta en /boot/grub agregando las siguientes lineas al final:
title Debian USB
root (hd1,7)
kernel /vmlinuz root=/dev/sdb8
initrd /initrd.img          
Donde /initrd.img es la ruta a la imagen del disco de arranque (initial ramdisk) y /vmlinuz es la ruta de la imagen del kernel de linux.

No hay comentarios.:

Publicar un comentario