進來學習,謝謝! |
签到 |
知道了,谢谢! |
481416322 发表于 2022-3-5 13:09 不支持 |
向各位高手请教一下,在grub2_BIOS下,如何用drivemap将vhd文件做个映射,然后启动vhd系统。 |
看来 你的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 12:19 编辑 2011yfrui 发表于 2022-2-23 10:04 之前我试过了,drivemap -s似乎不能启动,选择启动项之后,直接黑屏了,直接dirvemap可以启动。 grub2-BIOS: menuentry "chainloader-hd1" { terminal_output console drivemap (hd1) (hd0) chainloader (hd1)+1 } |
你好! 我查了好些英文资料,这份 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 } 起作用。 希望这能帮到你! |
2011yfrui 发表于 2022-2-21 19:37 试过了,这样子的用法不行,不能把某个分区(hd1,1),drivemap成为(hd0),因为后面无法调用其MBR。 |
也可简化为 menuentry "CentOS" { set root=hd1,1 drivemap -s (hd0) $root chainloader +1 } |
以下或许也是解决之道: 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 } |
liuzhaoyzz 发表于 2022-2-19 10:07 你应该 ls (lvm/centos-root)/ |
wintoflash 发表于 2022-2-19 08:22 那就是有效了?为啥不能ls?不懂 |
liuzhaoyzz 发表于 2022-2-18 22:32 |
2011yaya2007777 发表于 2022-2-18 19:54 title chainloader-hd1 map (hd1) (hd0) map (hd0) (hd1) map --hook chainloader (hd0)+1 启动没有问题,本人亲测。 |
wintoflash 发表于 2022-2-18 20:59 确实是lvm,我写错了,写错的原因是对于linux的lvm分区不熟悉,贻笑大方了,哈哈。 |
2011yaya2007777 发表于 2022-2-18 19:54 交换磁盘确实如此。 g4d菜单我只是从前面grub2照搬照抄过来,没考虑到“交换磁盘”,我只想着单向覆盖。 |
2011whp 发表于 2022-2-18 19:31 (proc) 类似 Linux 下的 /proc,是把 GRUB2 内部一些数据抽象成文件暴露出来方便用户调用的。 比如加密分区、签名验证的密钥,smbios、acpi、efi 系统表等。 我的 GRUB2 里面可以把 (proc) 磁盘当作 /dev/zero 来给 dd 命令使用,你用 hexdump 查看一下就知道了。 |
liuzhaoyzz 发表于 2022-2-18 18:56 你说的应该是 lvm 吧。llvm 是个编译器。 GRUB2 有 lvm 支持模块,一般情况下用得比较少。 ---------- 原来是我忘记了,map (hd1) (hd0) 并不是交换磁盘,而是把磁盘 (hd1) 映射到 (hd0),这样执行 map --hook 之后,(hd1) 和 (hd0) 就一样了。 |
和我预想的一样。 一般来说,交换磁盘,应当是这样的: map (hd0) (hd1) map (hd1) (hd0) map --hook 这样才能真正交换两个磁盘。否则就少了一个磁盘。 当然,不需要这个消失的磁盘则另说。 |
grub2 的 proc 是个 什么 设备呢 ? grub205 是 2TB ventoy 是 0kB |
看来 centos, 用的 是 boot.img ________________________________________- 估计 g4d 没有 把 现排序 的 hd0 进行 顺排 map (hd1) (hd0) map (hd0) (hd1) map --hook 估计能正常 |
2011whp 发表于 2022-2-18 16:08 chainloader (hd1)+63 chainloader (hd1)+200 实测不行,原因之前wintoflash已经说过了。 chainloader (hd0)+1正解 |
你执行 map (hd1) (hd0) map --hook 之后,再执行 vol 看看有没有 hd0、hd1磁盘。如果有,记一下存在的分区,然后再执行 ls (hd0,x)/ ls (hd1,y)/ |
wintoflash 发表于 2022-2-18 11:17 我感觉 map (hd1) (hd0) map --hook 之后,这两个磁盘,在g4d环境下是一样的,所以用chainloader (hd0)+1或者chainloader (hd1)+1结果是一样的,但是理论上来说,chainloader (hd0)+1的确更加合理。 |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.