NT32虚拟环境建立
我们这个学期学习的firmware程序设计课程需要我们使用到UEFI的开发环境。firmware的
英文原意就是固件的意思,可以看出就是固化在板子上的固件,主要的功能就是引导操作系统
进入内存,从而使操作系统启动。最为人所知的就是legacy BIOS引导固件,和它配套的就
是MBR磁盘,这主要是以前年代的电脑的基本配置。但是随着硬件、软件的发展,intel提出了
UEFI固件的概念,并在近些年的电脑主板中逐渐采用UEFI来代替,来和GPT磁盘共同使用,这种
磁盘的优点就是可以有非常多的分区。
这次的UEFI虚拟环境主要是参考一下网址给出的步骤 https://zhuanlan.zhihu.com/p/26010896
实际步骤
- 1.软件下载
- 2.软件配置
- 3.编译生成可执行软件
软件安装
- 1.下载源程序
- EDK II
EDK II 是一个跨平台的针对UEFI的firmware开发环境。首先要去github上下载源代码 https://github.com/tianocore/edk2
下载EDKII的 basetools
- basetools
下载之后就将压缩文件中的文件解压到任意文件夹之后,再去以下的网址下载 https://github.com/tianocore/edk2-BaseTools-win32 下载之后解压缩,修改文件夹的名称为WIN32,放到edk2-master/BaseTools/Bin文件夹下
- basetools
2.下载编译器
- VS2015/VS2013/VS2008 (default编译器是VS2008)
我是用的是VS2015,但是需要注意的是如果你下载vs2015的时候选择的是typical下载的话,C++编译所需要的很多组件是没有下载的,而我们编译这个项目是需要用Visual C++来编译的。 - Nasm
官网是 http://www.nasm.us/ 下载最新的stable release 版本,将下载的文件夹配置到环境变量的path当中
- VS2015/VS2013/VS2008 (default编译器是VS2008)
编译程序
整个程序是用VS2015来编译的,其他版本的编译器会稍微有所不同。
建立项目
- A.首先要将整个项目导入到VS中,打开VS,选择 文件->新建->从现有代码导入项目
- B.弹出窗口,选择visual c++,点击下一步
- C.然后项目文件位置就是edk2-master,名称为NT32,文件类型加入EDKII的.fdf;.dsc;.dec;.inf;*.uni,选择下一步
- D.选择使用外部生成系统,点击下一步
- E.接下来一步很关键,需要在edk2-master文件下建立VSbuild.bat 里面写入
call edksetup.bat --nt32 build %1
- F.然后写入以下配置
- G.点击完成之后,需要等待一段时间,让文件全部加入,VS开始添加文件,需要一定时间。等待文件全部添加完毕,我们要为VS环境做些小改动:在v:\edk2-master\nt32pkg\include\common\WinNTInclude.h
加入这样一行:
#pragma warning(disable : 4005)
这是为了消除VS环境下build的重复定义错误。用VS Command Prompt则不需要这一步。
编译项目
编译项目之前需要修改edk2-master的conf文件夹下面的target.txt,找到TOOL_CHAIN_TAG 修改为 VS2015x86,原来的默认值MYTOOLS是针对VS2008的,接下来,你就可以编译你的项目了,按下build,等待很长的时间,就编译好了,找到edk2-master\Build\NT32IA32\DEBUG_MYTOOLS\IA32\ SecMain.exe,打开,NT32的虚拟环境搭好了.