无忧启动论坛

标题: 请问下BIOS启动怎样启动另一个硬盘里面的grub2? [打印本页]

作者: liuzhaoyzz    时间: 2022-2-16 07:36
标题: 请问下BIOS启动怎样启动另一个硬盘里面的grub2?
本帖最后由 liuzhaoyzz 于 2022-2-16 07:48 编辑

有一个硬盘1已经安装好了CentOS,他的主引导是BIOS启动的grub2,菜单详见附件grub-menu.rar。

我现在想用另一个硬盘2的grub4dos/grub2作为主引导,怎么去引导硬盘1里面的grub2,进而引导硬盘1里面的CentOS?我没有找到类似core.img这样子的文件,所以不知道怎么加载core.img
title grub2-bios
find --ignore-floppies --ignore-cd --set-root /boot/grub2/core2.img
kernel /boot/grub2/core2.img


有没有chainloader (hd0)+1之类的方法,加载硬盘1的MBR之类的?硬盘1的MBR应该是grub2.boot.img





linux64 位-2022-02-16-07-41-57.png (48.72 KB, 下载次数: 262)

linux64 位-2022-02-16-07-41-57.png

linux64 位-2022-02-16-07-27-03.png (33.36 KB, 下载次数: 301)

linux64 位-2022-02-16-07-27-03.png

linux64 位-2022-02-16-07-27-46.png (51.05 KB, 下载次数: 285)

linux64 位-2022-02-16-07-27-46.png

linux64 位-2022-02-16-07-30-21.png (82.39 KB, 下载次数: 301)

linux64 位-2022-02-16-07-30-21.png

linux64 位-2022-02-16-07-30-27.png (77.48 KB, 下载次数: 266)

linux64 位-2022-02-16-07-30-27.png

linux64 位-2022-02-16-07-30-29.png (76.14 KB, 下载次数: 277)

linux64 位-2022-02-16-07-30-29.png

linux64 位-2022-02-16-07-26-57.png (74.44 KB, 下载次数: 265)

linux64 位-2022-02-16-07-26-57.png

grub-menu.rar

1.44 KB, 下载次数: 14, 下载积分: 无忧币 -2


作者: 窄口牛    时间: 2022-2-16 07:56
本帖最后由 窄口牛 于 2022-2-16 07:57 编辑

不需要加载mbr了,直接执行另一个的grub2菜单即可。写个g4d菜单,引导那个centos。
作者: wintoflash    时间: 2022-2-16 08:13

没太看明白你的截图。
图二应该是 grub-legacy。图三是 syslinux (extlinux)。
linux 系统安装 grub2 是把核心写在分区间隙里面的,没有实体文件。
有没有chainloader (hd0)+1之类的方法,加载硬盘1的MBR之类的?

chainloader +1
chainloader (hd0)+1
这些都是可以执行的。注意看清楚磁盘号。
作者: zws0110    时间: 2022-2-16 08:39
帮顶
作者: 窄口牛    时间: 2022-2-16 08:59
  1. chainloader +1
  2. chainloader (hd0)+1
复制代码

这就和nt5的菜单一样,只能固定启动媒体数目,插个优盘,加块硬盘就杀b了。十分不靠谱,尽量别这么写。
作者: liuzhaoyzz    时间: 2022-2-16 09:15
本帖最后由 liuzhaoyzz 于 2022-2-16 09:27 编辑
窄口牛 发表于 2022-2-16 07:56
不需要加载mbr了,直接执行另一个的grub2菜单即可。写个g4d菜单,引导那个centos。

系统自动生成的grub.cfg菜单,感觉有点复杂。
menuentry 'CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-1160.el7.x86_64-advanced-f8bcfd91-cda7-4dc3-ab83-9dedebcc029e' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod xfs
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1 --hint='hd0,msdos1'  9604622c-6438-472e-83cb-6ff06c55e673
        else
          search --no-floppy --fs-uuid --set=root 9604622c-6438-472e-83cb-6ff06c55e673
        fi
        linux16 /vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap nomodeset rhgb quiet LANG=zh_CN.UTF-8
        initrd16 /initramfs-3.10.0-1160.el7.x86_64.img
}

