我已经研究过这个问题,但一直无法找到明确的答案……甚至是一个明确的问题。所以我会用一个简单的例子。
我的电脑有**两个硬盘:**
GRUB2 仅引导至 Ubuntu(在我的示例中,在第一个硬盘上)。
发行update-grub
也检测不到第二硬盘上的操作系统,但我知道有一个。
如果我在启动时进入BIOS并将启动顺序更改为 Hard Disk 2,则第二个操作系统启动 OK。
如何向 GRUB2 添加引导至第二个硬盘的条目?
(事实是:我认为这个问题可以不指定哪个是第二个硬盘中的操作系统。还是不是?)
os-prober
使用此配置添加示例机器的请求输出:
luis@threepwood:~$ sudo os-prober
/dev/sdb1:Windows 7 (loader):Windows:chain
/dev/sdb7:Ubuntu 14.04.3 LTS (14.04):Ubuntu:linux
Run Code Online (Sandbox Code Playgroud)
在这个特定示例中(我在 BIOS 中更改了引导顺序)案例:
sdb
是 HDD-1。sda
是 HDD-2。小智 9
我通常grub.cfg
手动编写,从不使用,update-grub
并且有一个所谓的主 Grub2 引导加载程序,我可以在其中选择从哪里启动,然后我让每个 Linux 发行版在自己的根分区上安装自己的引导加载程序,这样 Linux 就可以编辑自己的引导加载程序而无需接触我的主 grub2 引导加载程序。
为了跳转到其他磁盘 MBR,我为普通操作系统设置了此类条目grub.cfg
,不需要将磁盘视为第一个磁盘:
menuentry "Boot from second disk" {
chainloader (hd1)+1
}
menuentry "Boot from third disk" {
chainloader (hd2)+1
}
menuentry "Boot from fourth disk" {
chainloader (hd3)+1
}
Run Code Online (Sandbox Code Playgroud)
所以它只是将 MBR 加载到我想要的另一个磁盘上。
但对于一些棘手的 Linux(以及一些 Windows),希望看到另一个磁盘就像第一个磁盘一样,我还向 grub 菜单项添加了一些命令,所以它看起来像这样:
menuentry "Boot from second disk and see it as first disk" {
set root=(hd1)
drivemap -s hd0 hd1
chainloader +1
}
menuentry "Boot from third disk and see it as first disk" {
set root=(hd2)
drivemap -s hd0 hd2
chainloader +1
}
menuentry "Boot from fourth disk and see it as first disk" {
set root=(hd3)
drivemap -s hd0 hd3
chainloader +1
}
Run Code Online (Sandbox Code Playgroud)
全部详细解释:
(hd#)代表磁盘,其中#从零开始
drivemap 进行驱动器交换,因此任何磁盘都可以被视为第一个磁盘,或者您想要的任何数字(它交换所看到的两个磁盘上的顺序)
chainloader (hd#)+1 跳转到磁盘的MBR
chainloader +1 跳转到存储在(根)上的第一个扇区
set root=... 设置(root)拥有什么。
(root)就像一个变量,可以用来少输入
有关grub.cfg
文件的完整文档,您可以查看官方网页:
https://www.gnu.org/software/grub/manual/grub/grub.html
我认为您应该在 grub 配置中为第二个 hdd 添加一个条目。
\n\n\xe2\x80\x99 是哪个操作系统并不重要。
\n\n我在 Windows HDD 上使用带有 grub2 的双本书。它可以检测 Windows 和 Linux,并为我提供一个菜单来选择要启动的操作系统。
\n\n如需高级配置、链式加载以及向 grub 添加手动条目,请点击以下链接:
\n\nhttps://help.ubuntu.com/community/Grub2/CustomMenus
\n 归档时间: |
|
查看次数: |
70488 次 |
最近记录: |