无忧启动论坛

 找回密码
 注册
搜索

通过 grub4dos 调用grub2菜单, 然后引导linux失败?

查看数: 5788 | 评论数: 10 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-9-27 11:23

正文摘要:

本帖最后由 wengzhenquan 于 2020-9-27 18:16 编辑 u盘有200多G,用grub2定制的引导菜单,同时支持EFI 64 32位级legacy。 legacy考虑到兼容性,想做ud版,grub2不支持ud,于是用grub4dos引导grub2菜单。 ...

回复

wengzhenquan 发表于 2020-9-29 10:21:10
hilsonma 发表于 2020-9-28 23:51
重新定制core.img,把你要用到的模块都包含进去。

或者是把 i386-pc 这个模块文件夹整个复制到 grub.c ...

已解决,谢谢
my9823 发表于 2020-9-29 06:39:01
我发现你很喜欢记事本编辑菜单,建议utf8保存菜单。既然用ud,可以用fbinsttool内置的编辑器编辑菜单,右键保存为utf8格式。
hilsonma 发表于 2020-9-28 23:51:51
wengzhenquan 发表于 2020-9-28 16:58
现在可以调了,不过。。您看一下。

这是不兼容吗?

重新定制core.img,把你要用到的模块都包含进去。

或者是把 i386-pc 这个模块文件夹整个复制到 grub.cfg 所在文件夹
然后在菜单前面加载相应的模块如
insmod echo
insmod linux16
insmod initrd16

建议重新定制core.img

点评

已解决,谢谢  详情 回复 发表于 2020-9-29 10:21
hilsonma 发表于 2020-9-27 20:49:46
本帖最后由 hilsonma 于 2020-9-27 21:09 编辑
wengzhenquan 发表于 2020-9-27 17:27
定制的配置如下:
search.file /boot/grub/grub.cfg root
set root=($root)

grub4dos调用grub2不需要 copy /b boot.img+core.img g2ldr ,直接使用core.img就可以了

定制core.img时,如果使用了 -c 就不要使用 -p 了
-p 是指定prefix (配置文件所在文件夹)
-c 是使用预配置文件,而预配置文件里通常会指定prefix,所以用了 -c 就不用 -p
如果 -c 的预配置结果是跟 -p 一样的话,就直接使用 -p 无需使用 -c
通常是使用 -p 定制,如果 -p 不能满足定制要求,才改用 -c 定制。

象你这个定制例子,如果core.img 跟 grub.cfg在同一个分区的,使用 -p 定制就可以了,如果需要 core.img 跟 grub.cfg 在不同的分区,就不使用 -p 定制而改用 -c 定制。
不管grub.cfg 跟core.img是不是同一个分区,按你的定制例子,grub.cfg都应该是放在 /boot/grub

现在趋向于uefi启动,一般都有EFI文件夹,所以我通常使用 -p /EFI/grub 定制,将grub.cfg 放在 /EFI/grub
而core.img我就放在 /EFI
当使用grub4dos引导时,如下转向grub2菜单:
find --set-root /EFI/core.img
kernel /EFI/core.img

这样,无论是uefi启动还是legacy启动,使用的都是同一个菜单。

至于使用bootice制作grub4dos引导,只是将mbr更改为grub4dos,不做其他操作是不会导致分区表错误的。
如果要使用ud也就是fbinst引导,只要不使用 --force 也是可以无损制作的

点评

现在可以调了,不过。。您看一下。 这是不兼容吗?  详情 回复 发表于 2020-9-28 16:58
wengzhenquan 发表于 2020-9-27 18:14:39
问题已经解决,定制可用。
遇到的问题:
1、一开始core.img 不是自己生成的,其它的方东拼西凑的,导致引导之后版本和*.mod的版本不一致。
2、用BOOTICE重新制作成grub4dos的时候分区表设置错误。
hilsonma 发表于 2020-9-27 15:58:54
wengzhenquan 发表于 2020-9-27 12:57
我也不记得哪儿弄来的了,最近找了太多东西,都是东拼西凑,你需要的话我可以给你。
我grub4dos 是0.46a ...

grub4dos调用grub2可以kernel core.img,当然加上正确的core.img路径。
没有加载grub.cfg的话,在grub2命令行输入set,查看prefix在哪个位置,然后将grub.cfg放到这个位置。
或者自己定制core.img,指定prefix,然后将grub.cfg放到指定位置。

点评

定制的配置如下: search.file /boot/grub/grub.cfg root set root=($root) set prefix=($root)/boot/grub configfile ($root)/boot/grub/grub.cfg 脚本信息如下: set g2_setup=%~dp0bootconfig.cfg gru  详情 回复 发表于 2020-9-27 17:27
xbmc 发表于 2020-9-27 12:40:36
kernel /boot/grub/grldr
这里的 grldr 是从哪弄来的?
这个错误,是因为你启动的 grub2 内核 (core.img) 和加载的模块 (*.mod) 版本不一致。
legacy考虑到兼容性,想做ud版,grub2不支持ud,于是用grub4dos引导grub2菜单。

如果考虑兼容性,那就不要用 grub2,因为 BIOS 下只有 ud + grub4dos 的兼容性最好。

点评

我也不记得哪儿弄来的了,最近找了太多东西,都是东拼西凑,你需要的话我可以给你。 我grub4dos 是0.46a的 引导core.img ,通过 configfile 去加载下一个菜单的时候会失效,直接跳到主菜单 menuentry "[1] PE 系  详情 回复 发表于 2020-9-27 12:57

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

闽公网安备 35020302032614号

GMT+8, 2024-12-1 17:51

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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