Faire des tests, des installations, ou toutes autres manipulations sur un disque peut s’avérer dangereux, et aucun admin système n’est à l’abris d’un « crash » disque.

Généralement, on « casse » la partition au niveau du boot (/boot), en modifiant les services invoqués au démarrage (mauvais driver par exemple). Il est possible de savoir quel service est à l’origine d’une erreur ou d’un kernel panic en démarrant son système en mode Single user (Intercepter le grub, appuyez sur « e » sur le disque HS, appuyez sur « e » sur la ligne kernel, ajoutez  » S » à la fin, appuyez sur Entrée, appuyez sur « b » pour booter)

 

Heureusement, en utilisant un autre disque, CD ou une clé USB, il est possible de réparer son disque, dans ce tuto, je vais vous expliquer comment retrouver le répertoire boot de son disque 1 (sda) à partir d’un disque 2 (sdb). Les appellations peuvent changer, à vous d’adapter les noms, dans ce tuto on supposera que sdb est ma clé USB.

Commencer par avoir un disque 2 qui contient une image originale du disque 1, ou tout simplement un OS « compatible » pour utiliser les mêmes commandes, mais surtout pour détecter vos drivers, vos périphériques etc. Par exemple, si sda tombe sous CentOS 7, je vais installer CentOS 7 sur sdb. C’est une question de bon sens, mais précisons le.


 

> Commencez par rendre votre clé USB bootable depuis un terminal

$ dd if=Downloads/CentOS7.img of=/dev/sdb

> Branchez là, et redémarrez votre OS, en appuyant sur F11 (Boot manager)

> Définissez votre clé USB comme premier périphérique à lire lors de la séquence de boot (+ ou -)

Si vous disposez de la console DELL, Créez un média virtuel puis Mapper votre iso sur CD/DVD

Boot Linux

> Redémarrez sur votre image fonctionnelle (on suppose que sdb est la copie originale de sda avant notre bêtise). S’il s’agit d’un OS tout neuf, démarrez en Mode rescue lorsque celui-ci est proposé > puis entrez dans Shell

> On arrive donc sur le terminal (Shell rescue ou Terminal normal), au final c’est la même chose

> Monter votre disque sda sur sdb

$ cd /mnt
$ mkdir /tmp
$ blkid /dev/sd*  # si vous voulez monter un disque entier
$ pvs | grep sda  # pour voir le volume group de sda (vgl_root) et le physical volume associé (sda3)

# mais aussi pour savoir quel format est utilisé (ext, lvm entre autre)


 

Dans le cas d’un physical volume sous LVM on procédera ainsi :

$ lvs | grep vgl_root  # puis trouver le lvl qui correspond à votre besoin particulier (home, var...)
$ fdisk -l | grep vgl_root-lvl*  # pour récupérer le /dev/mapper
$ mount /dev/mapper/vgl_root-lvl_var /mnt/tmp   # en supposant que l'on veut juste var
$ mount /dev/mapper/vgl_root-lvl_root /mnt/tmp   # en supposant que l'on veut la racine, etc, bin...

 

Mais si l’on veut récupérer une partition entière, on peut monter notre dossier avec le UUID de celle-ci; si le format est ext3 ou ext4 par exemple. Mais si vous travailler en logical volume (LVM2), alors il faudra passer par l’étape ci-dessus.

$ blkid | grep sda1  # partition de boot en ext4
$ mount UUID=VALEUR_blkid /mnt/boot
$ ls -la /mnt/boot  # pour vérifier le tout

Vous avez maintenant la main sur n’importe quelle partie de votre disque sda depuis sdb, à vous de corriger votre problème.


 

Voyons donc le cas de l’image initramfs corrompue, cela peut se produire si notre image contient des erreurs, pour être plus précis, j’ai rencontré ce problème en ajoutant un nouveau driver avec dracut.

J’ai donc récupérer ma partition de boot (sda1), montée sur /mnt/boot comme vu ci-dessus, il faut ensuite régénérer une image qui marche (je vous conseille donc de backupé tous vos changements). Pour ma part, je retrouve bien mon image initramfs-kernel.bak

> On se positionne à présent dans /mnt/boot en changeant le répertoire racine

$ chroot /mnt/boot ; cd /mnt/boot
$ cp initramfs-kernel.img  initramfs-kernel.notworking
$ cp initramfs-kernel.bak  initramfs-kernel.img
$ dracut -f -v  # on rebuild le initramfs
$ shutdown -r now  # on redémarre et on applaudi :p

 

J’espère que ce long tuto vous aura plût, n’hésitez pas à commenter si vous avez des questions, ou des suggestions.

A bientôt 😉