UEFI开发学习14 – 使用QEMU
前言
平常我们测试efi app使用的是NT32,Linux下则是Emulator,它们都只是简单的模拟出一个UEFI的环境而已,如果我们要装一个OS,那它们就做不到了。下面介绍一个既可以模拟UEFI也可以当虚拟机的工具:QEMU。
QEMU区别于virtual box和WMware的就是它是一个可定制化的虚拟机,包括它使用的BIOS。而且还可以模拟多种硬件平台,比如AARCH64,MIPS,ARM等。基于此,我们就可以用它来作UEFI开发学习使用。
认识QEMU
至QEMU官网下载最新安装包安装,安装完毕后打开安装目录。目录中主要有两部分需要了解。
1.固件部分
这是各平台对应的UEFI固件,启动QEMU的时候可选择加载。
2.QEMU程序
以qemu-system命名前缀的是模拟各个平台程序的入口,如要模拟ARM平台,则运行qemu-system-arm.exe。
启动QEMU
1.在该目录打开一个命令行窗口或Power Shell,运行qemu-system-x86_64.exe,运行后如下:
这种情况下QEMU加载的是Legacy BIOS,位于目录下的bios-256k.bin,如果将该文件改名,就会提示找不到此文件,QEMU便启动不了。
这个BIOS也是一个开源项目,
地址:https://github.com/qemu/seabios
官网:https://www.seabios.org/SeaBIOS
2.接下来使用UEFI固件启动,可通过-pflash指定,
qemu-system-x86_64.exe -pflash .\edk2-x86_64-code.fd
启动后会使用默认的PXE启动,时间比较久,通过参数-net none可移除PXE启动,即
qemu-system-x86_64.exe -pflash .\edk2-x86_64-code.fd -net none
这样很快就进入Shell了。
此时怎么像nt32那样可以将某个目录当作磁盘来访问呢?可以用<-hda fat:rw:目录>来指定,如:
qemu-system-x86_64.exe -pflash .\edk2-x86_64-code.fd -net none -hda fat:rw:C:\ASL
这里我设置的是C:\ASL,注意一定要有目录名
启动后便可看到fs0,这样就可以像nt32那样使用了。
3.自己编译一个UEFI固件。在UDK2018或最新的EDK2源码中,都含有一个OvmfPkg,这就是为QEMU虚拟硬件定制的UEFI固件,编译后就可以在QEMU中启动。编译命令:
build -p OvmfPkg/OvmfPkgX64.dsc
这是RELEASE版本,DEBUG版本需要加上参数-D DEBUG_ON_SERIAL_PORT ,即:
build -p OvmfPkg/OvmfPkgX64.dsc -D DEBUG_ON_SERIAL_PORT
DEBUG版本运行的时候也要加参数才会有打印,如下:
qemu-system-x86_64.exe -pflash .\Ovmf.fd -net none -hda fat:rw:C:\ASL -serial stdio
为了更真实模拟串口打印,可以使用虚拟串口工具添加两个串口,一个供QEMU使用,一个用来接收串口数据。QEMU启动参数也要修改,由-serial stdio改为-serial COMx,COMx为串口号。
安装系统
这里举例安装一个Windows 7
1.创建一个20G的虚拟磁盘
qemu-img.exe create -f qcow G:\Workspace\VB\win7.img 20G
2.加载ISO镜像启动安装
qemu-system-x86_64.exe ^
-cpu Skylake-Client-v1 ^
-cdrom G:\Workspace\OS\Win7\cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso ^
-hda G:\Workspace\VB\win7.img ^
-m 2048 ^
-net nic ^
-net user ^
-pflash edk2-x86_64-code.fd
将以上命令中的目录修改下,保存成bat文件,然后在命令行运行即可,“^” 在bat文件中用于换行连接
参数说明:
-cpu 选择虚拟的CPU型号,具体型号可加参数-cpu help查询
-cdrom 虚拟光驱文件(ISO)路径
-hda 加载虚拟硬盘
-m 分配内存
-net 网络设置
启动后便可安装了,我的这里大概30分钟可安装完毕。
如果要复制文件到OS,可用UltraISO制作成ISO加载即可。
至此本篇结束
附件
UltraISO:https://wwa.lanzoui.com/i1kUZnifabc
Windows7镜像:https://msdn.itellyou.cn/
虚拟串口:https://wwa.lanzoui.com/iYdzSnj94bg
版权声明:
作者:bin
链接:https://ay123.net/mystudy/uefi/1004/
来源:爱影博客
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论