无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 11382|回复: 58
打印 上一主题 下一主题

请问下BIOS启动怎样启动另一个硬盘里面的grub2?

  [复制链接]
跳转到指定楼层
#
发表于 2022-2-16 07:36:21 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 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, 下载次数: 264)

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, 下载次数: 286)

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

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

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, 下载次数: 278)

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

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

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

grub-menu.rar

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

58#
发表于 2024-2-9 21:19:24 | 只看该作者
進來學習,謝謝!
回复

使用道具 举报

57#
发表于 2023-10-18 17:56:38 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

56#
发表于 2022-7-18 19:06:44 来自手机 | 只看该作者
签到
回复

使用道具 举报

55#
发表于 2022-3-5 14:51:29 | 只看该作者

知道了,谢谢!
回复

使用道具 举报

54#
发表于 2022-3-5 14:21:48 | 只看该作者
481416322 发表于 2022-3-5 13:09
向各位高手请教一下,在grub2_BIOS下,如何用drivemap将vhd文件做个映射,然后启动vhd系统。

不支持

点评

知道了,谢谢!  详情 回复 发表于 2022-3-5 14:51
回复

使用道具 举报

53#
发表于 2022-3-5 13:09:06 | 只看该作者
向各位高手请教一下,在grub2_BIOS下,如何用drivemap将vhd文件做个映射,然后启动vhd系统。

点评

不支持  详情 回复 发表于 2022-3-5 14:21
回复

使用道具 举报

52#
发表于 2022-2-23 13:14:38 | 只看该作者
看来 你的GRUB版本(有BUG)指挥不动你的主板硬件。
map 我理解是 在 (hd0) 上挂载  (hd1),在 (hd0) 上可访问 (hd1),所以肯定成功。

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

最后谢谢你的及时回复!
回复

使用道具 举报

51#
 楼主| 发表于 2022-2-23 11:25:26 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-2-23 12:19 编辑

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

grub2-BIOS:
menuentry "chainloader-hd1"  {
terminal_output console
drivemap (hd1) (hd0)
chainloader (hd1)+1
}
回复

使用道具 举报

50#
发表于 2022-2-23 10:04:01 | 只看该作者
你好!
我查了好些英文资料,这份 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
}
起作用。

希望这能帮到你!

点评

之前我试过了,drivemap -s似乎不能启动,直接dirvemap可以启动。 grub2-BIOS: menuentry "chainloader-hd1" { terminal_output console drivemap (hd1) (hd0) chainloader (hd1)+1 }  详情 回复 发表于 2022-2-23 11:25
回复

使用道具 举报

49#
 楼主| 发表于 2022-2-23 07:18:54 | 只看该作者
2011yfrui 发表于 2022-2-21 19:37
也可简化为
menuentry "CentOS" {
set root=hd1,1

试过了,这样子的用法不行,不能把某个分区(hd1,1),drivemap成为(hd0),因为后面无法调用其MBR。
回复

使用道具 举报

48#
发表于 2022-2-21 19:37:31 | 只看该作者
也可简化为
menuentry "CentOS" {
set root=hd1,1
drivemap -s (hd0) $root
chainloader +1
}

点评

试过了,这样子的用法不行,不能把某个分区(hd1,1),drivemap成为(hd0),因为后面无法调用其MBR。  详情 回复 发表于 2022-2-23 07:18
回复

使用道具 举报

47#
发表于 2022-2-21 19:22:30 | 只看该作者
以下或许也是解决之道:
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
}
回复

使用道具 举报

46#
 楼主| 发表于 2022-2-20 19:13:19 | 只看该作者
wintoflash 发表于 2022-2-19 11:18
你应该 ls (lvm/centos-root)/

果然是可以。

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

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

使用道具 举报

45#
发表于 2022-2-19 11:18:57 | 只看该作者
liuzhaoyzz 发表于 2022-2-19 10:07
那就是有效了?为啥不能ls?不懂

你应该 ls (lvm/centos-root)/

点评

果然是可以。  详情 回复 发表于 2022-2-20 19:13
回复

使用道具 举报

44#
 楼主| 发表于 2022-2-19 10:07:59 来自手机 | 只看该作者
wintoflash 发表于 2022-2-19 08:22

那就是有效了?为啥不能ls?不懂

点评

你应该 ls (lvm/centos-root)/  详情 回复 发表于 2022-2-19 11:18
回复

使用道具 举报

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


点评

那就是有效了?为啥不能ls?不懂  详情 回复 发表于 2022-2-19 10:07
回复

使用道具 举报

42#
 楼主| 发表于 2022-2-18 22:32:14 | 只看该作者
本帖最后由 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

点评

[attachimg]495990[/attachimg]  详情 回复 发表于 2022-2-19 08:22
回复

使用道具 举报

41#
 楼主| 发表于 2022-2-18 22:17:26 | 只看该作者
