

はじめまして  
Ubuntu上でqemuでuefiアプリケーションを動かそうとしていますが方法がわかりません。  
試した方法は次の通りです

  1. file hello.efi 

> hello.efi: PE32+ executable (EFI application) x86-64 (stripped to external
> PDB), for MS Windows

  2. dd if=/dev/zero of=usb.img bs=512 count=200 

> 200+0 レコード入力  
>  200+0 レコード出力  
>  102400 バイト (102 kB) コピーされました、 0.00105836 秒、 96.8 MB/秒

  3. gdisk usb.img 

> Command (? for help): n  
>  :  
>  Hex code or GUID (L to show codes, Enter = 8300): EF00  
>  Command (? for help): w  
>  Do you want to proceed? (Y/N): y

  4. gdisk -l 

> Number Start (sector) End (sector) Size Code Name  
>  1 34 166 66.5 KiB EF00 EFI System

  5. sudo losetup --offset 34 /dev/loop0 usb.img
  6. mkdosfs /dev/loop0
  7. sudo mkdosfs /dev/loop0 

> Loop device does not match a floppy size, using default hd params

  8. mount /dev/loop0 /tmp/Buzz/
  9. mkdir -p /tmp/Buzz/EFI/BOOT
  10. cp hello.efi /tmp/Buzz/EFI/BOOT/BOOTX64.EFI
  11. qemu-system-x86_64 -bios OVMF.fd -m 512 -cpu kvm64 -vga cirrus -hdb usb.img 

以上、よろしくお願いいたします。


CC BY-SA 3.0
2015-08-01T18:37:59.307
12927
2017-04-30T09:08:08.130
2017-04-30T09:08:08.130
19110
8461
question
qemu
qemuでuefiアプリケーションを動かす方法について


私自身の質問の答えになりませんが、イメージではなく、実際のUSBメモリを使うことでefiアプリケーションを動かすことにしました。
参考までに手順を残しておきます

  1. gpartedでfat32のパーテーションを作成
  2. そのパーテーションにbootable,espのフラグをつける
  3. そのパーテーションをマウントする(例えば、/dev/sdc1を/tmp/buzなどに)
  4. /tmp/buzにefiプログラムを置く
  5. qemu-system-x86_64 -bios OVMF.fd -usb /dev/sdc実行

以上です。ありがとうございました。


CC BY-SA 3.0
2015-08-16T08:12:57.753
14467
2015-08-16T08:12:57.753
8461
12927
answer