Connexion

Dracut Warning: Could not boot

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


1 - 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.

2 – 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 !

2.1 – 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,
  • 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 : <a href="http://www.sysresccd.org/" target="_blank">http://www.sysresccd.org/</a> : Mêmes remarques que pour Gparted LiveCD.



2.2 - 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 (selon la partition racine du système à chrooter).

2.3 – 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) :
Caché :
/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.

2.4 – Modification des fichiers
Au moins trois fichiers sont concernés. Il suffit de trouver l'entrée UUID obsolète pour la remplacer 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.

a)  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.

b) 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.

c) Le fichier de configuration de Grub est probablement à modifier si vous avez eu le second message d'erreur vu plus haut, le message disant « dracut Warning: Cancelling resume operation. Device not found. » Il existe deux possibilités :
  • Soit vous utilisez Grub-legacy et c'est alors le fichier /boot/grub/menu.lst
  • Soit vous utilisez Grub2 (la nouvelle version plus moderne) et c'est le fichier /boot/grub2/grub.cfg

Dans les deux cas, vous devriez trouver plusieurs fois le texte ci-dessous :
resume=UUID=d162bbb9-f9f2-d2c4-7985-cf0f3ffce8d7
Cette option « resume » cible la partition swap et l'UUID est à modifier.

2.5 – Régénération de dracut
Régénérez dracut avec la commande suivante (toujours dans le chroot) :
# dracut --regenerate-all –force

2.6 – 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


(ahlner)
Si grub2 est utilisé, il ne faut pas modifier manuellement grub.cfg, car les modifications seront temporaires, suite à une mise à jour du kernel, par exemple.
Il faut seulement modifier fstab, et ensuite régénérer grub.cfg par l'une de ces commandes, en root :

Code TEXT :
update-grub


Code TEXT :
grub2-mkconfig -o /boot/grub2/grub.cfg


Redémarrer pour vérifier.
Cette page a été vue 11321 fois