2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntu Desktop で OVMF と QEMU をソースコードからビルドする

Last updated at Posted at 2016-10-13

2020/4/26(日)時点での EDK II と QEMU の HEAD をビルドして使ってみた時のメモです。

注意点

2025/3/6(木)に再ビルドした際に気づいた変更点を反映しています。2020/4/26(日)時点のコードをビルドする場合には、git show コマンドで表示されている版に git checkout してください。git checkout 後の EDK2 のビルドで Python のコード等のエラーが出力されますが、無視しても問題なく使用可能です。Ubuntu Desktop 24.04 LTS は未検証です。

作業環境

準備作業

  • 事前にインストールした初期状態の Ubuntu Desktop の仮想マシンをクローンする。
  • クローンした新しい Ubuntu Desktop の仮想マシンを起動し、Terminal から以下のコマンドを投入する。ビルドエラーになった場合に、「apt-file search ファイル名」でパッケージを探せるようにするため。
$ sudo apt install -fy apt-file
$ sudo apt-file update

EDK2 の OvmfPkg をビルドする

  • Terminal から以下のコマンドを投入する。同じ版を試したい場合は、git checkout すること。
$ sudo apt install -fy build-essential uuid-dev nasm iasl git python3-distutils
$ git clone https://github.com/tianocore/edk2/

$ cd edk2
$ git show -s --format=%H
0f1946b6626e263c7f764c21cc241cc9faf8a1ae

$ git submodule update --init
$ make -C BaseTools
$ . ./edksetup.sh
$ build -a X64 -t GCC49 -p OvmfPkg/OvmfPkgX64.dsc
$ cp -p Build/OvmfX64/DEBUG_GCC49/FV/OVMF_*.fd ~
$ cd ..

QEMU をビルドする

  • Terminal から以下のコマンドを投入する。同じ版を試したい場合は、git checkout すること。
$ sudo apt install -fy zlib1g-dev libglib2.0 libpixman-1-dev libfdt-dev gvncviewer
$ git clone https://github.com/qemu/qemu
$ cd qemu
$ git show -s --format=%H
ee573f5326046223b6eef4ae7fbfec31d274e093

$ ./configure --target-list=x86_64-softmmu
$ make -j2
$ sudo make install
$ qemu-system-x86_64 --version
QEMU emulator version 4.2.94 (v5.0.0-rc4-dirty)
Copyright (c) 2003-2020 Fabrice Bellard and the QEMU Project developers
$ cd ..

シェルスクリプトを準備する

  • ホームディレクトリに以下のシェルスクリプトを作成する。ホームディレクトリに作業用の tmp_efi ディレクトリを作成するので注意すること。
efi_exec.sh
#!/bin/bash

IS_DBG=${1:-0}

mkdir -p $HOME/tmp_efi

if test $IS_DBG -eq 1
then
    DBG="-gdb tcp::10000 -S"
else
    DBG=""
fi

qemu-system-x86_64 \
    -machine pc \
    -net none -nographic -vnc :0 \
    -drive if=pflash,readonly,file=OVMF_CODE.fd,format=raw \
    -drive if=pflash,file=OVMF_VARS.fd,format=raw \
    -drive format=raw,file=fat:rw:$HOME/tmp_efi \
    -debugcon file:$HOME/tmp_efi/ovmf.log \
    -global isa-debugcon.iobase=0x402 $DBG

VNC で EFI Shell を使ってみる

  • Terminal を起動し、以下のコマンドを投入する。
$ ./efi_exec.sh
  • EFI Shell が起動するので使ってみる。
Shell.PNG
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?