一、概述:

0.为什么会有这篇文章

  说实在的,在2016初的时候,我就萌生了写一个操作系统的念头,但是这对于我一个菜鸟来说,犹如登天。

  既然想了就去写,即使最后做不完,也不后悔。

  抱着这样的念头,我开始查阅各种写操作系统的书,最后我得出的结论就是,先试着写一个BootLoader,就这样作为BIOS的继任者,UEFI进入了我的研究范围。

  为什么选择UEFI呢,主要有两个方面的考虑:

    一个是UEFI的功能极其强大

    另一个是这是项新技术,掌握了它,或许会为以后的工作等机会提供一定的帮助吧!

1.图书简介:

书的样子如下:

  有兴趣的话你也可以读一下,有钱就买,没钱就图书馆借,再不济就网上搜PDF格式的自行下载。

2.BIOS与UEFI的区别

  当你读到这里的时候我无法得知你是否熟悉对于装系统的一些流程和问题较为了解,但是在这个地方多说一些是很有好处的。

  自windows8以后,你如果使用原版的微软镜像进行装机且你的机子自身支持EFI的话,默认会以UEFI的方式进行装机,这样子很容易出问题,

前提是这样,原来的机子中装有老版的windows系统且主板默认打开了EFI的功能,你调整了开机启动项为安装介质(光盘、优盘之类的),机子开启,这时电脑读取的是介质中的bootmgr.efi,如下图

  你在不知情的情况下,选择继续,安装程序可能会提示你,你想安装的分区不是GPT格式?无法继续...

发生这种情况的主要原因是,原来的电脑使用的是BIOS+MBR的安装方式,而你却使用了UEFI+GPT的安装方式,最简单的方式就是关掉UEFI功能让电脑默认加载bootmgr,而不是bootmgr.efi,关于bios如何设置这种问题,就不在这里赘述了,自行百度脑补之!

从这里我们引申出了两个组合:

BIOS+MBR

UEFI+GPT
对,你可以认为他们是配套存在的,前者传统一些,后者更为先进。

这里的先进自然是有其优点喽,抄书时刻到了O(∩_∩)O哈哈~

1.开发效率高

2.可扩展性高

3.性能更强大

4.安全性更高

5.更适应64位平台

想找更多的优点就可以找书了,或者问度娘,比我说的详细。

附一张书上的图,作为UEFI的启动过程的了解:

  UEFI定义了操作系统和平台固件之间的接口。UEFI接口可分为以下两个部分:

  1)启动服务:主要包括事件服务、内存管理、protocol管理、protocol使用类服务、驱动管理、Image管理以及ExitBootServices服务。

  2)运行时服务:时间服务、读写UEFI系统变量的服务、虚拟内存服务、重启系统的服务。

关于UEFI的概述就说这么多,太多的话不容易记住,也不助于理解。

二、环境的搭建

  我使用的是windows10的企业版和vs2013,除此之外,还需要以下软件SDK、EDK2(UDK2015)、IASL编译器

推荐的步骤如下:

1.下载解压配置EDK2:

下载页面:https://sourceforge.net/projects/edk2/files/UDK2015_Releases/UDK2015/

下载地址:https://sourceforge.net/projects/edk2/files/UDK2015_Releases/UDK2015/UDK2015.Complete.MyWorkSpace.zip/download

下载完成后,内部结构如下:

图中,BaseTools(Windows).zip和UDK2015.MyWorkSpace.zip是我们将会用到的,解压的顺序如下:

在C盘中的根目录下创建文件夹:EDK2

将这两个压缩包中的文件依次解压至EDK2

EDK2目录下的edksetup.bat,此时会在该目录中的Conf中生成配置文件

在target.txt中,修改TOOL_CHAIN_TAG这一行为这样:

TOOL_CHAIN_TAG        = VS2013

然后打开tools_def.txt,找到如下关于SDK的信息:

