Gerar um kernel inicializável do QEMU a partir de uma instalação existente

2

Eu tenho tentado configurar o QEMU para fornecer apenas a saída do console. Até agora eu consegui com os seguintes parâmetros: qemu-system -curses -hda debian.img , onde debian.img é uma instalação Debian em funcionamento. Nenhum outro parâmetro relacionado à inicialização é usado. (N) Maldições parece ser terrivelmente bugs e lento para este propósito, no entanto, pelo menos sob um host macOS.

Descobri que uma maneira melhor de obter saída não-GUI de console para o terminal em que o qemu é lançado é usar -serial stdio -append "console=ttyAMA0" em vez de -curses . Esta opção requer que você especifique um kernel com o parâmetro -kernel . Existe uma maneira de extrair um kernel inicializável da minha instalação Debian existente que eu possa fornecer ao qemu? Eu já tentei copiar o vmlinux de /boot e também segui este guia para extrair o kernel do sistema operacional, mas eles não serão inicializados no QEMU com o meu arquivo debian.img existente. Eu acredito que eu possivelmente tenho que fornecer o initrd.img do meu sistema operacional para o qemu também.

Agora, é possível continuar usando meu arquivo exisiting debian.img com um SO totalmente funcional nele, enquanto também passa um kernel (extraído) daquela imagem (ou em outro lugar se necessário) para o qemu usando o parâmetro -kernel ? (e a mesma pergunta para o arquivo initrd.img) Meu convidado OS no arquivo debian.img é Debian Jessy.

    
por rien333 09.07.2017 / 19:59

1 resposta

1

Se você usar a inicialização direta do kernel (via a opção -kernel QEMU), você certamente desejará fornecer o -initrd também. Eles podem ser copiados do diretório /boot do sistema emulado em execução ou você pode usar losetup e kpartx para tornar as partições do arquivo de imagem montável (e certifique-se de desmontá-las antes de iniciar o sistema emulado novamente ). Geralmente você também terá que -append "root=/dev/sda2 console=ttyAMA0" ou similar.

Uma maneira alternativa é anexar o parâmetro do kernel necessário à configuração do carregador de boot na imagem. É menos flexível, mas talvez você não precise realmente de toda a flexibilidade de -append . Você pode precisar executar update-grub ou algo semelhante para obter o parâmetro console incorporado no menu de inicialização real. Execute cat /proc/cmdline no sistema inicializado para verificar se realmente está em vigor.

Você precisará de -serial stdio nos dois casos, mas substitua-o por -nographic quando não precisar mais da janela gráfica.

    
por 10.07.2017 / 16:36