GNU/Linux >> Tutoriels Linux >  >> Linux

pygrub :impossible de trouver la partition contenant le noyau

Présentation :
Dernièrement, après avoir mis à jour de nombreux packages dans une machine virtuelle Xen 4.4 DOMU, pygrub ne pouvait plus démarrer la machine virtuelle.
Lors de la mise à jour de sécurité, le grub2(grup-pc) installé, qui n'avait jamais créé de problèmes auparavant avec pygrub, a été mis à jour et tout à coup, cela a créé des problèmes pour démarrer la machine virtuelle. Voici le message d'erreur que j'ai reçu en essayant de le démarrer :
Parsing config from /etc/xen/VM.cfg
libxl: error: libxl_bootloader.c:628:bootloader_finished: bootloader failed - consult logfile /var/log/xen/bootloader.32.log
libxl: error: libxl_exec.c:118:libxl_report_child_exitstatus: bootloader [-1] exited with error status 1
libxl: error: libxl_create.c:1024:domcreate_rebuild_done: cannot (re-)build domain: -3
libxl: error: libxl_dom.c:35:libxl__domain_type: unable to get domain type for domid=32
Unable to attach console
libxl: error: libxl_exec.c:118:libxl_report_child_exitstatus: console child [0] exited with error status 1

J'ai une autre machine virtuelle avec le même système Debian qui démarre bien. Après avoir comparé les grub.conf etc. les uns avec les autres, je n'ai pu voir aucune différence.
Si je lance le pygrub avec le disque d'image de la VM comme argument, on me présente normalement le menu Grub, puis je lance avec les erreurs normales. Cette fois, je n'ai eu aucun menu et j'ai reçu le message d'erreur suivant :
/usr/lib/xen-4.4/bin/pygrub /virtual/xen/VM/disk.img
Traceback (most recent call last):
File "/usr/lib/xen-4.4/bin/pygrub", line 839, in
raise RuntimeError, "Unable to find partition containing kernel"
RuntimeError: Unable to find partition containing kernel

Après avoir cherché un peu sur Google, j'ai trouvé ce site qui parle également de ce problème bien qu'avec un volume LVM au lieu d'une image disque de fichier. Mais le principe était le même :
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=745419
Donc en résumé :si pygrub voit autre chose que des zéros dans le premier 512 octets du disque image, il retourne avec cette erreur :'Impossible de trouver la partition contenant le noyau'

Cause :
Lors de la mise à jour de grub-pc, le script du package m'a demandé de spécifier le secteur de démarrage où grub devait être installé et il m'est arrivé de sélectionner celui proposé "/dev/xvda2", ce qui était une erreur.

Solution préventive :
J'aurais dû laisser la partition image intacte et continuer la mise à niveau de Grub-PC sans que grub soit écrit dans le secteur de démarrage, puis exécuter ensuite la commande :
update-grub

Présenter la solution :
Remplacez le secteur de démarrage (512 octets) du fichier image par des zéros.

Commande :
dd conv=notrunc if=/dev/zero of=/virtual/xen/domains/VM/disk.img bs=512 count=1
Remarque : J'utilise l'option conv=notrunc pour vous assurer que le fichier de sortie ne sera pas tronqué à 512 octets après l'écrasement.

Résultat :
J'ai alors pu redémarrer correctement la VM.


Linux
  1. Linux - Le noyau ne trouve pas le fichier /dev/sda lors du démarrage ?

  2. Vous ne trouvez pas -lm ?

  3. Grub-install :cette étiquette de partition Gpt ne contient aucune partition de démarrage du BIOS ?

  4. Redimensionner la partition de démarrage

  5. Ignorer le module du noyau au démarrage

ERREUR :Impossible de trouver l'arborescence source du noyau pour le noyau en cours d'exécution - CentOS / RHEL / AlmaLinux

Apt-get Build-dep est incapable de trouver un paquet source ?

Erreur :Impossible de télécharger la vidéo ?

Linux - Impossible de démarrer Vm :Erreur 13 :Format exécutable non valide ou non pris en charge ?

grub2-install :erreur :/boot/efi ne ressemble pas à une partition EFI sur une nouvelle installation Gentoo

Trouver le chargeur de démarrage