14. Catastrophe !

Contents of this section

Ce chapitre est dédié aux moments de catastrophe, ou rien de marche, et ou l'on a envie de tout mettre par la fenêtre...

14.1 Impossible de booter !

Tu viens de ralumer ta machine, et tu n'arrives plus à booter. Dans ce cas, le mieux est d'utiliser les disquettes de boot (celles de la Slackware dans ce cas sont pas mal). Une fois la machine amorcée, tu montes ta partition racine et tu copie le noyau sur une nouvelle disquette en lançant : cat /mnt/vmlinuz > /dev/fd0 par exemple. Normalement, ça devrait alors fonctionner si ton noyau est correct. Eventuellement, effectue un :

rdev /vmlinux /dev/hda2

pour spécifier au noyau quelle partition est la racine du système de fichiers.

14.2 Formattage accidentel d'une partition

Voila, tu as formatté par erreur une partition où se trouvait ton rapport de stage. Bien, pas de panique ! Inutile de te dire qu'il est impossible de faire un unformat.

La première solution de répcupération (très brutale) est de faire un strings /dev/hda3 > Recup. Il reste ensuite à parcourir le fichier et de récupérer ce que tu peux.

Une seconde solution est d'utiliser ce scrip Perl (voir http://www-eleves.enst-bretagne.fr/~aubert/perl/) :

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

$maxlines = 20;

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

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

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

# On remplit @before jusqu'a sa capacite maximales ($maxlines)
while (($_ = <F>) && (scalar(@before) < $maxlines))
{
  if (/$terme/o)
  {
    print @before;
    print $_;
    & print_next_lines;
  }
  push(@before, $_);
}
# Le tableau @before contient la bonne quantite d'elements, donc on
# passe maintenant dans une partie ou @before garde une taille 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; 
}

14.3 Problèmes avec le disque dur : super bloc

Dans le cas où tu penses que le super-bloc est vérollé, dans ce cas, lances e2fsck avec les options suivantes : e2fsck -b 8193 /dev/sda3. Si ça ne marche toujours pas, faire augmenter le nombre de 8192 à chaque fois pour essayer de récupérer une copie du super-bloc en état.

Si ça ne fonctionne toujours pas, essayer de lancer la commande mke2fs avec l'option -S. Attention à ne pas l'oublier sinon tu reformates ta partition ! Cette option provoque la regénération des copies du superbloc et des descripteurs du système de fichiers, et n'écrase pas les fichiers existants.

14.4 Problèmes avec le disque dur : blocs défectueux

Si jamais ton disque a quelques problèmes (secteurs défectueux), tu peux récuperer e2fsck version 1.04 si tu ne l'as pas déjà. Ensuite,

14.5 fatal signal 11

Certaines machines ne pourront fonctionner convenablement et produiront alors de façon plus ou moins aléatoire un message (par exemple "fatal signal 11") puis stopperont brutalement l'exécution du programme actif. Cause la plus probable : problème du matériel (composants de mémoire trop lents, par exemple). Essayer tout d'abord de "débrayer" le cache processeur, grâce au "SETUP" de la machine. Puis diminuer le niveau de PIO de l'EIDE (ne pas dépasser PIO 3) Lire à ce propos le document http://einstein.et.tudelft.nl/~wolff/sig11


Next Chapter, Previous Chapter

Table of contents of this chapter, General table of contents

Top of the document, Beginning of this Chapter