无忧启动论坛

 找回密码
 注册
搜索

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

查看数: 11400 | 评论数: 58 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-2-16 07:36

正文摘要:

本帖最后由 liuzhaoyzz 于 2022-2-16 07:48 编辑 有一个硬盘1已经安装好了CentOS,他的主引导是BIOS启动的grub2,菜单详见附件grub-menu.rar。 我现在想用另一个硬盘2的grub4dos/grub2作为主引导,怎么去引导 ...

回复

2011matrixvexx 发表于 2024-2-9 21:19:24
進來學習,謝謝!
nowayer 发表于 2023-10-18 17:56:38
提示: 作者被禁止或删除 内容自动屏蔽
IT小森 发表于 2022-7-18 19:06:44
签到
481416322 发表于 2022-3-5 14:51:29

知道了,谢谢!
wintoflash 发表于 2022-3-5 14:21:48
481416322 发表于 2022-3-5 13:09
向各位高手请教一下,在grub2_BIOS下,如何用drivemap将vhd文件做个映射,然后启动vhd系统。

不支持

点评

知道了,谢谢!  详情 回复 发表于 2022-3-5 14:51
481416322 发表于 2022-3-5 13:09:06
向各位高手请教一下,在grub2_BIOS下,如何用drivemap将vhd文件做个映射,然后启动vhd系统。

点评

不支持  详情 回复 发表于 2022-3-5 14:21
2011yfrui 发表于 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} 的顺序,这是应该注意的。

最后谢谢你的及时回复!
liuzhaoyzz 发表于 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
}
2011yfrui 发表于 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
liuzhaoyzz 发表于 2022-2-23 07:18:54
2011yfrui 发表于 2022-2-21 19:37
也可简化为
menuentry "CentOS" {
set root=hd1,1

试过了,这样子的用法不行,不能把某个分区(hd1,1),drivemap成为(hd0),因为后面无法调用其MBR。
2011yfrui 发表于 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
2011yfrui 发表于 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
}
wintoflash 发表于 2022-2-19 11:18:57
liuzhaoyzz 发表于 2022-2-19 10:07
那就是有效了?为啥不能ls?不懂

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

点评

果然是可以。  详情 回复 发表于 2022-2-20 19:13
liuzhaoyzz 发表于 2022-2-19 10:07:59
wintoflash 发表于 2022-2-19 08:22

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

点评

你应该 ls (lvm/centos-root)/  详情 回复 发表于 2022-2-19 11:18
wintoflash 发表于 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
liuzhaoyzz 发表于 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
启动没有问题,本人亲测。
liuzhaoyzz 发表于 2022-2-18 21:58:05
wintoflash 发表于 2022-2-18 20:59
你说的应该是 lvm 吧。llvm 是个编译器。
GRUB2 有 lvm 支持模块,一般情况下用得比较少。
---------- ...

确实是lvm,我写错了,写错的原因是对于linux的lvm分区不熟悉,贻笑大方了,哈哈。
liuzhaoyzz 发表于 2022-2-18 21:56:56
2011yaya2007777 发表于 2022-2-18 19:54
和我预想的一样。
一般来说,交换磁盘,应当是这样的:
map (hd0) (hd1)

交换磁盘确实如此。
g4d菜单我只是从前面grub2照搬照抄过来,没考虑到“交换磁盘”,我只想着单向覆盖。
wintoflash 发表于 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 查看一下就知道了。
wintoflash 发表于 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
2011yaya2007777 发表于 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
2011whp 发表于 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
2011whp 发表于 2022-2-18 19:22:19
看来 centos,  用的 是 boot.img
________________________________________-

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





liuzhaoyzz 发表于 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正解
2011yaya2007777 发表于 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
liuzhaoyzz 发表于 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-28 12:59

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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