O bootloader precisa encontrar algum arquivo em um lugar específico. O Ubuntu usa o Grub como seu bootloader padrão, e o Grub contém um driver do sistema de arquivos que ele usa para carregar o kernel Linux, mas o Grub precisa encontrar o driver do seu sistema de arquivos. Além disso, o
Se você tentar recriar a VM a partir do zero, criando um disco em branco e particionando-o, é ainda pior: o disco não conterá um gerenciador de inicialização.
Como uma etapa de restauração adicional, você precisa reinstalar o gerenciador de inicialização. Acho que o seguinte comando deve fazer isso (você pode precisar de algumas outras opções para garantir que o Grub inclua os drivers de dispositivo necessários):
/usr/sbin/grub-install --root-directory="$MNT_DIR" /dev/nbd
e certifique-se de que /boot/grub/device.map
contenha
(hd0) /dev/nbd
Observe que esse device.map
não funcionará se você executar grub-install
na VM. Se isso for importante, salve e restaure device.map
em torno da invocação de grub-install
ou invoque manualmente o comando de baixo nível que grub-install
eventualmente executa.
Uma abordagem alternativa seria configurar sua VM com um minúsculo disco de inicialização que contenha apenas o carregador de inicialização, que você não se importaria de construir do zero o tempo todo (ou você poderia armazenar em cache uma cópia compilada toda vez que o carregador de inicialização fosse alterado) o que deveria acontecer raramente).