Página siguiente Página anterior Índice general

16. Catástrofe !

Este capitulo esta dedicado a los momentos de catástrofe, cuando nada sale bien, y cuando uno tiene ganas de tirarlo todo por la ventana...

16.1 Corrupción de particiones

En ciertas situaciones (apagón, etc...), la tabla de particiones lógicas puede corromperse. Si este es su caso, una solución para intentar resolver el problema consiste en ejecutar el programa fdisk e introducir a mano los límites (Start et End) de cada partición del disco.

Por descontado, es importante haberlo apuntado previamente en papel.

16.2 Imposible de arrancar !

Acaba de iniciar la máquina, y no puede arrancar. En este caso, lo mejor es utilizar los disquetes de arranque (los de la Slackware en este caso no están mal, o bien utilizar la opción rescue con Red Hat). Una vez la máquina comienza, hay que montar la partición raíz y copiar el núcleo en un nuevo disquete lanzando :cat /mnt/vmlinuz > /dev/fd0 por ejemplo. Normalmente, esto debería funcionar si el núcleo es el correcto. Eventualmente, efectúe un :

rdev /dev/fd0 /dev/hda2
rdev -R /dev/fd0 1
para especificar al núcleo cual es la partición raíz del sistema de archivos, y que la monte como sólo-lectura para permitir a fsck hacer su trabajo en el momento del arranque.

16.3 Formateo accidental de una partición

Ha formateado por error una partición donde se encontraba ese informe de 120 páginas que había que entregar ayer. Bien, ˇnada de pánico! Inútil decir que es imposible hacer un unformat.

La primera solución de recuperación (muy brutal) es la de hacer un strings /dev/hda3 > Recup. No te queda más que recorrer el archivo y recuperar lo que se pueda.

Una segunda solución es la de utilizar este script Perl (ver http://www-eleves.enst-bretagne.fr/~aubert/perl/) :

  # Autor : aubert@titan.enst-bretagne.fr
  #!/usr/local/bin/perl

  $maxlines = 20;

  @before = ();
  $syntaxe = "Syntaxe: cgrep.pl termino_a_buscar archivo_a_recorrer\n";

  $terme = shift(@ARGV) || die $syntaxe;
  $fichier = shift(@ARGV) || die $syntaxe;

  open(F, $fichier) || die "Cannot read $fichier: $!\n";

  # Se llena @before hasta su capacidad máxima ($maxlines)
  while (($_ = <F>) && (scalar(@before) < $maxlines))
  {
    if (/$terme/ o)
    {
      print @before;
      print $_;
      & print_next_lines;
    }
    push(@before, $_);
  }
  # La tabla @before contiene una buena cantidad de elementos, así que se
  # pasa ahora a  una parte en donde @before guarda un tamaño constante
  while (<F>)
  {
    if (/$terme/o)
    {
      print @before;
      print $_;
      & print_next_lines;
    }
    push(@before, $_);
    shift(@before);
  }

  close(F);
  exit 1;

  sub print_next_lines
  {
    for ($i = 0; $i < $maxlines; $i++)
    {
      print scalar(<F>);
    }
    exit 0;
  }

16.4 Problemas con el disco duro : super-bloque

Si el super-bloque esta corrupto lanzar e2fsck con las siguientes opciones : e2fsck -b 8193 /dev/sda3. Si no funciona , pruebe aumentando el numero de 8192 cada vez para intentar recuperar una copia del super-bloque en buen estado.

Si sigue sin funcionar , pruebe a lanzar la orden mke2fs con la opción -S. ˇAtención, no lo olvide, sino reformateará la partición! Esta opción provoca la regeneración de las copias del super-bloque y de los descriptores del sistema de archivos. No acaba con los archivos existentes.

16.5 Problemas con el disco duro : bloques defectuosos

Si su disco tiene algunos problemas (sectores defectuosos), puede recuperar e2fsck en el paquete e2fsprogs versión 1.10 si no lo tiene ya. Luego :

16.6 Recuperación de un disco

Las instrucciones que siguen efectuan una copia de seguridad del disco (al menos de aquello susceptible de recuperación), comprueban la calidad del disco, recrean un sistema de ficheros retirando los bloques defectuosos y por último restauran la copia de seguridad.


   cd /fs
   find . -depth -mount -print | cpio -ovB > $TAPE
   cd /
   tail -f /usr/adm/syslog &
   umount /fs
   badblocks -w -o /autre_filesystem/bb_list.tmp /dev/hda3
   mke2fs -l /autre_filesystem/bb_list.tmp /dev/hda3
   mount /dev/hda3 /fs
   dd if=/dev/zero of=/fs/test.tmp
   rm test.tmp
   cd /fs
   cpio -ivBmd < $TAPE

A partir de mke2fs no debería producirse ningún mensaje de error

16.7 Señal fatal 11

Ciertas máquinas no podrán funcionar convenientemente y producirán de manera mas o menos aleatoria un mensaje (por ejemplo "fatal signal 11") y luego bloquearan brutalmente la ejecución del programa activo. La causa más probable : problema de material (componentes de memoria demasiado lenta, por ejemplo).

Pruebe antes que nada a reducir la velocidad del procesador y/o el bus, desbloquear el cache procesador, gracias al "SETUP" de la máquina. Y luego disminuya el nivel de PIO del EIDE (no pasar de PIO 3). Leer a este propósito el documento http://www.linux-france.com/article/sig11-fr/.

16.8 Disquete de emergencia

Casi todas las distribuciones proponen disquetes de emergencia que permiten al menos arrancar la máquina y montar la raíz del sistema de ficheros para poder efectuar las reparaciones necesarias. Detodas formas, señalamos aquí la presencia de un disquete muy útil (este tipo de disquete tiene un nombre particular, "bita y cuchillo", por razones puramente históricas), tomsrtbt, que podemos encontrar en el sitio http://www.clark.net/~toehser/.


Página siguiente Página anterior Índice general