# Microsoft Visual Studio 2013 Professional Edition
DEFINE WINSDK8_BIN = c:\Program Files\Windows Kits\8.0\bin\x86\
DEFINE WINSDK8x86_BIN = c:\Program Files (x86)\Windows Kits\8.0\bin\x64

从这里可以看到,我们应该下载并安装sdk8.0

但是微软官网给出如下描述:

The Windows Software Development Kit (SDK) contains headers, libraries, and tools you can use when you create apps that run on Windows operating systems. With the Windows SDK, you can begin building Universal Windows apps and desktop apps for Windows 10, Version 1511. This SDK also supports building Windows apps and desktop applications for Windows 8.1, Windows 8, Windows 7, Windows Vista, Windows Server 2012, Windows Server 2008 R2, and Windows Server 2008.

从这里我们知道下载win10的sdk即可。

2.安装windows的SDK

下载地址:https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk

安装完成后,我继续下一步

3.安装iasl编译器:

官网:https://www.acpica.org/downloads

打开右侧某一日期:

拉到页面的最底部,我们可以找到编译器的下载链接

下载地址:https://acpica.org/sites/acpica/files/iasl-win-20160422.zip

之后,将里面的工具解压至C:/ASL(新建一个文件夹)即可。

4.继续回到EDK的设置中来:

在Conf文件夹中找到tools_def.txt,然后修改如下项目:

DEFINE VS2013_BIN = D:\soft\Microsoft Visual Studio 12.0\Vc\bin
DEFINE VS2013_DLL = D:\soft\Microsoft Visual Studio 12.0\Common7\IDE;DEF(VS2012_BIN)
DEFINE VS2013_BINX64 = DEF(VS2013_BIN)\x86_amd64

DEFINE VS2013x86_BIN = D:\soft\Microsoft Visual Studio 12.0\Vc\bin
DEFINE VS2013x86_DLL = D:\soft\Microsoft Visual Studio 12.0\Common7\IDE;DEF(VS2013x86_BIN)
DEFINE VS2013x86_BINX64 = DEF(VS2013x86_BIN)\x86_amd64

DEFINE WIN_ASL_BIN_DIR         = C:\ASL

当然我vs2013安装在了D盘,iasl放在了C盘,所以会有上图,改完路径后保存。

5.编译UEFI模拟器和工程

在开始菜单中找到VS2013的文件夹,打开其中的“VS2013开发人员提示”

切换到EDK2目录下:

如果编译NT32pkg则

执行:

edksetup.bat --nt32

build

如果编译nt32pkg工程则

执行

edksetup.bat

build 加上需要的参数

至此,环境就配好了!

6.运行模拟器:

使用命令build run

来张截图:

