GRUB 安装在两个设备上,如何选择一个进行启动?

GRUB 安装在两个设备上,如何选择一个进行启动?

如果这是重复的,非常抱歉,我读过的大多数帖子都推荐以下变体:

sudo grub-install /dev/sdX
sudo update-grub

思考这不是我的问题。


我有一个主硬盘,上面/dev/sda安装了 Ubuntu 和 Windows 一段时间。我最近插入了一个 SSD /dev/sdb,并在其中一个分区上安装了 Ubuntu。两台设备上均安装了 GRUB,从摘要中可以看出启动信息脚本(没关系/dev/sdc,这是一个外部驱动器):

                  Boot Info Script 0.61      [1 April 2012]


============================= Boot Info Summary: ===============================

 => Grub2 (v1.99) is installed in the MBR of /dev/sda and looks at sector 1 of 
    the same hard drive for core.img. core.img is at this location and looks 
    in partition 97 for .
 => Grub2 (v1.99) is installed in the MBR of /dev/sdb and looks at sector 
    92576960 of the same hard drive for core.img. core.img is at this location 
    and looks in partition 97 for .
 => Windows is installed in the MBR of /dev/sdc.

我想选择/dev/sdb作为默认启动设备(即,当计算机启动时,使用 GRUB/dev/sdb而不是当前/dev/sda),是否有可能做到这一点?


有关分区的更多信息如下。我的主要 HDD 是dos磁盘类型,而我用 格式化了我的 SSD gpt

Drive: sda _____________________________________________________________________
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos

Partition  Boot  Start Sector    End Sector  # of Sectors  Id System

/dev/sda1    *          2,048    12,290,047    12,288,000  27 Hidden NTFS (Recovery Environment)
/dev/sda2          12,290,048   524,290,047   512,000,000   7 NTFS / exFAT / HPFS
/dev/sda3       1,543,925,760 1,953,523,711   409,597,952   5 Extended
/dev/sda5       1,666,809,856 1,789,689,855   122,880,000  83 Linux
...

Drive: sdb _____________________________________________________________________
Disk /dev/sdb: 978.1 GiB, 1050214588416 bytes, 2051200368 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt

Partition  Boot  Start Sector    End Sector  # of Sectors  Id System

/dev/sdb1                   1 2,051,200,367 2,051,200,367  ee GPT


GUID Partition Table detected.

Partition    Start Sector    End Sector  # of Sectors System
/dev/sdb1           2,048   270,338,047   270,336,000 Data partition (Linux)
/dev/sdb2     270,338,048   540,674,047   270,336,000 Data partition (Linux)
...

答案1

如何执行此操作与系统密切相关。您必须进入固件设置实用程序(通常在打开计算机后立即按下 Del、F2 或其他系统特定键)并找到更改默认启动设备的选项。该选项的位置和名称因计算机而异;它没有标准化。如果您需要帮助,您应该查阅手册,致电计算机(或主板)制造商,或在制造商特定的论坛上发帖。您可能还想详细说明为什么要更改启动磁盘。通常,如果您从 GUID 分区表 (GPT) 磁盘启动,就像您的一样/dev/sdb,在 BIOS/CSM/传统模式下,该磁盘必须具有BIOS 启动分区,而这正是你/dev/sdb缺乏的。因此,我不清楚更换启动盘是否有用,甚至可能产生新的问题。了解你为什么要更换启动盘将有助于我们为你提供有用的建议,而不是让你陷入更深的困境的建议。

话虽如此,我建议您先退一步,因为还有一个更大的问题:您是在 BIOS/CSM/传统模式还是 EFI/UEFI 模式下启动?您发布的输出表明您很可能是在 BIOS 模式下启动的,但这种启动模式每天都在变得越来越不常见。绝大多数预装 Windows 8 及更高版本的计算机默认以 EFI 模式启动,尽管大多数计算机可以重新配置为以 BIOS 模式启动。我认为您大概在 BIOS 模式下启动时,你的/dev/sda磁盘是 MBR 磁盘,没有任何EFI 系统分区 (ESP),虽然你的第二个磁盘使用 GPT,但它也没有 ESP。(BIOS 模式启动是通常从 MBR 磁盘完成,并且 EFI 模式启动是通常从 GPT 磁盘完成。)请注意,每个磁盘第一个扇区中 BIOS 模式引导加载程序的存在并不是真正的诊断;如果重新安装了操作系统或引导加载程序,或者将磁盘从 BIOS 启动计算机移动到 EFI 启动计算机,就会发生这种情况。

如果计算机以 EFI 模式启动,它实际上并不像基于 BIOS 的计算机那样从磁盘启动。在 EFI 模式下,指向引导加载程序的指针文件存储在 NVRAM 中。这些文件可以以类似于基于 BIOS 的计算机识别其启动盘的方式指定。一个磁盘上可以有十几个启动加载器文件,而另一个磁盘上没有;或者每个磁盘有几个;或者每个磁盘一个;或者任何其他组合。如果您考虑识别“启动盘”,您可能会感到困惑。

有关此问题的更多信息,请参阅我的关于确定启动模式的页面。正如我所说,您的计算机很可能是在 BIOS 模式下启动的。我之所以反复强调这一点,是因为许多人跳过了这个问题,并因此而导致问题。Sheljohn,我试图阻止这种情况发生在其他人身上,因为他们可能比您更频繁地阅读这个问题。

最后一点是,如果您的计算机是基于 EFI 的,但以 BIOS/CSM/传统模式启动,则应该可以将其转换为以 EFI 模式启动。这样做的麻烦可能大于回报,特别是如果这是一台双启动计算机(看起来是这样);但是,由于您要更改启动磁盘,因此可以想象,通过更改启动模式可以更好地完成您想要做的事情。

相关内容