我想用硬盘2里面的grub4dos/grub2直接去引导硬盘1里面的grub2,我不想再研究菜单的具体内容了,因为具体内容已经是写好了的,也可以启动。
简而言之,我想用grub2引导grub2,或者用grub4dos引导grub2。
作者: liuzhaoyzz    时间: 2022-2-16 09:18
本帖最后由 liuzhaoyzz 于 2022-2-16 09:25 编辑
wintoflash 发表于 2022-2-16 08:13
没太看明白你的截图。
图二应该是 grub-legacy。图三是 syslinux (extlinux)。
linux 系统安装 grub2  ...

好像CentOS安装好之后,默认就是grub2引导,我这边是BIOS启动,所以应该是grub2-BIOS启动,好像不是grub-legacy.


chainloader +1
chainloader (hd0)+1
这样子的语句,似乎只对微软的引导体系ntldr/bootmgr有效吧?因为ntldr/bootmgr写入MBR的时候,只需要占用一个扇区,所以+1有效,那么grub2占用多少个启动扇区?我不清楚。我试了下上面的语句,似乎不行呀,可能盘号弄错了?晚点再试试。

作者: liuzhaoyzz    时间: 2022-2-16 09:20
本帖最后由 liuzhaoyzz 于 2022-2-16 09:23 编辑
窄口牛 发表于 2022-2-16 08:59
这就和nt5的菜单一样,只能固定启动媒体数目,插个优盘,加块硬盘就杀b了。十分不靠谱,尽量别这么写。

如果这个语句可行的话,先用find --set-root或者search -n -s -f语句,查找标志文件,确定root,然后chainloader +1应该可行,不会存在你说的问题。
作者: 窄口牛    时间: 2022-2-16 11:33
可以。configfile命令,去启动它的grub2菜单文件简单。
作者: liuzhaoyzz    时间: 2022-2-16 14:18
本帖最后由 liuzhaoyzz 于 2022-2-16 14:32 编辑
窄口牛 发表于 2022-2-16 11:33
可以。configfile命令,去启动它的grub2菜单文件简单。

configfile应该可以调用,的确是个解决办法,应该可行,晚点我试试看。适用于grub2启动grub2。

那么grub4dos又怎么调用grub2呢?前提是没有那个core.img文件。
问这个问题的主要原因,其实是我没有搞明白grub2引导的CentOS倒底是怎么实现的,boot.img+core.img都是写入了MBR了吗?

作者: wintoflash    时间: 2022-2-16 17:57
本帖最后由 wintoflash 于 2022-2-16 18:03 编辑
liuzhaoyzz 发表于 2022-2-16 09:18
好像CentOS安装好之后,默认就是grub2引导,我这边是BIOS启动,所以应该是grub2-BIOS启动,好像不是grub- ...
我试了下上面的语句,似乎不行呀,可能盘号弄错了?

你要看看那个硬盘是不是 (hd0)。最好是 (hd0),要不然可能需要交换磁盘。
chainloader +1 启动的应该是 ($root)+1,也就是根分区的 pbr,应该不适用于 GRUB2。
这样子的语句,似乎只对微软的引导体系ntldr/bootmgr有效吧?因为ntldr/bootmgr写入MBR的时候,只需要占用一个扇区,所以+1有效,那么grub2占用多少个启动扇区?

你这就有点想当然了。BIOS 也不知道你的引导器占几个扇区,它是怎么启动你的硬盘的?
BIOS 启动硬盘,都是把 MBR(1个扇区!) 加载到内存 0x7c00 位置的。

你可能想的是 chainloader /ntldr 这种东西。grub4dos 里面的 chainloader ntldr/bootmgr/grldr 和 chainloader grldr.mbr/(hd0)+1 其实是两回事,是把两种功能合并到了一个命令中。而在 grub2 里面就是分开的。
作者: liuzhaoyzz    时间: 2022-2-16 18:01
本帖最后由 liuzhaoyzz 于 2022-2-16 18:02 编辑