【读书笔记】UEFI原理与编程(1)概述及开发环境的搭建的更多相关文章

  1. 《Essential C++》读书笔记 之 基于对象编程风格

    <Essential C++>读书笔记 之 基于对象编程风格 2014-07-13 4.1 如何实现一个class 4.2 什么是Constructors(构造函数)和Destructor ...

  2. 【读书笔记《Android游戏编程之从零开始》】1.Android 平台简介与环境搭建

    简单的记录下笔记,具体可百度! Android SDK (Software Development Kit)- Android 软件开发工具包,用于辅助Android 操作系统软件开发,是开发Andr ...

  3. 一、Java语言概述与开发环境、第一个java程序

    目录: 1.1 Java特点 1.2 Java程序运行机制 1.3 安装JDl和配置环境变量 1.4 第一个JAVA程序 1.5 第一个JAVA程序的含义 前言 Java语言历时近二十年,已发展成为人 ...

  4. 《编写可维护的javascript》读书笔记(中)——编程实践

    上篇读书笔记系列之:<编写可维护的javascript>读书笔记(上) 上篇说的是编程风格,记录的都是最重要的点,不讲废话,写的比较简洁,而本篇将加入一些实例,因为那样比较容易说明问题. ...

  5. 【读书笔记《Android游戏编程之从零开始》】2.Hello,World!

    本人看的是PDF文档,很多都是直接都是复制粘贴的记录,简单的记录下笔记! 2.1 创建一个Android项目 Application Name: 应用名称(安装在手机上显示的名字)Project Na ...

  6. OpenCV学习笔记(一)——OpenCV3.1.0+VS2015开发环境配置

    摘要: 由于最近AR(增强现实)这个概念非常火爆,各种基于AR的应用及游戏逐渐面向大众,而在AR中最重要的两个技术就是跟踪识别和增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实现的, ...

  7. 如何成为游戏的生产者——第二章:如何开始你的编程(开发环境的搭建、C++语言适应)

    如何成为游戏的生产者--文章二章:怎样開始你的编程 小故事:上节说到我六年级打开了那本C语言的书,然后其实我还是没看懂.好像看懂了一些printf语句.之后遇到了史无前例的困难--怎么让代码执行起来. ...

  8. 开始JAVA编程的敲门砖——JAVA开发环境搭建

    从头开始的java编程--JAVA开发环境搭建 一.什么是java的开发环境? 顾名思义java的开发环境是提供并保证整个java程序开发运行的必要的环境,搭建java开发环境是开始java编程的敲门 ...

  9. 1、Java语言概述与开发环境——Java程序运行机制

    Java语言是一种特殊的高级语言,它既有解释型语言的特性,也具有编译型语言的特征,因为Java要经过先编译后解释两个步骤. 一.高级语言的运行机制 计算机高级语言按程序的执行方式可以分为编译型和解释型 ...

随机推荐

  1. 三维重建5:场景中语义分析/语义SLAM/DCNN-大尺度SLAM

    前言: 在实时/非实时大规模三维场景重建中,引入了语义SLAM这个概念,参考三维重建:SLAM的尺度和方法论问题和三维重建:SLAM的粒度和工程化问题 .大规模三维场景重建的尺度增大,因此相对于整个重 ...

  2. react基础篇六

    创建 Refs 使用 React.createRef() 创建 refs,通过 ref 属性来获得 React 元素.当构造组件时,refs 通常被赋值给实例的一个属性,这样你可以在组件中任意一处使用 ...

  3. (转)基于MVC4+EasyUI的Web开发框架经验总结(14)--自动生成图标样式文件和图标的选择操作

    http://www.cnblogs.com/wuhuacong/p/4093778.html 在很多Web系统中,一般都可能提供一些图标的选择,方便配置按钮,菜单等界面元素的图标,从而是Web系统界 ...

  4. matlab学习下拉菜单

    用matlab添加listbox控件 修改string和value值,value为几就对应第几行字符串 添加button按钮,将string值改为“选择x轴参数”,字体大小为10 再添加一个按钮,将s ...

  5. 【ubuntu子系统】使用windows自带的ubuntu子系统

      在windows10系统中,自带了一款ubuntu子系统,就像是一个应用程序,一款软件,提供ubutnu的terminal窗口,可以使用对应的命令行模式.最重要的是,可以直接用来连接linux服务 ...

  6. 爬虫框架Scrapy初步使用

    本文转载自: Scrapy 爬取并分析酷安 6000 款 App,找到良心佳软(抓取篇) https://www.makcyun.top/web_scraping_withpython10.html ...

  7. 继续聊WPF——Expander控件(1)

    这个控件最实用的地方,就是做导航栏. <StackPanel Margin="20,20" Width="100" Height="460&qu ...

  8. 9.在idea中创建Maven项目

    1.新建maven WEB项目 打开-File-New-Project 点击NEXT 2.选择项目组,并给项目命名 3.选择maven路径 添加的配置为 archetypeCatalog=intern ...

  9. Solr数据不同步

    Solr配置了集群,本地有253和254,2个独立的Solr服务.  同一个页面的图片,刷新2次,图片地址不一样,最后查明,后台数据源Solr1和Solr2的数据不一致.    第1步推测:本地缓存, ...

  10. lca学习题

    http://www.cnblogs.com/scau20110726/archive/2013/06/14/3135095.html