Table des matières
Dracut Warning: Could not boot - Comment réparer
Dracut vous informe qu'il est impossible de démarrer le système GNU/Linux, avec l'un des deux messages d'erreur suivant :
dracut Warning: Could not boot. dracut Warning: /dev/disk/by-uidd/a7ed7a37-282e-4c30-8e29-b775c9591c52 does not existe Generating “/run/initramfs/rdsosreport.txt” You might want to save “/run/initramfs/rdsosreport.txt” to a USB stick or /boot after mounting them and attach it to a bug report. To get more debug information in the report, reboot with “rd.debug” added to the kernel command line.Dropping to debug shelle. dracut:/#
La variante du message d'erreur est vraisemblablement, avec les 3 premières lignes différentes :
dracut Warning: Cancelling resume operation. Device not found. dracut Warning: Coul not boot. dracut Warning: /dev/resume does not exist
Pourquoi
Vous avez installé un nouveau système d'exploitation et, lors de cette installation, la (les) partition(s) swap ont probablement été formatée. Ce formatage a alors modifié le codage UUID de la partition. Or le codage UUID, une suite de caractères alphanumériques, est employé dans divers fichiers de configuration dans le but de bien cibler (identifier) les partitions. Ce codage étant devenus obsolète, le système cherche une partition devenue fantôme. D'où le démarrage rendu impossible.
Solution
La solution bête et méchante, ce serait la méthode bourrin utilisée massivement sous Windows. On rase tout et on réinstalle ! Sans même parler de l'aspect “finesse”, avec plusieurs systèmes, ce sera tout aussi bien pas mal de temps passé. Solution qui, évidemment, a fait ses preuves mais qui ne permet pas de comprendre et donc de réparer intelligemment !
Quels outils
Nous allons chrooter le système. Par conséquent, choisissez bien votre système de départ pour chrooter. Chrooter, c'est utiliser un système d’exploitation pour y enfermer un second à l'intérieur tout en faisant croire au second qu'il est tout seul. Or, pour chrooter un système 64 bits, il faut passer par un autre système 64 bits obligatoirement. Ne tentez pas de chrooter avec du 32 bits un OS 64 bits ; cela ne passera pas !
On prend quoi alors pour chrooter ? De fait, deux solutions :
- Soit l'un de vos systèmes démarre, lui, correctement et correspond aussi à la bonne plateforme (32 ou 64 bits) ;
- Soit, et c'est bien plus probable, vous êtes obligé d'utiliser un LiveCD, un système contenu à lui tout seul dans un CD ou DVD qui peut démarrer uniquement en se déchargeant en mémoire RAM sans jamais toucher aux disques durs.
Dans les LiveCD exploitables, je suis parti de l'idée qu'il vous faut une console (un terminal), un éditeur de texte et un explorateur de fichiers. Quelques solutions :
- PartedMagic : http://partedmagic.com/ : Seule contrainte, le téléchargement de l'image ISO est désormais payant afin d'assurer le financement (4,99$ l'ISO). C'est néanmoins, à mes yeux, l'option la plus aboutie, puisqu'en plus d’être très complète, l'explorateur de fichiers monte automatiquement les partitions (pas besoin de sa casser la tête avec les droits root et les commandes mount),
- Gparted LiveCD : http://gparted.org/livecd.php : Le téléchargement est gratuit pour un système complet mais notez que vous devrez monter vous même les partitions afin de pouvoir ensuite éditer les fichiers texte.
- SystemRescueCd : http://www.sysresccd.org/ : Mêmes remarques que pour Gparted LiveCD.
Chroot
Chrootons. Désormais, tout se fait par la ligne de commande.
On prépare le terrain :
- [root@localhost ~]# mkdir /mnt/chroot
On chroote :
- [root@localhost ~]# mount /dev/sda3 /mnt/chroot
- [root@localhost ~]# mount –bind /dev /mnt/chroot/dev
- [root@localhost ~]# mount -t proc /proc /mnt/chroot/proc
- [root@localhost ~]# mount -t sysfs /sys /mnt/chroot/sys
- [root@localhost ~]# chroot /mnt/chroot
Vous devez bien sûr adapter à votre cas sda3.
Trouver les valeurs UUID
Gparted peut donner les données UIDD mais ce sera alors assez long à faire dans le cas de plusieurs partitions.
La commande blkid fait aussi bien l'affaire en donnant les informations suivantes (exemple) :
- /dev/sda1: LABEL=“Mageia” UUID=“68848273-c07d-44bd-9600-0c135c570449” SEC_TYPE=“ext2” TYPE=“ext3”
- /dev/sda2: LABEL=“Fedora” UUID=“1f5313de-89e1-433d-b834-09f48e9e24a8” SEC_TYPE=“ext2” TYPE=“ext3”
- /dev/sda3: LABEL=“Debian” UUID=“19f228ec-a368-4b98-8028-9f829a615f23” SEC_TYPE=“ext2” TYPE=“ext3” PTTYPE=“dos”
- /dev/sda5: LABEL=“Manjaro” UUID=“bcfd93ab-84d3-4207-9adf-8e7cfc171f15” TYPE=“ext4”
- /dev/sda6: UUID=“9904ebb4-4c65-40b7-88d5-e84af7de6a42” TYPE=“swap”
- /dev/sdb1: LABEL=“Ubuntu” UUID=“77e88282-876a-483b-aec1-0423615d42b6” TYPE=“ext4” PTTYPE=“dos”
- /dev/sdb2: LABEL=“openSUSE” UUID=“a741c409-a92a-4395-8e15-25440cf5ea33” SEC_TYPE=“ext2” TYPE=“ext3” PTTYPE=“dos”
- /dev/sdb3: UUID=“4f6ae71d-4b65-4ec2-b84f-acccbefbf2d5” TYPE=“swap”/
- dev/sdc1: LABEL=“Home” UUID=“210ba44b-fb57-4a0b-b965-41797be04f69” SEC_TYPE=“ext2” TYPE=“ext3”
Notez que la commande blkid requiert les droits root et peut être effectuée avant ou après avoir chrooter.
Modification des fichiers
Au moins trois fichiers sont concernés. Il suffit de trouver l'entrée UUID obsolète pour la remplacer par la nouvelle. L'entrée UUID périmée est celle donnée par le message d'erreur de dracut tandis que la nouvelle valeur a été fournie par la commande blkid.
Fichier de configuration de dracut
Le fichier /etc/dracut.conf.d/51-mageia-resume.conf contient la ligne suivante :
- add_device+=“UUID=4f6ae71d-4b65-4ec2-b84f-acccbefbf2d5”
Vérifiez la référence UUID.
Attention : selon la distribution, il est possible que le chemin du fichier de configuration de dracut diffère !
Fichier fstab
Le fichier /etc/fstab contient probablement ceci :
- # Entry for /dev/sda6 :
- UUID=a7ed7a37-282e-4c30-8e29-b775c9591c52 swap swap defaults 0 0
Modifiez avec la nouvelle UUID.
Fichier grub.cfg
Le fichier /boot/grub2/grub.cfg est probablement à modifier si vous avez eu le second message d'erreur vu plus haut. Ce message disait « dracut Warning: Cancelling resume operation. Device not found. »
Vous devriez trouver plusieurs fois le texte ci-dessous :
- resume=UUID=d162bbb9-f9f2-d2c4-7985-cf0f3ffce8d7
Cette option « resume » cible la partition swap et son UUID est à modifier.
Régénération de dracut
Régénérez dracut avec la commande suivante (toujours dans le chroot) :
- # dracut –regenerate-all –force
Démontage du chroot et redémarrage
Il est temps de démonter le chroot, soit, toujours en console :
- [root@localhost /]# exit
- exit
- [root@localhost ~]# umount /mnt/chroot/dev
- [root@localhost ~]# umount /mnt/chroot/proc
- [root@localhost ~]# umount /mnt/chroot/sys
- [root@localhost ~]# umount /mnt/chroot
Redémarrer pour vérifier.