在双引导系统中,BIOS如何选择要运行的引导程序?


24

我有Windows和Ubuntu的双重启动。当我打开机器时,BIOS执行POST,然后启动引导程序。

我想了解BIOS如何选择要运行的引导程序。我想知道双引导计算机中BIOS和引导加载程序之间正在进行的过程。


Answers:


40

BIOS固件并没有真正选择引导程序。它从驱动器的扇区0加载代码并执行它。无论在那里,它将执行。希望它是一个引导加载程序(或加载引导加载程序的东西),但不一定必须如此。在早期的PC时代,您在软盘上玩游戏,这些游戏可以在没有操作系统的情况下直接启动和运行-这些现在称为“启动程序”。

UEFI固件实际上了解分区和文件系统,并扫描驱动器以查找UEFI系统分区类型。由于这是一个文件系统,因此可以在此处放置多个引导程序。UEFI固件应该提供菜单或其他方式供您选择使用哪个引导程序。

许多UEFI系统都在“传统模式”下启动-UEFI在该模式下加载“兼容性服务模块”(使它看起来像BIOS),并且实际上像BIOS一样工作。

GRUB是一种常见的开源引导加载程序,可以引导Linux或“链加载”(给予控制)Windows引导加载程序(通常是Windows分区的Boot文件夹中的winload.exe)。GRUB使您能够做出决定。GRUB可以读取配置文件并从中获取其默认选择。

如果您想获取大量详细资料,请阅读文章。


这是在Ubuntu上需要sudo或root用户将任何内容写入已卸载磁盘的原因之一。如果程序或恶意用户将恶意软件写入引导分区...
wizzwizz4

谢谢LawrenceC,您的解释使我的理解更加清楚。再次感谢
Prashant Singh

13

此图显示了控制如何从固件(BIOS或UEFI)传递到引导加载程序,以及如何从引导加载程序传递到Ubuntu中的操作系统。

在此处输入图片说明
          BIOS与UEFI

如果操作系统以不同的模式(BIOS和UEFI)安装,则无法同时启动Windows和Ubuntu。


将Ubuntu转换为UEFI模式

  1. 启动引导修复,然后选择高级选项 -> GRUB位置选项卡。
  2. 如果没有看到单独的/ boot / efi分区选项,则表明您的PC没有任何UEFI分区。
  3. 如果看到一个单独的/ boot / efi分区选项,请在其左侧的复选框中打勾,然后单击 Apply(应用)按钮。

    将Ubuntu转换为UEFI模式

  4. 设置您的BIOS,使其在UEFI模式下引导硬盘驱动器。调整此设置的方式取决于计算机的特定型号,但通常此设置位于BIOS / UEFI设置实用程序的“ 启动”选项卡下的启动优先级设置中。


7

在传统模式(BIOS引导而不是UEFI)中,BIOS控制驱动器顺序。很久以前,这是由电缆控制的;但是更改BIOS设置比打开包装盒和更换电缆更重要。

BIOS将第一个磁盘(或由BIOS控制的驱动器顺序)的第一个扇区(称为MBR或主引导记录的512字节磁盘)加载到内存中,然后将(CPU)控制传递给此“引导加载程序”。这样,BIOS已完成其工作,并且第一个扇区中的代码运行。


对不起,先生,但我有点迷惑的BIOS把控制权交给引导加载器和Window和Linux有不同的引导装载程序,以便于哪一个启动程序把它给控制。什么过程BIOS经过选择的引导装载程序
PRASHANT辛格

2
您的系统每个磁盘只能有一个引导加载程序(并且只有一个处于活动状态)。通常,如果您的系统上有两个操作系统,则第二个安装的操作系统将拥有一个自举程序,因为该程序将自己的代码写入MBR。这就是GNU / Linux(Ubuntu)使用GRUB的原因;它是一个多步骤系统(步骤1是MBR,在/ boot中找到了步骤1.5和2),它会弹出菜单询问您要加载/运行的OS(grub知道的操作系统以及您所拥有的ISO信息)添加到它)。如果您有两个磁盘驱动器;您可以在每个驱动器上都有一个引导加载程序,但是BIOS将确定哪个将运行。
guiverc '17

因此,如果我的计算机中有2个操作系统,那么GRUB是否有必要放置菜单,询问我要加载哪个操作系统,为什么不将window的引导加载程序放在该菜单中,因为我的两个操作系统都在我的计算机中。
Prashant Singh's

Windows也有一个引导加载程序(无论如何也要保持远景);但是它不像grub那样聪明。windoze版本不搜索非msft产品(并且不能读取ext / reiserfs / xfs / zfs / btrfs / ...),因此您必须自己添加* nix;和下一个更新..... windoze版本不值得使用,因为grub更好。如果windoze位于一个驱动器上,而Ubuntu位于另一个驱动器上,则可以通过BIOS更改引导。但是g更快/更容易。(如果对我的回答感到满意,请接受以结束问题)
guiverc '17

3
@Prashant Singh:Windows引导加载程序不执行此操作(或当我对Windows不太了解时不执行此操作)的最根本原因是MicroSoft无法通过运行其他操作系统来赚钱。
jamesqf
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.