Solución:
Da la casualidad de que parece un error en el paquete de debian de grub
.
los -kernel grub.img
El enfoque funciona si solo incluyo los módulos grub que necesito en grub-mkimage
.
los -bios grub.bin
funciona con el paquete grub más reciente de experimental
(2.00-7). sin embargo, el grub.bin
que viene con él no es muy útil.
Viene con un memdisk
que viene con el grub.cfg
. Hubiera sido mejor usar ese disco de memoria para contener los módulos y el grub.cfg
ser especificado con el -c
opción de grub-mkimage
. Por ejemplo, una de las entradas del menú busca /boot/grub/grub.cfg
y se encuentra en el memdisk como resultado. Además, el paquete debian no incluye los módulos qemu grub, por lo que no puede construir un grub.bin diferente (aunque puede editar el archivo binario para cambiar el grub.cfg) a menos que lo haga desde el paquete fuente.
los -bios grub.bin
enfoque suena como el enfoque más limpio para mí, pero usaré el -kernel
o enfoque de disquete hasta que se arregle el paquete debian.
EDITAR: bueno el ata.mod
El módulo grub para leer unidades IDE emuladas es mucho más lento que usar biosdisk.mod
en combinación con seabios
(la BIOS predeterminada cuando no se usa -bios grub.bin
). Además, parece que el firmware de grub no admite discos virtio-blk ni virtio-scsi, por lo que kvm -bios grub.bin
no va a ser una opción para mí.
En caso de que alguien quiera seguir ese camino, ahora estoy usando (sintaxis zsh):
grub-mkimage -O i386-pc -c =(print -l serial 'terminal_input serial'
'terminal_output serial' 'set prefix=(hd0)/boot/grub' '. grub.cfg') -o grub.img
at_keyboard configfile biosdisk ext2 linux test serial halt minicmd terminal cat
Y -kernel grub.img -nographic
pasó a kvm. Eso es para arrancar máquinas virtuales Linux sin gráficos (solo una interfaz en serie, así que asegúrese de que el grub de la máquina virtual esté configurado para usar en serie (o al menos no configurado para usar gráficos), que la consola del kernel vaya a ttyS0 y que ejecute un getty allí). También se puede adaptar fácilmente para que funcione con consolas VGA.
Después de mucha navegación web, no he encontrado ninguna solución y he creado un contenedor para que pygrub se use con libvirt / kvm.
Quizás esta solución te sea útil, incluso tarde, así que me gustaría compartirla. Es un script de gancho libvirt. El script analiza la configuración del dominio en el evento prepare / begin, permite que pygrub encuentre el kernel a través de los discos disponibles y luego copie las imágenes en la carpeta deseada en el host.
Eche un vistazo a github.com/baquilla/pygrub-kvm-wrapper.