Estou tentando emular um ambiente EFI usando QEMU (kmv); O virtualbox leva 15 minutos para inicializar no modo EFI usando o archboot.
Usando o modo BIOS herdado, posso inicializar usando este comando:
root@citsnmaiko-deb:/home/maiko/uefi/ovmf# qemu-system-x86_64 -kernel ../bzImage -initrd ../rootfs.gz -append "rw root=/dev/ram0 ramdisk_size=40960"
e funciona com meu kernel e sistema de arquivos personalizados.
file ../bzImage
../bzImage: Linux kernel x86 boot executable bzImage, version 3.6.1 (root@citsnmaiko-deb) #4 , RO-rootFS, swap_dev 0x3, Normal VGA
também tem suporte a EFI.
Estou tentando fazer o mesmo com os arquivos EFI que baixei daqui
wget http://ufpr.dl.sourceforge.net/project/edk2/OVMF/OVMF-X64-r11337-alpha.zip -P ovmf
cd ovmf/
unzip -x OVMF-X64-r11337-alpha.zip
# rename the files for QEMU find them
mv OVMF.fd bios.bin
mv CirrusLogic5446.rom vgabios-cirrus.bin
# start QEMU
root@citsnmaiko-deb:/home/maiko/uefi/ovmf# qemu-system-x86_64 -L . -kernel ../bzImage -initrd ../rootfs.gz -append "rw root=/dev/ram0 ramdisk_size=40960"
Could not open option rom 'linuxboot.bin': No such file or directory
pci_add_option_rom: failed to find romfile "pxe-e1000.bin"
E eu sou deixado cair em um shell EFI, não habilito para inicializar.
Se eu usar a versão mais recente do Ubuntu, usando o mesmo ambiente EFI
root@citsnmaiko-deb:/home/maiko/uefi/ovmf# qemu-system-x86_64 -L . -boot d -cdrom ../ubuntu-12.10-desktop-amd64.iso
pci_add_option_rom: failed to find romfile "pxe-e1000.bin"
... o processo de inicialização funciona bem.
Tentei substituir os arquivos de inicialização do Ubuntu pelos meus, mas talvez eu não entenda completamente sua funcionalidade. Quando substituo os arquivos depois de montar o ISO:
mkdir tmp
bsdtar xf ubuntu-12.10-desktop-amd64.iso -C tmp
cp bzImage tmp/casper/vmlinuz
cp rootfs.gz tmp/casper/initrd.lz
genisoimage -o customUbuntu.iso tmp/
qemu-system-x86_64 -L . -boot d -cdrom customUbuntu.iso
o mesmo EFI Shell aparece. Tudo bem? initrd.lz e rootfs.gz são intercambiáveis, certo? Que tal bzImage e vmlinuz?
o que estou perdendo?
fonte
apt install ovmf
e depoiskvm -bios OVMF.fd ...
Não é uma resposta direta, mas como não há nenhuma, você pode estar interessado neste relatório de erros do xorriso - também vou comentar lá, mas, em resumo, o xorriso-1.2.4 com a revisão upstream 1044 funciona bem para mim e meu hardware suporta exatamente esse script (é um wiki falado em russo, mas a parte do script deve ser legível o suficiente; preste atenção
efiboot.img
).Observe que
/usr/lib/syslinux/isohdpfx.bin
vem do syslinux e parece que o mais recente 4.06 possui alterações relevantes no departamento EFI.Aqui está outro poço de conhecimento útil sobre (U) EFI e obrigado pelo scriptlet na pergunta também :)
fonte
Usando este script ,
cd
em uma árvore de origem do kernel e execute:onde
OVMF.fd
foi extraído de https://sourceforge.net/projects/edk2/files/OVMF/OVMF-X64-r15214.zip/downloadO script gera um sistema de arquivos mínimo com o BusyBox, compila o kernel e o executa no QEMU com:
Agora podemos verificar se o UEFI foi usado dentro do QEMU, conforme mencionado neste post :
fonte
fonte