2011yaya2007777 发表于 2022-2-18 19:54
和我预想的一样。
一般来说,交换磁盘,应当是这样的:
map (hd0) (hd1)

title chainloader-hd1
map (hd1) (hd0)
map (hd0) (hd1)
map --hook
chainloader (hd0)+1
启动没有问题,本人亲测。
回复

使用道具 举报

40#
 楼主| 发表于 2022-2-18 21:58:05 来自手机 | 只看该作者
wintoflash 发表于 2022-2-18 20:59
你说的应该是 lvm 吧。llvm 是个编译器。
GRUB2 有 lvm 支持模块,一般情况下用得比较少。
---------- ...

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

使用道具 举报

39#
 楼主| 发表于 2022-2-18 21:56:56 来自手机 | 只看该作者
2011yaya2007777 发表于 2022-2-18 19:54
和我预想的一样。
一般来说,交换磁盘,应当是这样的:
map (hd0) (hd1)

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

使用道具 举报

38#
发表于 2022-2-18 21:06:33 | 只看该作者
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 查看一下就知道了。
回复

使用道具 举报

37#
发表于 2022-2-18 20:59:35 | 只看该作者
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) 就一样了。

点评

GRUB2 有 lvm 支持模块,果然是有,但是 insmod lvm之后,lvm2分区还是无法ls,可能grub2里面的lvm.mod只支持lvm1.0?不支持lvm2.0?  详情 回复 发表于 2022-2-18 22:32
确实是lvm,我写错了,写错的原因是对于linux的lvm分区不熟悉,贻笑大方了,哈哈。  详情 回复 发表于 2022-2-18 21:58
回复

使用道具 举报

36#
发表于 2022-2-18 19:54:53 | 只看该作者
和我预想的一样。
一般来说,交换磁盘,应当是这样的:
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
这样才能真正交换两个磁盘。否则就少了一个磁盘。
当然,不需要这个消失的磁盘则另说。

点评

title chainloader-hd1 map (hd1) (hd0) map (hd0) (hd1) map --hook chainloader (hd0)+1 启动没有问题,本人亲测。  详情 回复 发表于 2022-2-18 22:17
交换磁盘确实如此。 g4d菜单我只是从前面grub2照搬照抄过来,没考虑到“交换磁盘”,我只想着单向覆盖。  详情 回复 发表于 2022-2-18 21:56
回复

使用道具 举报

35#
发表于 2022-2-18 19:31:43 | 只看该作者
grub2  的 proc 是个 什么 设备呢  ?
grub205 是  2TB
ventoy   是   0kB


点评

(proc) 类似 Linux 下的 /proc,是把 GRUB2 内部一些数据抽象成文件暴露出来方便用户调用的。 比如加密分区、签名验证的密钥,smbios、acpi、efi 系统表等。 我的 GRUB2 里面可以把 (proc) 磁盘当作 /dev/zero 来  详情 回复 发表于 2022-2-18 21:06
回复

使用道具 举报

34#
发表于 2022-2-18 19:22:19 | 只看该作者
看来 centos,  用的 是 boot.img
________________________________________-

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





回复

使用道具 举报

33#
 楼主| 发表于 2022-2-18 18:56:22 | 只看该作者
本帖最后由 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, 下载次数: 325)

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

点评

你说的应该是 lvm 吧。llvm 是个编译器。 GRUB2 有 lvm 支持模块,一般情况下用得比较少。 ---------- 原来是我忘记了,map (hd1) (hd0) 并不是交换磁盘,而是把磁盘 (hd1) 映射到 (hd0)。  详情 回复 发表于 2022-2-18 20:59
回复

使用道具 举报

32#
 楼主| 发表于 2022-2-18 18:51:28 | 只看该作者
本帖最后由 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楼的设想,目前是不能实现的了。





回复

使用道具 举报

31#
 楼主| 发表于 2022-2-18 18:47:53 | 只看该作者
2011whp 发表于 2022-2-18 16:08
也许,linux  不需要  磁盘交换 正确的

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

chainloader (hd1)+63   
chainloader (hd1)+200
实测不行,原因之前wintoflash已经说过了。
chainloader (hd0)+1正解
回复

使用道具 举报

30#
发表于 2022-2-18 18:27:49 | 只看该作者
你执行
map (hd1) (hd0)
map --hook
之后,再执行
vol
看看有没有 hd0、hd1磁盘。如果有,记一下存在的分区,然后再执行
ls (hd0,x)/
ls (hd1,y)/

点评

直接上图。 map之前(hd1,0)是CentOS的启动分区,(hd1,1)是CentOS的xfs文件分区。 map之后,(hd0)和(hd1)相同了,都有2个分区。之前hd0是3个分区,hd1是2个分区。  详情 回复 发表于 2022-2-18 18:51
回复

使用道具 举报

29#
 楼主| 发表于 2022-2-18 18:16:31 | 只看该作者
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的确更加合理。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-26 02:46

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表