环境配置
为了能够让使用测试BIOS的QEMU与主机(就是指普通的Windows系统,我们使用它来编译BIOS和启动QEMU虚拟机)通过网络连接,需要额外的配置。
- 首先是下载和安装OpenVPN(这里安装的是OpenVPN-2.5.5-I601-amd64.msi),安装之后会多出来若干虚拟的网卡:
- 将OpenVPN TAP-Windows6改名为tap0,方便后续使用。
- 将虚拟网卡tap0和实际网卡桥接:
- 桥接之后会多出来一个设备:
注意此时tap0是“网络电缆被拔出”的状态,因为此时QEMU还没有启动。另外还需要保证在网桥的属性中,tap0是被选中的(桥接成功之后默认就是选中的,如果有异常,可能这里会没有选中,此时通信会有问题):
- 启动QEMU,主要参数:
qemu-system-x86_64 -usb -bios OVMF.fd -serial stdio -drive format=raw,file=disk.img -net nic -net tap,ifname=tap0
其中-net nic -net tap,ifname=tap0
是网络相关的,QEMU使用的就是前面提到的虚拟网卡tap0。此时可以看到tap0已经连接了:
- 然后在QEMU启动的BIOS Shell下配置网络:
ifconfig -s eth0 static 192.168.3.128 255.255.255.0 192.168.3.1
- 配置完成之后可以使用BIOS下的ping命令进行测试:
ping 192.168.3.20
这里的192.168.3.20
是测试主机的网络IP,前面配置QEMU网卡的IP时使用了相同网段的IP,注意两者必须要在用一个网段,UEFI网络似乎还不支持跨网段。测试的结果如下:
到这里网络环境设置基本上OK,如果发现ping不通的问题,有可能是测试主机开了防火墙的关系,关闭即可(注意关闭防火墙可能带来风险,建议只在测试时使用,平常还是开着比较好):
到这里网络测试环境就已经准备完成了,不过在后续的测试过程中还会用到其它的工具,比如Wireshark、tftp等,在具体使用时会进一步说明。
接下来将介绍UEFI网络协议栈以及相关的实现模块。