menuentry "/grub2/grub.cfg" "/grub2/grub.cfg" {
search --no-floppy --set --file /grub2/grub.cfg
configfile /grub2/grub.cfg
#chainloader +1
}
configfile /grub2/grub.cfg,grub2启动grub2亲测可用。
chainloader +1似乎不行。
作者: liuzhaoyzz    时间: 2022-2-16 18:06
本帖最后由 liuzhaoyzz 于 2022-2-16 18:18 编辑
wintoflash 发表于 2022-2-16 17:57
你要看看那个硬盘是不是 (hd0)。最好是 (hd0),要不然可能需要交换磁盘。
chainloader +1 启动的应该 ...

chainloader (hd1)+1我试过了,不行啊,直接黑屏了。


你要看看那个硬盘是不是 (hd0)。最好是 (hd0),要不然可能需要交换磁盘。

windows启动有这个要求,linux似乎没有这个要求吧?

我试了
drivemap (hd1) (hd0)
chainloader (hd1)+1或者chainloader (hd0)+1
boot
似乎都不行。

linux64 位-2022-02-16-18-05-35.png (25.55 KB, 下载次数: 283)

linux64 位-2022-02-16-18-05-35.png

作者: 2011whp    时间: 2022-2-16 18:28
本帖最后由 2011whp 于 2022-2-16 18:34 编辑

传统引导分区,只能有一个(win的情况): 第一硬盘,激活分区

要 磁盘间 互引导,得把  bcd  boot.ini 的相关资源,每个硬盘 复制上

主板bios的 Fx 选择,只有一次 磁盘交换的 机会(要不 得 用  g4d 交换磁盘 )
——————————————————————————————
同理  linux 的 传统的grub2 是否也有这样的规则呢?

据前面 讨论,直接config  不同硬盘的 grub.cfg  ,  即可
(不像win  有 bcd  和  boot.ini 两套相关资源 ,   grub2 一套 通用)

如果 一定要  从 磁盘 互引:每个磁盘,有一套g4d 来交换磁盘 ,g4d来 chainloader  mbr或pbr


作者: 窄口牛    时间: 2022-2-16 18:29
g4d就不调用grub2了,写一个g4d的菜单来启动centos,怎么写我也不懂了,因为linux基本上没有用g4d做引导的,大部分都是isolinux做legacy,grub2做efi。我建议都用grub2,借用grldr来引导grub2,当然定制的时候不一样。
作者: 2011whp    时间: 2022-2-16 18:42
本帖最后由 2011whp 于 2022-2-16 18:46 编辑

意思是  每个 磁盘 第二重引导 加上 g4d

至于 g4d 交换磁盘后,可以 mbr pbr,  也可以文件
(问题是 楼主,找不到文件,linux没提供,有的话   lnboot.img +core.img 自己做一个ntldr的文件,或 直接 linux16 core.img)

再有就是 g4d 跳过 grub2  , 直接 kernel 内核( 估计 不用 交换 磁盘了,内核找分区,应该是唯一的)
作者: wintoflash    时间: 2022-2-16 18:54
liuzhaoyzz 发表于 2022-2-16 18:06
chainloader (hd1)+1我试过了,不行啊,直接黑屏了。

不要在图像模式下执行。

作者: liuzhaoyzz    时间: 2022-2-16 19:03
2011whp 发表于 2022-2-16 18:42
意思是  每个 磁盘 第二重引导 加上 g4d

至于 g4d 交换磁盘后,可以 mbr pbr,  也可以文件

不想这样,我想尝试下其他方法。
作者: liuzhaoyzz    时间: 2022-2-16 19:17
本帖最后由 liuzhaoyzz 于 2022-2-16 19:38 编辑
wintoflash 发表于 2022-2-16 18:54
不要在图像模式下执行。

果然如此!
grub2-BIOS:
menuentry "chainloader-hd1"  {
terminal_output console
drivemap (hd1) (hd0)
chainloader (hd1)+1
}

