Blog Widget by LinkWithin

16 juin 2016

[Tuto] Réparer un Linux cassé

 

Ce guide peut vous sauver la vie, après un update foireux par exemple...

Les distrib Linux et leur système de mise à jour régulière c'est pas mal, mais parfois cela ne se passe pas toujours bien. J'ai encore pu en faire l'expérience il n'y a pas longtemps sur un Ubuntu.

Alors voilà, si au reboot suivant un update vous arrivez sur un blackscreen, pas de panique tout n'est pas forcément perdu. 


La méthode que nous allons utiliser ici est celle du Chrooting, autrement dit une méthode qui consiste à utiliser un système hôte (un live CD par exemple) et de lui faire croire qu'un point de montage spécifié est sa racine "/" (d'où le root). On lui fait une sorte de focus.

1) Prérequis

  1. Toutes les actions devront être réalisées avec les droits super-utilisateur (root)
  2. Assurez-vous que les architectures soient identiques entre votre OS d'origine et le live CD utilisé (32 bits ou 64 bits)
  3. Dans notre exemple, le disque à "récupérer" est /dev/sda1 et il est formaté en ext3

2) On procède au chroot

Voici les commandes à exécuter (à adapter à votre configuration si vous n'êtes pas en sda1):
cd / mount -t ext3 /dev/sda1 /mnt mount -t proc proc /mnt/proc mount -t sysfs sys /mnt/sys mount -o bind /dev /mnt/dev

Si votre répertoire /boot est sur une partition différente de votre / et que vous voulez manupluer des fichiers sur ce dernier (par exemple si vous voulez modifier votre GRUB, faire un upgrade du kernel, etc.), vous aurez également besoin de monter cette partition. Concrètement si vous avez un /dev/sda2 et qu'il est du type ext2 alors faites un :
mount -t ext2 /dev/sda2 /mnt/boot

Vous pouvez répeter cette procédure pour tout autre filesystem auquel vous voudriez accéder (/var, /usr).

Pour la partie configuration réseau, si vous en avez le besoin, vous pouvez copier votre /etc/resolv.conf  dans votre système chrooté :
cp -L /etc/resolv.conf /mnt/etc/resolv.conf

Maintenant nous sommes prêts à utiliser les filesystems montés :
chroot /mnt /bin/bash

NB: Si vous avez une erreur chroot: cannot run command '/bin/bash': Exec format error, typiquement cela indique que vous essayez de faire un chroot sur une architecture différente de celle sur laquelle vous avez booté (voir mon avertissement plus haut sur le 32bit/64bits

A ce moment précis, vous utilisez toujours le kernel sur lequel vous avez booté mais tous les répertoires (/toto)seront mappés sur leurs équivalents dans le chroot: (/mnt/toto).


3) La réparation

C'est parti pour réparer votre distrib, par exemple les actions les plus fréquentes :
  • Réinstallation de GRUB sur votreMBR (fix boot)
  • Reset de mot de passe
  • Upgrade kernel (ou downgrade)
  • Reconstruction du initramdisk
  • Réparation du /etc/fstab
  • Réinstallation de packages avec apt, yum, etc
  • ...

4) Nettoyage

Une fois votre boulot terminé, vérifiez que tous les programmes soient stoppés puis quittez le chroot :
exit

Démontez proprement toutes les partitions que vous aviez monté :
umount /mnt/boot #si vous aviez monté d'autres partitions umount /mnt/{proc,sys,dev}

Pour finir, démontez votre disque dur:
umount /mnt

NB: Si vous avez une erreur "/mnt (ou autre partition) is busy", vous avez 2 cas possibles:
  • Un programme est toujours en cours d'utilisation dans le chroot.
  • Un point de montage est toujours présent ou monté. Par exemple vous aviez monté /mnt/var et vous ne l'avez pas démonté avant de tenter de démonter /mnt (cas le plus fréquent).
Astuce : si vous voulez voir tous les montages actuellement présents, exécutez simplement la commande  mount sans arguments.


5) Reboot

Pour finaliser l'opération, tappez simplement :
reboot

Et voilà, si à l'étape 3 vous avez assuré normalement tout devrait bien se passer et vous devriez retrouver votre disrib en pleine forme!

0 commentaires :

Enregistrer un commentaire