- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
与当前运行的操作系统(HDD1,分区 1)相比,是否有可能通过 C/Assembler 低级系统调用启动另一个操作系统的引导加载程序(比方说 HDD2,分区 1) ,从而绕过 BIOS?
即如果 Windows 当前正在运行,我们是否可以直接要求系统在 HDD2 分区 1 上启动另一个内核(假设是 Linux),而无需通过 BIOS 进行完全重启?
或者这是 C/汇编程序无法做到的?
如果是这样,是什么阻止我们将 HDD2、分区 1、偏移量 0 和以下兆字节加载到内存中,并从那里运行代码? (即终止当前运行的操作系统并启动另一个操作系统)
最佳答案
Or is this out of reach of what C / Assembler can do?
不,他们可以做到这一点,但正是操作系统所做的,实际上,这使得这很难做到。
警告:以下是对发生的事情的粗略描述......
BIOS 会进行一定数量的初始化。它探测设备等,并在 ACPI
界面中显示它发现的内容。
给定操作系统的给定引导加载程序(即引导 block )将从 BIOS 获得控制权。它预计处于 8086/实模式。 (即关闭分页)并加载到给定的实模式地址。
引导加载程序将自行重新定位。它将使用 BIOS 调用从磁盘/分区读取操作系统内核。
然后它将控制转移到操作系统启动代码。
操作系统希望能够使用 ACPI 信息。此外,操作系统可能希望以实模式运行(或它的引导加载程序设置的任何模式)。
第一个操作系统现在将对硬件进行大量初始化。
为了能够为链加载/第二个操作系统提供它期望的环境,当关闭时,第一个操作系统必须将状态恢复到类似于 BIOS 提供的状态。
第一个操作系统执行的一些设备初始化可能会混淆第二个操作系统。因此,它必须非常干净地关闭/重置为硬件的已知状态。例如,禁用分页/MMU,返回到 8086 实模式,将第二个操作系统的引导 block 放在已知/预期的实模式地址并将控制权转移给它。
并非所有 [或许多] 操作系统都设置为执行此操作,因为它并不常见。有些会在初始化期间使用 BIOS [如我所说(例如)ACPI
]。但是,某些操作系统最终会放弃 BIOS。
他们必须确保 BIOS 可以 [再次] 运行,因为第二个操作系统的引导加载程序将使用 BIOS 调用从磁盘加载操作系统代码。
这是可能的。而且,IIRC,一些操作系统能够做到这一点。但是,我不确定 WinX 在这一点上是否合作。
如果系统是 UEFI 系统 [vs.常年的 BIOS]。如果使用安全启动,操作系统启动加载程序包含在一个特殊分区内的 [数字签名] 文件中,该分区具有简单(例如 FAT
)文件系统。
关于c - 绕过 BIOS 低级别启动当前操作系统以外的另一个操作系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62505467/
我已经坚持了好几天了……很抱歉遇到这样的问题,但是我只是F#本身的初学者。由于关于类型提供程序的讨论很多,所以我决定建立一个类型提供程序并撰写一篇有关它的论文。当我开始时,我不知道什么是类型提供程序。
我正在开发LAN项目唤醒功能,但是我想控制局域网中计算机是否打开。但是我不想使用ICMP或WMI(我的网络上有DC)。那么,对于此问题,是否还有其他选择,例如“套接字连接”,请检查特定端口是否正在使用
我们有一个旧的VB6应用程序,该应用程序使用Crystal Reports XI生成打印报告。我们已经通过经验发现,如果Crystal Reports打印引擎选择了错误版本的 usp10.dll (W
我正在尝试获取有效的 Android 权限列表。我知道 http://developer.android.com/reference/android/Manifest.permission.html
嗨,我是 nginx 的新手,我试图在我的服务器(运行 Ubuntu 4)上设置它,它已经运行了 apache。 所以在我 apt-get install 它之后,我尝试启动 nginx。然后我收到这
如何在VB 6中检查对象的类型-除了'TypeName'之外,是否还有其他方法,因为无法通过'TypeName'进行检查,我希望使用类似QuichWatch窗口的方法。 最佳答案 对于对象变量,请使用
我的 JSP 应用程序中有一个错误。发布后我的 session 被清除: YAHOO.util.Connect.asyncRequest('POST', Url, callback, post
我是一名优秀的程序员,十分优秀!