Я пытаюсь эмулировать среду EFI, используя QEMU (kmv); Виртуальный ящик занимает 15 минут для загрузки в режиме EFI с использованием Archboot.
Используя устаревший режим BIOS, я могу загрузиться с помощью этой команды:
root@citsnmaiko-deb:/home/maiko/uefi/ovmf# qemu-system-x86_64 -kernel ../bzImage -initrd ../rootfs.gz -append "rw root=/dev/ram0 ramdisk_size=40960"
и это работает с моим собственным ядром и файловой системой.
file ../bzImage
../bzImage: Linux kernel x86 boot executable bzImage, version 3.6.1 (root@citsnmaiko-deb) #4 , RO-rootFS, swap_dev 0x3, Normal VGA
у него также есть поддержка EFI.
Я пытаюсь сделать то же самое с файлами EFI, которые я скачал отсюда
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"
И я упал в оболочке EFI, не включить загрузку.
Если я использую последнюю версию Ubuntu, используя ту же среду 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"
... процесс загрузки работает нормально.
Я пытался заменить загрузочные файлы Ubuntu моими, но, возможно, я не до конца понимаю их функциональность. Когда я просто заменяю файлы после монтирования 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
появляется тот же EFI Shell. Это нормально? initrd.lz и rootfs.gz являются взаимозаменяемыми, верно? Как насчет bzImage и vmlinuz?
Чего мне не хватает?
источник
apt install ovmf
и сразуkvm -bios OVMF.fd ...
Не прямой ответ, но так как нет никого, вас может заинтересовать этот отчет об ошибках в xorriso - я тоже собираюсь комментировать, но вкратце, xorriso-1.2.4 с вышестоящей версией 1044 прекрасно работает для меня, и мое оборудование поддерживает именно этот скрипт (это русская вики, но часть скрипта должна быть достаточно разборчивой; обратите внимание
efiboot.img
).Обратите внимание, что это
/usr/lib/syslinux/isohdpfx.bin
syslinux, и похоже, что в последней версии 4.06 произошли соответствующие изменения в отделе EFI.Вот еще одна полезная информация по (U) EFI , и спасибо за скриптлет в вопросе :)
источник
Используя этот скрипт ,
cd
в дерево исходников ядра и запустите:где
OVMF.fd
был извлечен из https://sourceforge.net/projects/edk2/files/OVMF/OVMF-X64-r15214.zip/downloadСкрипт генерирует минимальную файловую систему с BusyBox, компилирует ядро и запускает его в QEMU с:
Теперь мы можем проверить, что UEFI был использован внутри QEMU, как упомянуто в этом посте :
источник
источник