热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

在纯UEFI中启动时,谁启用A20线路?

如何解决《在纯UEFI中启动时,谁启用A20线路?》经验,为你挑选了1个好方法。

这是由UEFI固件还是由GRUB grubx64.efi引导加载程序处理?

我看着https://wiki.osdev.org/UEFI声称:

UEFI固件...还准备了具有平面分段的保护模式环境,并为x86-64 CPU准备了具有身份映射分页的长模式环境。A20门也被启用。

但找不到任何官方资源来备份此信息。UEFI规范没有提及这一点。

linux内核提供了一个efi-stub,可以用作引导加载程序,但是在检查了其源之后,我看不到它是否启用了A20。因此,我仍然不知道它是UEFI固件的工作还是Bootloader的工作。

(我想为UEFI编写自己的引导程序,并想了解UEFI固件提供了“开箱即用”的设置以及我必须实现的部分)



1> Michael Petc..:

UEFI固件会启用A20(如果尚未启用),使用平面描述符设置GDT,进入保护模式等。在64位CPUS上,它还会进入long模式,这涉及启用身份映射分页。为了使UEFI能够按预期运行,需要启用A20以正确访问所有物理内存。

在一些更现代的处理器上,A20会在开机时启用,甚至可能无法关闭。英特尔已开始摆脱遗留的要求,包括放弃对286之前的支持环境。出现了可以切换的A20门,因此286(及更高版本的处理器)将保持与较旧的8086/80186(或等效处理器)的兼容性。无法更改A20状态以及丢弃旧版BIOS就是朝这个方向迈进的一步。

UEFI引导加载程序代码开始运行后,可以确保在此时启用A20。从启用它的角度来看,A20只是您自己不关心的事情。

尽管UEFI规范中未特别提及A20 ,但似乎暗示了:

2.3.2.1切换状态 加载32位UEFI OS时,系统固件将控制权以平面32位模式移交给OS 。所有描述符都设置为其4GiB限制,以便可以从所有段访问所有内存

禁用A20后,并非所有段都可以访问所有内存,因此我推断必须默认在处理器或UEFI固件中启用A20。


@ user10607:尽管规范没有特别提到A20,但我相信我在更新后的答案中引用的那部分暗示必须启用A20,否则并非所有段都可以访问所有内存。
推荐阅读
  • Linuxchmod目录权限命令图文详解在Linux文件系统模型中,每个文件都有一组9个权限位用来控制谁能够读写和执行该文件的内容。对于目录来说,执行位的作用是控制能否进入或者通过 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了如何找到并终止在8080端口上运行的进程的方法,通过使用终端命令lsof -i :8080可以获取在该端口上运行的所有进程的输出,并使用kill命令终止指定进程的运行。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
author-avatar
为什么要这2502928433
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有