Améliorer sa configuration | Catastrophe !?


Dernière mise à jour: 12-09-2000
Configuration des éditeurs Menu: Configurer et Améliorer son Système Index Linux Suivant


Récupération de ce qui peut encore l'être !

Le plus courant est la perte du mot de passe (root) et l'utilisation inconsidéré de la commande init .


  • Disquette de Boot et de sécurité
  • J'ai perdu mon mot de passe ?
  • Manipulation des runlevel avec init !
  • Erreur d'éffacement de fichiers ?!

    Disquette de Boot et de sécurité :
    Disquette de Boot:
    Pour créer une disquette de démarrage du système, rien de plus facile,
    en mode console ou dans un xterm, il suffit d'utiliser le script mkbootdisk .
    Après avoir insérez une disquette dans le lecteur ! Tapez :
    mkbootdisk --device /dev/fd0 2.2.5-22 -v
    --device indique le lecteur de disquette, ici /dev/fd0 , suivi de la version du noyau
    et -v (verbose) pour avoir l'affichage du suivi du déroulement .
    Cette disquette disposera du mode "Rescue" il suffit, au démarrage (avec la disquette), à l'invite LILO : de tapez rescue .
    pour voir les options possibles, tapez "man mkbootdisk" ou " mkbootdisk " .

    ou moins simple ?
    pour une Slackware lancer le menu setup et sélectionnez "lilo" puis "make lilo bootdisk"
    avec RedHat et les autres distributions, tapez la commande :
    cat /usr/src/linux-2.2.10/arch/i386/boot/zImage > /dev/fd0
    ou
    cat /boot/vmlinuz > /dev/fd0
    suivi de
    rdev /dev/fd0 /dev/hda2
    rdev -R /dev/fd0 1

    remplacer hda2 par la partition racine de Linux et /usr/src/linux-2.2.10/arch/i386/boot par le chemin ou se trouve zImage .
    A la place de cat /boot/vmlinuz > /dev/fd0, pour etre sur que le noyau tiendra sur la disquette(3.5), tapez:
    dd if=/boot/vmlinuz of =/dev/fd0 bs=1440K
    cette commande peut etre utilisé a partir du CD d'installation avec :
    mount /dev/cdrom
    cd /mnt/cdrom/images
    dd if=/boot.img of =/dev/fd0 bs=1440K
    Disquette de sécurité:
    Si vous avez un CD d'installation, il contient certainement l'image rescue.img dans le répertoire images, si non :
    La disquette de secours "bite et couteau"(rescue) est récupérable sur : www.clark.net/~toehser ou sur FTP sunsite.unc.edu
    Vous pouvez utiliser ou créer une disquette Amorce/racine, utilisant l'option RAMDISK du noyau, pour démmarrer le système afin de monter vos partitions dans un répertoire de montage (/mnt/) pour modifier/restorer les fichiers défecteux :
    Consulter les chapitres "Amorce/Racine " et "Scripts pour créer des disquettes " du Boot-Disk-HOWTO
    Récupérer son mot de passe :
    _ Utilisez la disquette d'installation ou de secours du système pour démarrer la machine.
    _ Montez la partition root :
    mkdir /mnt
    mount -t ext2 /dev/hda2 /mnt

    remplacez /dev/hda2 par votre partion racine Linux .
    Vous pouvez, si vous ne disposez pas de disquette de boot, démarrer le système en mode Single User
    _ à l'apparition de LILO , tapez :
    LILO:    linux single
    remplacez linux par le label de votre noyau déclaré dans lilo.conf
    ATTENTION ! votre partition est en lecture seule et votre clavier en qwerty :
    pour remonter la partition en lecture/ecriture : mount -w -n -o remount /
    pour passer le clavier en azerty : loadkeys /usr/lib/kbd/keytables/fr.map
    _ Editez /etc/passwd ou /mnt/etc/passwd et suprimez le mot de passe pour obtenir :
    root::0:0:root:/root:/bin/bash
    Et si vous utilisez les Shadow-password , vos fichiers doivent ressembler à :
    /etc/passwd : root:x:0:0:root:/root:/bin/bash
    /etc/shadow : root::10855:0:99999:7:-1:-1:134538444   (version RedHat/Linuxconf)
    /etc/shadow : root::10422:0:::::   (version Slackware)
    _ Une fois ces fichiers modifiés et sauvegardés, il ne reste plus qu'à redémarrer normalement le système .
    _ Se loger sous compte root(sans mot de passe) pour créer un nouveau mot de passe avec la commande passwd .


    Les RunLevel et la commande init :
    Comme le dit la page de manuel man init Init est le père de tous les processus .
    Et si vous éditez /etc/inittab vous trouverez cette ligne :
    id:3:initdefault:
    Qui indique le niveau d'execution (RunLevel) par défaut
    RunLevel :
     0 - halt arret du système (shutdown -h now)
     1 - Mono utilisateur(Single user)
     2 - Multi utilisateurs sans NFS (sans le réseau)
     3 - Multi utilisateurs + réseau
     4 - inutilisé
     5 - lance le serveur X11 (xdm)
     6 - reboot relance le système (shutdown -r now)
    Pour savoir quel niveau d'execution est actuellement utilisé, il suffit de taper la commande runlevel
    Sur la Slackware le niveau 4 peut-etre utilisé pour lancer X11 (xdm)
    Evidemment le niveau 0 et 6 ne doivent pas etre utilisés, si non vous créez une boucle sans fin : A chaque démarrage le système s'arreterai ou redemarrerai ?!!
    Si la commande init q permet de relire le fichier /etc/inittab , il convient de manier en connaissances de causes les autres commandes comme : init 5, init 4, init 2 ou init s .
    En cas de doute, avant de relancer ou d'arreter votre système, revérifiez que dans le fichier /etc/inittab vous avez toujours :
    id:3:initdefault: ou id:5:initdefault:.
    Si vous voulez pouvoir choisir entre le démarrage en mode Multi utilisateurs (3) et en mode xdm (5), il suffit de commenter la ligne initdefault :
    #id:3:initdefault:
    Et le système vous demandera d'indiquer le mode à utiliser .


    ATTENTION ! Ce qui suit n'est pas sans risque et ne garantie pas la récupération intégrale de vos données .
    Et comme sur tous les systèmes si depuis l'éffacement accidentel vous avez manipulé des fichiers (écriture) il y a de fortes chances que vos fichiers soient irrémmédiablement perdus !
    La première chose est de FAIRE DES SAUVEGARDES le reste est du bidouillage de secours !

    Effacement ou formatage accidentel :
    Si vous avez formattaté accidentellement une partition, vous pouvez utiliser un script perl pour récupérer vos données, ce script se trouve sur www-eleves.enst-bretagne.fr/~aubert/perl  ou dans le GUIDE_DU_ROOTARD .
    Une autre méthode plus brutale consite à faire un strings /dev/hda2 > recup, et il ne vous reste plus qu'à faire le tri dans ce fichier pour y récupérer ce qui est encore utilisable.

    La récupération de fichiers éffacés est encore plus délicate :
    Plus le système de fichiers (FS) concerné sera démonté rapidement après l'éffacement des fichiers, plus vous aurez de chance de récupérer un maximum de données .
     Vous trouverez le détail des opérations à éffectuer (plutot longues) dans le Ext2fs-Undeletion mini-HOWTO , Je vais seulement vous indiquer le principe .

     _Démontage de la partition
     _Remontage de la partition en lecture seule
     _Attribution d'un espace suffisant pour contenir les données récupées
     _Recherche des blocs éffacés (inodes)
     _Récupération des blocs de données .

    En supposant que vos fichiers se trouvaient sur la partition /dev/hdb1 montée en /usr/local :
    _Pour remonter la partition en lecture seule mount -o ro,remount /usr/local
      ou si vous préferez :
    umount /usr/local
    mount -t ext2 -o ro /dev/hdb1 /usr/local
    Si un processus utilise /usr/local/bin par exemple, il faudra tuer (kill) ce processus avant de pouvoir démonter ou remonter ce système de fichiers .
    _Si vous ne disposez pas pas de partitions ayant un espace libre suffisant pour y copier la récup, il faut utiliser un ramdisk et le formatter, par exemple un ramdisk de 2 Mo monté en /mnt/recup :
    mkdir /mnt/recup
    dd if=/dev/zero of=/dev/ram0 bs=1K count 2048
    mke2fs -v -m -0 /§dev/ram0 2048
    mount -t ext2 /dev/ram0 /mnt/recup

    Attention à ne pas démonter votre ramdisk avant d'avoir copier vos données récupérées sur un support physique .
    _La lecture des blocs, qui étaient attribués à vos fichiers, ce faira avec l'utilitaire fsgrab , que vous trouverez sur http://pobox.com/~aaronc/tech/fsgrab*.tgz
    _Création de la liste des inodes libérés récemment :
    echo lsdel | degugfs /dev/hdb1 > recup.txt
    Il ne vous reste plus qu'à rechercher dans recup.txt, les inodes classés par date et heure si vos données effacées s'y trouvent .
    _Récupérer les infos (stat) sur l'inode éffacé :
    supposons que dans le fichier recup.txt vous trouviez un inode: 148003 dont la date et l'heure correspondent à votre fichier éffacé :
    degugfs: stat <148003>
    si la dernière ligne d'info indique TOTAL = 6 , alors ces blocs de données pourront-etre récupérés en tapant :
    degugfs: dump <148003> /mnt/recup/recup.000
    Ce fichier ainsi récupéré se termine par des données qu'il faut corriger avec la commande :
    dd count=1 if=/mnt/recup/recup.000 of=/mnt/recup/fichier.000 bs=6065
    bs=6065 est la taille du fichier indiqué par Size: 6065 de la commande stat de debudfs .
    Voici l'exemple donné dans le Ext2fs-Undeletion mini-HOWTO
    debugfs: stat <148003>
      Inode: 148003 Type: regular Mode: 0644 Flags: 0x0 Version: 1
      User: 503 Group: 100 Size: 6065
      File ACL: 0 Directory ACL: 0
      Links: 0 Blockcount: 12
      Fragment: Address: 0 Number: 0 Size: 0
      ctime: 0x31a9a574 -- Mon May 27 13:52:04 1996
      atime: 0x31a21dd1 -- Tue May 21 20:47:29 1996
      mtime: 0x313bf4d7 -- Tue Mar 5 08:01:27 1996
      dtime: 0x31a9a574 -- Mon May 27 13:52:04 1996
      BLOCKS:
      594810 594811 594814 594815 594816 594817
      TOTAL: 6

    -IL ne vous reste plus qu'à copier ce fichier fichier.000 sur un support physique disque dur ou disquette .

    Il vaut mieux patienter quelques minutes, le temps d'une sauvegarde, que de passer plusieurs heures voir plusieurs jours à essayer de récuperer des morceaux de fichiers ! Aussi lisez la partie consacrée à la Sauvegarde des données
    haut de page