grub4dos-BIOS:
title chainloader-hd1
map (hd1) (hd0)
map --hook
chainloader (hd1)+1

都可以启动。
那为啥要交换磁盘呢?以前看帖子说windows下面才需要交换磁盘,linux下面不需要啊?看样子我被误导了。


作者: 2011whp    时间: 2022-2-16 19:29
drivemap (hd1) (hd0)  应该 交换是 必须的 吧

——————————————————

boot后生效? 一般是 这样:
grub4dos-BIOS:
title chainloader-hd1
map (hd1) (hd0)
map --hook
chainloader (hd0)+1
作者: liuzhaoyzz    时间: 2022-2-16 19:37
2011whp 发表于 2022-2-16 19:29
drivemap (hd1) (hd0)  应该 交换是 必须的 吧

——————————————————

哦,是的,我写漏掉了。上面的菜单已添加。
作者: 2011cwj6958    时间: 2022-2-16 21:33
硬盘2添加grub2用grub2菜单直接引导不是更好
作者: liuzhaoyzz    时间: 2022-2-17 07:27
2011cwj6958 发表于 2022-2-16 21:33
硬盘2添加grub2用grub2菜单直接引导不是更好

我在6楼说了,不想这样子做。只是做个尝试。
作者: wintoflash    时间: 2022-2-17 10:27
liuzhaoyzz 发表于 2022-2-16 19:17
果然如此!
grub2-BIOS:
menuentry "chainloader-hd1"  {

你写的grub4dos菜单似乎有问题,实际启动的是(hd0)。

切换成文本模式与交换磁盘,都是为了规避bios可能有的问题。
作者: liuzhaoyzz    时间: 2022-2-17 10:57
本帖最后由 liuzhaoyzz 于 2022-2-17 10:59 编辑
wintoflash 发表于 2022-2-17 10:27
你写的grub4dos菜单似乎有问题,实际启动的是(hd0)。

切换成文本模式与交换磁盘,都是为了规避bios可 ...


那个g4d菜单我测试过的可以启动,去掉map语句就无法启动,晚点再试试chainloader (hd0)+1试试看是什么结果。
必须交换磁盘,可能与硬盘1里面grub2菜单set root='hd0,msdos1'语句有关吧。
作者: liuzhaoyzz    时间: 2022-2-17 12:23
wintoflash 发表于 2022-2-17 10:27
你写的grub4dos菜单似乎有问题,实际启动的是(hd0)。

切换成文本模式与交换磁盘,都是为了规避bios可 ...

刚才尝试了下,g4d
title chainloader-hd1
map (hd1) (hd0)
map --hook
chainloader (hd1)+1

title chainloader-hd1
map (hd1) (hd0)
map --hook
chainloader (hd0)+1
上面的两个菜单都可以启动。

grub2:
menuentry "chainloader-hd1" {
terminal_output console
drivemap (hd1) (hd0)
chainloader (hd1)+1
}
上面的菜单启动正常。

换成chainloader (hd0)+1提示Missing helper,不能启动。


作者: wintoflash    时间: 2022-2-18 11:17
liuzhaoyzz 发表于 2022-2-17 12:23
刚才尝试了下,g4d
title chainloader-hd1
map (hd1) (hd0)

对于 GRUB4DOS 来说,执行 map --hook 之后磁盘交换就生效了。 因此你想启动的磁盘由 (hd1) 变为了 (hd0),最后应该执行
chainloader (hd0)+1
至于为什么 chainloader (hd1)+1 也能成功启动,我怀疑 GRUB4DOS chainloader 可能有问题。
对于 GRUB2 来说,磁盘交换是执行 boot 命令的时候生效的,所以应该执行 chainloader (hd1)+1。
作者: 2011whp    时间: 2022-2-18 16:08
liuzhaoyzz:那为啥要交换磁盘呢?以前看帖子说windows下面才需要交换磁盘,linux下面不需要啊?看样子我被误导了。


也许,linux  不需要  磁盘交换 正确的

如果 CentOS 用的 是lnboot.img 而且定置 时 有 -c 参数 内置菜单  动态确认root分区

可以 试下 不交换分区  chainloader (hd1)+63   
或看mbr后面 扇区有多少  如 chainloader (hd1)+200

作者: wjia202112    时间: 2022-2-18 16:39
不懂不懂,千奇百怪。
作者: liuzhaoyzz    时间: 2022-2-18 18:16
wintoflash 发表于 2022-2-18 11:17
对于 GRUB4DOS 来说,执行 map --hook 之后磁盘交换就生效了。 因此你想启动的磁盘由 (hd1) 变为了 (hd0) ...

我感觉
map (hd1) (hd0)
map --hook
之后,这两个磁盘,在g4d环境下是一样的,所以用chainloader (hd0)+1或者chainloader (hd1)+1结果是一样的,但是理论上来说,chainloader (hd0)+1的确更加合理。


作者: 2011yaya2007777    时间: 2022-2-18 18:27
你执行
map (hd1) (hd0)
map --hook
之后,再执行
vol
看看有没有 hd0、hd1磁盘。如果有,记一下存在的分区,然后再执行
ls (hd0,x)/
ls (hd1,y)/
作者: liuzhaoyzz    时间: 2022-2-18 18:47
2011whp 发表于 2022-2-18 16:08
也许,linux  不需要  磁盘交换 正确的

如果 CentOS 用的 是lnboot.img 而且定置 时 有 -c 参数 内 ...

chainloader (hd1)+63   
chainloader (hd1)+200
实测不行,原因之前wintoflash已经说过了。
chainloader (hd0)+1正解
作者: liuzhaoyzz    时间: 2022-2-18 18:51
本帖最后由 liuzhaoyzz 于 2022-2-18 21:54 编辑
2011yaya2007777 发表于 2022-2-18 18:27
你执行
map (hd1) (hd0)
map --hook

直接上图。g4d2021-12-17版本。
map之前(hd1,0)是CentOS的xfs启动分区,(hd1,1)是CentOS的lvm2文件分区。ls (hd1,y)/无效,不能加载分区。
map之后,(hd0)和(hd1)相同了,都有2个分区。之前hd0是3个分区,hd1是2个分区。


ls (hd0,x)/
ls (hd1,y)/
无效,可能不能识别分区格式。一楼有分区格式图,linux64 位-2022-02-16-07-30-21.png
(hd1,0)是CentOS的xfs启动分区,(hd1,1)是CentOS的lvm2文件分区。

这也就是说,由于grub4dos不支持xfs分区,不可能通过照葫芦画瓢地把grub2启动菜单“移植”到grub4dos里面,因为grub4dos环境下,由于缺乏xfs文件驱动,所以无法调用CentOS的xfs启动分区的那些启动文件,自然也就不能启动CentOS,但是可以调用(hd1)的MBR(grub2.MBR),grub2有xfs文件驱动,进而通过grub2来启动CentOS。

写一个g4d的菜单来启动centos

15楼的设想,目前是不能实现的了。






作者: liuzhaoyzz    时间: 2022-2-18 18:56
本帖最后由 liuzhaoyzz 于 2022-2-18 22:15 编辑

grub2认识xfs分区格式,可以ls
grub2似乎也不认识lvm分区格式,ls无效。或者是我没有加载lvm.mod?这个我不懂。启动的时候不需要调用这个分区的文件,无所谓了。

linux64 位-2022-02-18-18-55-47.png (28.35 KB, 下载次数: 324)

linux64 位-2022-02-18-18-55-47.png

作者: 2011whp    时间: 2022-2-18 19:22
看来 centos,  用的 是 boot.img
________________________________________-

估计 g4d 没有 把 现排序 的 hd0 进行 顺排
map (hd1)  (hd0)
map (hd0)  (hd1)
map --hook     
估计能正常






作者: 2011whp    时间: 2022-2-18 19:31
grub2  的 proc 是个 什么 设备呢  ?
grub205 是  2TB
ventoy   是   0kB



作者: 2011yaya2007777    时间: 2022-2-18 19:54
和我预想的一样。
一般来说,交换磁盘,应当是这样的:
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
这样才能真正交换两个磁盘。否则就少了一个磁盘。
当然,不需要这个消失的磁盘则另说。
作者: wintoflash    时间: 2022-2-18 20:59
liuzhaoyzz 发表于 2022-2-18 18:56
grub2认识xfs分区格式,可以ls
grub2似乎也不认识llvm分区格式,ls无效。或者是我没有加载llvm.mod?这个我 ...

你说的应该是 lvm 吧。llvm 是个编译器。
GRUB2 有 lvm 支持模块,一般情况下用得比较少。
----------
原来是我忘记了,map (hd1) (hd0) 并不是交换磁盘,而是把磁盘 (hd1) 映射到 (hd0),这样执行 map --hook 之后,(hd1) 和 (hd0) 就一样了。
作者: wintoflash    时间: 2022-2-18 21:06
2011whp 发表于 2022-2-18 19:31
grub2  的 proc 是个 什么 设备呢  ?
grub205 是  2TB
ventoy   是   0kB

(proc) 类似 Linux 下的 /proc,是把 GRUB2 内部一些数据抽象成文件暴露出来方便用户调用的。
比如加密分区、签名验证的密钥,smbios、acpi、efi 系统表等。
我的 GRUB2 里面可以把 (proc) 磁盘当作 /dev/zero 来给 dd 命令使用,你用 hexdump 查看一下就知道了。
作者: liuzhaoyzz    时间: 2022-2-18 21:56
2011yaya2007777 发表于 2022-2-18 19:54
和我预想的一样。
一般来说,交换磁盘,应当是这样的:
map (hd0) (hd1)

交换磁盘确实如此。
g4d菜单我只是从前面grub2照搬照抄过来,没考虑到“交换磁盘”,我只想着单向覆盖。

作者: liuzhaoyzz    时间: 2022-2-18 21:58
wintoflash 发表于 2022-2-18 20:59
你说的应该是 lvm 吧。llvm 是个编译器。
GRUB2 有 lvm 支持模块,一般情况下用得比较少。
---------- ...

确实是lvm,我写错了,写错的原因是对于linux的lvm分区不熟悉,贻笑大方了,哈哈。

作者: liuzhaoyzz    时间: 2022-2-18 22:17
2011yaya2007777 发表于 2022-2-18 19:54
和我预想的一样。
一般来说,交换磁盘,应当是这样的:
map (hd0) (hd1)

title chainloader-hd1
map (hd1) (hd0)
map (hd0) (hd1)
map --hook
chainloader (hd0)+1
启动没有问题,本人亲测。
作者: liuzhaoyzz    时间: 2022-2-18 22:32
本帖最后由 liuzhaoyzz 于 2022-2-18 22:33 编辑
wintoflash 发表于 2022-2-18 20:59
你说的应该是 lvm 吧。llvm 是个编译器。
GRUB2 有 lvm 支持模块,一般情况下用得比较少。
---------- ...

GRUB2 有 lvm 支持模块,果然是有,但是insmod lvm之后,lvm2分区还是无法ls,可能grub2里面的lvm.mod只支持lvm1.0?不支持lvm2.0?
不过看不到也无所谓,毕竟启动的时候,grub2不需要调用lvm2分区里面的那些文件。只是做个尝试,就事论事罢了。

linux64 位-2022-02-18-22-30-51.png (27.51 KB, 下载次数: 575)

linux64 位-2022-02-18-22-30-51.png

作者: wintoflash    时间: 2022-2-19 08:22
liuzhaoyzz 发表于 2022-2-18 22:32
GRUB2 有 lvm 支持模块,果然是有,但是insmod lvm之后,lvm2分区还是无法ls,可能grub2里面的lvm.mod只 ...



作者: liuzhaoyzz    时间: 2022-2-19 10:07
wintoflash 发表于 2022-2-19 08:22

那就是有效了?为啥不能ls?不懂
作者: wintoflash    时间: 2022-2-19 11:18
liuzhaoyzz 发表于 2022-2-19 10:07
那就是有效了?为啥不能ls?不懂

你应该 ls (lvm/centos-root)/
作者: liuzhaoyzz    时间: 2022-2-20 19:13
wintoflash 发表于 2022-2-19 11:18
你应该 ls (lvm/centos-root)/

果然是可以。

linux64 位-2022-02-20-19-12-31.png (28.51 KB, 下载次数: 300)

linux64 位-2022-02-20-19-12-31.png

作者: 2011yfrui    时间: 2022-2-21 19:22
以下或许也是解决之道:
menuentry "CentOS" {
search --no-floppy --fs-uuid --set=root UUID   //UUID 你的 CentOS 启动分区 or: search --no-floppy --file --set=root /path/to/file-name
drivemap -s (hd0) $root
chainloader +1
}
作者: 2011yfrui    时间: 2022-2-21 19:37
也可简化为
menuentry "CentOS" {
set root=hd1,1
drivemap -s (hd0) $root
chainloader +1
}
作者: liuzhaoyzz    时间: 2022-2-23 07:18
2011yfrui 发表于 2022-2-21 19:37
也可简化为
menuentry "CentOS" {
set root=hd1,1

试过了,这样子的用法不行,不能把某个分区(hd1,1),drivemap成为(hd0),因为后面无法调用其MBR。
作者: 2011yfrui    时间: 2022-2-23 10:04
你好!
我查了好些英文资料,这份 https://unix.stackexchange.com/q ... d-another-hard-disk 资料应直奔主题。

使用 drivemap 命令 用 -s 选项或无选项是有区别的。GRUB v2.04 或 GRUB v2.04 都有明确定义, -s 选项指明就是就是俩磁盘交换位置;无选项就是映射(map)。

理应:
menuentry "Boot from second disk and see it as first disk" {
   set root=(hd1)
   drivemap -s hd0 hd1
   chainloader +1
}
起作用。

希望这能帮到你!
作者: liuzhaoyzz    时间: 2022-2-23 11:25
本帖最后由 liuzhaoyzz 于 2022-2-23 12:19 编辑
2011yfrui 发表于 2022-2-23 10:04
你好!
我查了好些英文资料,这份 https://unix.stackexchange.com/questions/252936/grub2-boot-to-a-sec ...

之前我试过了,drivemap -s似乎不能启动,选择启动项之后,直接黑屏了,直接dirvemap可以启动。

grub2-BIOS:
menuentry "chainloader-hd1"  {
terminal_output console
drivemap (hd1) (hd0)
chainloader (hd1)+1
}
作者: 2011yfrui    时间: 2022-2-23 13:14
看来 你的GRUB版本(有BUG)指挥不动你的主板硬件。
map 我理解是 在 (hd0) 上挂载  (hd1),在 (hd0) 上可访问 (hd1),所以肯定成功。

至于
       set root=(hd1)
       drivemap -s hd0 hd1 或 drivemap -s (hd0) ${root}
       chainloader +1
大多数资料给出 hd0 hd1 或  (hd0) ${root} 的顺序,这是应该注意的。

最后谢谢你的及时回复!
作者: 481416322    时间: 2022-3-5 13:09
向各位高手请教一下,在grub2_BIOS下,如何用drivemap将vhd文件做个映射,然后启动vhd系统。
作者: wintoflash    时间: 2022-3-5 14:21
481416322 发表于 2022-3-5 13:09
向各位高手请教一下,在grub2_BIOS下,如何用drivemap将vhd文件做个映射,然后启动vhd系统。

不支持
作者: 481416322    时间: 2022-3-5 14:51
wintoflash 发表于 2022-3-5 14:21
不支持

知道了,谢谢!
作者: IT小森    时间: 2022-7-18 19:06
签到
作者: nowayer    时间: 2023-10-18 17:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: 2011matrixvexx    时间: 2024-2-9 21:19
進來學習,謝謝!




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3