UEFI BIOS OS Loader -- Q&A

UEFI BIOS的出现绝对不是仅仅为了执行CSM --- 否则要UEFI干什么。有必要先澄清一个概念:什么是UEFI-aware OS?

 

UEFI-aware OS是指完全基于UEFI开发的操作系统,完全不需要legacy bios参与。操作系统使用UEFI提供的调用,彻底抛弃传统的interrupt方式的实模式调用,并且将自己的操作系统加载程序实现为UEFI应用程序的形式。

 

如此一个操作系统就可以被称作UEFI-aware OS了。这样的OS Loader可以利用UEFI系统的提供的诸多功能。实现更为强大的操作系统加载程序。

 

操作系统加载程序是什么?传统环境下就是MBR代码,这些代码一般都很短,理论上不能超过512字节。基本上用汇编写。而且要求必须小精简。不过这些限制在UEFI下统统remove。

 

---------------------------------------------------------------------------------------------------------------------

 

下面是一个假象的来自传统MBR代码的作者对于UEFI下的类似的组件 --- OS Loader的疑问与回答。

 

Q:MBR最多512字节,那么UEFI OS Loader呢?

A:没有限制。取决于你的实现。

 

Q:MBR要求存储在0磁道0扇区,那么UEFI OS Loader呢?

A:没有限制。由于UEFI内置FAT32文件系统,且规范要求必须存在GPT分区。那么只要存放在GPT分区上的/boot目录下即可。对于物理位置,由于双方概念不同,已经完全不适合再行比较了。(一个是物理概念,另一个是逻辑概念)。

 

Q:UEFI OS Loader都可以干什么?

A:Everything。特别的是可以调用UEFI的所有服务。包括磁盘服务,事件服务,Protocol服务等等。

 

Q:对于OS而言,获取内存是最重要的,我应该如何获取内存信息?

A:请忘记E820。使用gRT->GetMemoryMap调用。

 

Q:对于OS而言,也许我要从另一个分区上加载一些信息,可能是UEFI不支持文件系统,所以我要对C盘进行扇区级的访问,我应该用什么?

A:请使用EFI Disk I/O Protocol

 

Q:对于OS而言,我必须要切换到保护模式。

A:UEFI本身就是保护模式,所以无须切换。

 

Q:对于OS而言,我希望固件不需要的部分退出内存,不要占用我的内存空间。

A:请在启动操作系统,以及获取内存分配之前,先调用gBS->ExitBootServices。

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值