开发环境
虚拟器:Ubuntu 18.04
主机:Win10
下载EDK2
从github下载
git clone https://github.com/tianocore/edk2.git
但是github下载太慢,可以从码云下载。
git clone https://gitee.com/mirrors/edk2.git
如果直接下载下来的话,是2020的版本,还有sub module的问题,此时想要快速开始的话其实可以使用UDK2018的版本。
进入到下载好的代码目录,先用git branch -a 查看一下有多少个分支
我们想要切换到UDK2018,可以使用下面的命令来切换到UDK2018
git checkout UDK2018
编译
我们需要先编译好工具才能编译代码,只用编译一次就好
make -C BaseTools/Source/C
然后就是编译代码了
./OvmfPkg/build.sh -D DEBUG_ON_SERIAL_PORT
等待编译完成后,能在下面的目录中找到这个编译好的BIOS
Build/OvmfX64/DEBUG_GCC5/FV/OVMF.fd
QEMU 运行
到OVMF.fd的目录下,在ubuntu的图形目录下运行下面的命令
qemu-system-x86_64 -bios OVMF.fd -serial stdio
其中- serial stdio表示将会把串口信息传递给终端。
如果想退出在终端按下ctrl+c即可。或者先按ctrl+a,再按下x。
如果不想要出现qemu的图形界面,可以使用-nographic。
qemu-system-x86_64 -bios OVMF.fd -nographic
我用的是win10系统+ubuntu虚拟机。如果想要实现ubuntu下的qemu的bios串口打印输出到win10系统下的话。需要用到vspd这个虚拟串口软件。
首先安装vspd软件,进入到软件后添加一对com口,这里我选择的是COM11、COM12。
然后在vmware的ubuntu虚拟机添加上串口设备。
使用下面命令将信息输出到/dev/ttyS0中
qemu-system-x86_64 -bios OVMF.fd -serial /dev/ttyS0
注意必须要为root权限的时候才能生效。
这样串口打印就打印到win10的串口软件了。