IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> EDK2编译环境搭建、编译、在模拟器运行、在笔记本运行 -> 正文阅读

[系统运维]EDK2编译环境搭建、编译、在模拟器运行、在笔记本运行

自己对写操作系统这个事情比较感兴趣,但是这条路太漫长,只能慢慢来,原来是基于传统的汇编+C语言编写,现在UEFI基本很普及了,因为想着使用国外的操作系统始终存在安全隐患,所以想好好学习一把,由于是初学者,有很多不对的地方,请看到这篇博客的大侠们指出不足之处。

1、操作系统Ubuntu20.10装在VMWARE 14pro下的版本:14.1.3 build-9474260,,注:我未修改/etc/apt/sources.list文件,直接使用的国外下载源,感觉速度也还可以,我切换到阿里源,进行安装软件的时候,发现会存在各种依赖软件版本不配套问题,所以未修改此文件(估计是修改的源不正确导致吧),这是虚拟机的版本和Ubuntu虚拟机内存配置,自己的电脑比较老【捂脸】。

2、edk代码:基于edk2-stable202105稳定tag点创建的https://gitee.com/dream-os/edk22edk2-stable202105-base分支,git地址:https://gitee.com/dream-os/edk22/tree/edk2-stable202105-base/,另外,需要注意edk和工具的版本关系,如果版本不配套,会在编译的时候存在函数的符号找不到问题;

3、edk2\BaseTools\Source\C\BrotliCompress这个工具是需要拷贝的可以从这边下载,https://gitee.com/dream-os/brotli11?_sasdk=fE%3D%3DECCD;这里边实际上给出了EDK2工具下载的地址和git的合入hash值

?其他工具也是类似这样下载,不过由于有些外网的源码下载很慢,好些前辈直接fork到gitee了,对于这种工具性的代码,我认为只要不影响编译,感觉问题就不大。

4、相关编译器以及依赖的库安装:

sudo apt install nasm
sudo apt install iasl

sudo apt install uuid-dev
sudo apt install build-essential
sudo apt install make
sudo apt install git
sudo apt-get install build-essential uuid-dev iasl git gcc-5 nasm make

apt-get install python

apt-get install python-distutils

apt-get install gcc-5 g++-5

装依赖的库的时候,一般是编译不通过会报缺头文件、等等,一般是百度下,再安装库、再编译。

5、接下来是编译,说句题外话,我们编译生成的efi或者其他文件一般在Build目录:比如IA32、X86格式的目录,如下图中蓝色字体所示,rm -rf Build/*这个命令是把原来我编译的生成文件全删除,准备重新编译:

另外(这个命令是编译32位efi文件的,32位的efi文件在64位的环境运行会报错的,运行不了),这个命令大概编译几分钟左右吧,具体示自己电脑的硬件而定:

?这是编译的日志(有点多,这边上传不方便,我另外找个地方),另外注意下:编译的时候,有些编译错误不影响efi文件的运行,一般编译完成显示成这个样子表示没啥问题:

6、编译完成后,我们在模拟器里边运行下,就是在编译的命令后边加个空格run

?注意在这个起动画面的时候,是可以按回车的,可以多按几次,直到出现Shell>这个,表示可以执行efi文件了

?在模拟器运行的命令,这边需要输完整的文件名称,UiApp.efi是一个edk2自带的app,在这个目录(这是在Windows下拷贝的,Linux下使用注意下斜杠的方向):edk22\MdeModulePkg\Application\UiApp\:

运行的结果如下,UiApp自带的运行不是这样的,我把这个代码修改了下,参考的https://blog.csdn.net/luobing4365/article/details/100536218?spm=1001.2014.3001.5502https://ay123.net/mystudy/761/

当前在模拟器里边已经运行OK了。

7、刚才我们在模拟器里运行是OK的,但是自己的笔记本是64位的,需要编译一个64位的版本:

编译完成后,我们去把编译生成的efi文件拷贝到U盘

实际上,这一轮编译下来,会生成很多的efi文件,其实我是把X64 这个目录拷贝到U盘了:?

8、接下来,我们需要在自己的笔记本上也运行下,首先,我们需要下载一个efi shell这个网址:http://www.opdown.com/soft/118852.html,下载下来解压后这个文件对我们有用:

9、在U盘(U盘需要是FAT32格式的)的根目录下新建EFI\Boot目录,把第8步下载解压的上图红色方框中Shell.efi复制到此目录,并改名为bootx64.efi,目录结构如下,注意名称和目录结构尽量保持一致:

接下来把第七步编译的64位的efi复制到U盘,这个基本没有目录限制,我直接把X64放在U盘根目录了,目录如下图所示,这个目录大概需要记住,因为重启电脑通过U盘起后到UEFI Shell后,需要找到 efi文件后执行的:

10、在BIOS里实际上需要设置下U盘起动和安全选项,请参考:https://www.xuexila.com/diannao/xitong/bios/3040148.html

https://jingyan.baidu.com/article/f79b7cb37bff229145023e48.html

自己电脑配置显示:

?自己电脑配置显示:

11、起动后,需要按F12,有的说需要按F10(我有点怀疑不同品牌的电脑可能不太一样,我的电脑是HP的),然后选择从U盘起动系统,会进入下边这个页面:

这里边fs0,fs1其实我还没太整的太明白,感觉上是U盘的目录映向射,我自己的U盘,原来做的启动盘实际上有两个分区的到这一步,表示执行U盘的Shell.efi没有问题了?。

12、然后开始找我们写的代码并编译成64位的UiApp.efi文件,然后在fs1:\X64找到了,注意切换前面这个fs1或fs0命令行是fs0:回车(0后边有个冒号):

?上图中敲完UiApp.efi后回车,就会运行成下图效果:

这是找到bootx64.efi文件,带我们进入UEFI Shell的兄弟:?

到此为止,基本上把UEFI的edk2代码从环境搭建、32位和64位代码编译、在模拟器运行、在PC机上运行基本上过了一遍,可能还有很多有问题的地方,希望对一些感兴趣的帅锅有一些帮助。另外,在此感谢一些前辈的各种帮助,如:QQ、微信等等。

顺带说下,在Ubuntu下开发,我使用的IDE是SourceInsight3.5(使用SourceInsight需要先安装wine)很老的版本了,看代码非常方便。?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-11 16:57:23  更:2021-07-11 16:58:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 0:32:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码