Introduzione:
Ultimamente, dopo aver aggiornato molti pacchetti in una VM Xen 4.4 DOMU, pygrub non poteva più avviare la VM.
Durante l'aggiornamento della sicurezza, grub2(grup-pc) installato prima non ha mai creato problemi con pygrub, è stato aggiornato e all'improvviso ha creato problemi per avviare la VM. Ecco il messaggio di errore che ho ricevuto quando ho provato ad avviarlo: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
Ho un'altra VM con lo stesso sistema Debian che si avvia bene. Dopo aver confrontato grub.conf ecc. tra loro non ho potuto vedere alcuna differenza.
Se ho avviato pygrub con il disco immagine della VM come argomento, normalmente mi viene presentato il menu Grub e quindi esco con gli errori normali. Questa volta non ho ricevuto alcun menu e ho ricevuto il seguente messaggio di errore:/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
Dopo aver cercato un po' su Google ho trovato questo sito che parla anche di questo problema anche se con un volume LVM invece che con un'immagine disco di file. Ma il principio era lo stesso:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=745419
Quindi nel curriculum:se pygrub vede qualcosa di diverso da zero nel primo 512 byte del disco immagine, ritorna con questo errore:'Impossibile trovare la partizione contenente il kernel'
Causa:
Durante l'aggiornamento di grub-pc lo script del pacchetto mi ha chiesto di specificare il settore di avvio in cui installare grub e mi è capitato di selezionare quello proposto '/dev/xvda2' che è stato un errore.
Soluzione preventiva:
Avrei dovuto lasciare intatta la partizione dell'immagine e continuare l'aggiornamento di Grub-PC senza che grub fosse scritto nel settore di avvio, quindi eseguire il comando:update-grub
Soluzione attuale:
Sovrascrivi il settore di avvio (512 byte) del file immagine con zeri.
Comando: dd conv=notrunc if=/dev/zero of=/virtual/xen/domains/VM/disk.img bs=512 count=1
Nota: Uso l'opzione conv=notrunc per assicurarsi che il file di output non venga troncato a 512 byte dopo la sovrascrittura.
Risultato:
Potrei quindi riavviare bene la VM.