无忧启动论坛

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

[分享] 使用Grub2定制UEFI启动 (bootx64.efi)

    [复制链接]
86#
 楼主| 发表于 2019-10-17 14:06:48 | 只看该作者
sea2moon 发表于 2019-10-17 13:45
好的,谢谢!
我所有的文件都已经备份好了。
这几天试着装win7,装不上去,已经破坏N次了。

为什么要装win7呢,如果觉得win10卡可以尝试装这个win8.1 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=409320

如果主板只认win10可以尝试efi区用win10的bootmgfw.efi,也就是装了win7或win8.1后,将efi区启动文件改回你原来win10的启动文件。

安装win7或win8.1的时候不要使用安装程序,先格式化原windows分区,再用dism或wim工具将安装镜像展开到windows分区,最后新建一个bcd文件覆盖到efi区 \efi\microsoft\boot\bcd
完成这些操作后重启会进入系统安装设置画面,如卡停在硬件不适合按确定重启,这时不要理会,按Shift+F10, 会进入命令行,输入 cd oobe 回车后,再输入 msoobe 回车,就会出现用户设置界面,全部设置完成再重启就可以了

如果这样安装都安装不了那我也没有办法了,用回你原来预装的系统吧。

点评

再用dism或wim工具将安装镜像展开到windows分区,最后新建一个bcd文件覆盖到efi区 \efi\microsoft\boot\bcd 完成这些操作后重启会进入系统安装设置画面,如卡停在硬件不适合按确定重启,这时不要理会,按Shift+F1  详情 回复 发表于 2019-10-23 10:37
回复

使用道具 举报

85#
发表于 2019-10-17 13:45:58 | 只看该作者
hilsonma 发表于 2019-10-17 13:38
@sea2moon
导入证书这个操作本身不会覆盖原来的文件,但会保存信息到nvram中
而导入证书的前提是你将主启 ...

好的,谢谢!
我所有的文件都已经备份好了。
这几天试着装win7,装不上去,已经破坏N次了。
官网上说电脑只支持win10,而且只有win10的驱动下载。

电脑在bios 设置界面有个单独的项目(supportassist os recovery)--不在启动项里面,昨天我修改启动文件后,就告诉我程序损坏了(可联网下载修复)。从备份文件恢复后可用。

点评

为什么要装win7呢,如果觉得win10卡可以尝试装这个win8.1 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=409320 如果主板只认win10可以尝试efi区用win10的bootmgfw.efi,也就是装了win7或win8.1后,将efi区  详情 回复 发表于 2019-10-17 14:06
回复

使用道具 举报

84#
 楼主| 发表于 2019-10-17 13:38:10 | 只看该作者
本帖最后由 hilsonma 于 2019-10-17 13:39 编辑

@sea2moon
导入证书这个操作本身不会覆盖原来的文件,但会保存信息到nvram中
而导入证书的前提是你将主启动改为grub2,这个操作肯定会将原来的主启动文件覆盖(\efi\boot\bootx64.efi)

你可以使用原来的主启动bootmgfw.efi (\efi\boot\bootx64.efi),要启动到PE只要在bcd中设置就可以了 (\efi\microsoft\boot\bcd)

如果真的要改用grub2启动,一定要先备份efi区,至少要备份efi这个文件夹下的所有内容。
如果没有备份efi区而又改了的话,可以尝试用bcdboot恢复。
关键的是要备份windows分区,也就是预装系统的分区。

点评

好的,谢谢! 我所有的文件都已经备份好了。 这几天试着装win7,装不上去,已经破坏N次了。 官网上说电脑只支持win10,而且只有win10的驱动下载。 电脑在bios 设置界面有个单独的项目(supportassist os recov  详情 回复 发表于 2019-10-17 13:45
回复

使用道具 举报

83#
 楼主| 发表于 2019-10-16 18:20:32 | 只看该作者
vm669 发表于 2019-10-16 12:36
再开一个帖子请教大侠
1、如果我不修改efi定义cfg文件位置,是不是cfg必须放在efi-boot里面。?
2、如果 ...
1、如果我不修改efi定义cfg文件位置,是不是cfg必须放在efi-boot里面。?

对grub2来说,不存在修改不修改,配置文件应在位置是在编译efi文件时指定了的。
是你自己编译生成的efi文件,你会知道,这个位置是由 -p 参数指定的,如果忘记了或者是别人编译生成的efi文件,可以进入grub2命令行输入set来查看prefix的值。
2、如果像deepin这样自己修改的shimx64.efi,那就必须按他的方式放,这个名字好像是你说过的安全启动方面的?

shimx64.efi应该是安全启动需要的吧,后面的grubx64.efi才是真正的grub引导,生成这个grubx64.efi的时候 -p 参数指定了什么位置我们就要将配置文件放到什么位置。不知道的话同样是在grub2命令行输入set来查看。
3、如果我清空目前的EFI区文件,要改为grub启动,是不是要安装grub启动?怎么安装?看网上说的修复启动那样,好像BOOTICEx64就可以,但是哪个grub4dos是grub还是grub2?还有其他方式吗?

efi区改为grub2启动,只要将grub2的efi文件如grubx64.efi改名为bootx64.efi放到\efi\boot,然后将grub.cfg放到这个efi文件指定的文件夹就可以了。grub2的efi文件可以复制别人的,也可以是自己编译的。grub.cfg的位置不确定就在grub2命令行下输入set来查看。
bootice既可以安装grub4dos引导也可以安装grub2引导,但都是安装到mbr的,是bios平台的,不是uefi平台。
grub原来发展到0.97版就停止了,后来另外的团队继续开发,可以理解为两个团队走了两个分支,一个分支是grub4dos,另一个分支是grub2. 所以grub可以理解为有三个版本:原来的Grub Legacy, 后来的Grub2 和 Grub4Dos.
4、如果按grub2启动,那就是只要一个grub.cfg文件了,放在boot里面,那么menuentry前面的一大堆的那些代码是一定要的还是可以不要,只要timeou时间简单几个就行?。

一个grubx64.efi本来就只要一个grub.cfg,放在哪里同样是由grubx64.efi生成时指定的。 menuentry前面的一大堆的代码是可以不要的,只是那样就达不到原来的启动效果。你自己配置的话可以先做最简单的配置,只要能引导系统就可以了,有条件再学习各种启动效果。但如果编译grubx64.efi时少了的模块,启动要用到的话,加载模块语句少了会出错的,比如你前面的出错画面 (...... not found.) 有可能是没有加载ntfs模块导致不识别ntfs分区找不到bootmgfw.efi而造成的,不过我也不肯定。
5、假如我用你的uboot的efi放进去,需要注意什么?你的cfg文件也是放在grub里面的

我的efi 是指定配置文件为 \efi\grub\grub.cfg的,整套文件放进去然后修改grub.cfg为你需要的就可以了
回复

使用道具 举报

82#
发表于 2019-10-16 12:36:35 | 只看该作者
再开一个帖子请教大侠
1、如果我不修改efi定义cfg文件位置,是不是cfg必须放在efi-boot里面。?
2、如果像deepin这样自己修改的shimx64.efi,那就必须按他的方式放,这个名字好像是你说过的安全启动方面的?
3、如果我清空目前的EFI区文件,要改为grub启动,是不是要安装grub启动?怎么安装?看网上说的修复启动那样,好像BOOTICEx64就可以,但是哪个grub4dos是grub还是grub2?还有其他方式吗?
4、如果按grub2启动,那就是只要一个grub.cfg文件了,放在boot里面,那么menuentry前面的一大堆的那些代码是一定要的还是可以不要,只要timeou时间简单几个就行?。看得头晕
5、假如我用你的uboot的efi放进去,需要注意什么?你的cfg文件也是放在grub里面的


点评

对grub2来说,不存在修改不修改,配置文件应在位置是在编译efi文件时指定了的。 是你自己编译生成的efi文件,你会知道,这个位置是由 -p 参数指定的,如果忘记了或者是别人编译生成的efi文件,可以进入grub2命令  详情 回复 发表于 2019-10-16 18:20
回复

使用道具 举报

81#
发表于 2019-10-16 11:15:24 来自手机 | 只看该作者
本帖最后由 vm669 于 2019-10-16 12:29 编辑

基本成功了,只差kernel的命令行,真的不懂了

XOR方式:
DEEPIN启动:/EFI/deepin/shimx64.efi --> /EFI/deepin/grubx64.efi --> /EFI/ubuntu/grub.cfg --> 根分区的vmlinuz-initrd
凤凰OS启动:/EFI/Phoenix/grubx64.efi -->/EFI/BOOT/grub.cfg --> 根分区D的kernel-initrd
凤凰OS用命令行

出错



XOR的DEEPIN启动菜单再增加凤凰OS和win10

凤凰OS是按照官网方式增加,没有问题

添加Phoenix OS启动项
1. 重启进入到Deepin中,为Phoenix OS添加Grub的引导项,首先修改/etc/grub.d/40-custom文件,填入下列内容,并保存:
menuentry ‘Phoenix OS’ --class android-x86 {
search --set=root --file /PhoenixOS/kernel
linux /PhoenixOS/kernel quiet root=/dev/ram0 SRC=/PhoenixOS vga=auto
initrd /PhoenixOS/initrd.img
}
2. 修改/etc/default/grub文件,注释下列两行(在两行前加#),并保存;
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=TRUE
3. 生成新的Grub菜单;
通过下列命令行生成新的Grub菜单:
sudo grub-mkconfig -o /boot/grub/grub.cfg

win10是采用BCD方式,
修改 \Windows\Boot\EFI\bootmgfw.efi为 \Windows\Boot\EFI\bootmgfw10.efi,
再用BOOTICEx64增加BCD,放在windows分区跟bootmgfw10.efi放一起。
再到DEEPIN按照上面方式增加
menuentry "2.Windows 10" "/Windows/Boot/EFI/bootmgfw10.efi" --hotkey=2 {
        search --no-floppy --set --file $2
        chainloader $2
}
可以启动,但是启动时有暂停显示一个出错画面

不管它,一会儿还是可以进入win10的。不知道是菜单文件问题还是系统问题,这两天win10系统有点慢,经常鼠标不能动

感谢大侠,至此好像等于在不损启动的基础上初步学会照抄grub菜单
应该是这样吧。目前算是XOR嵌套grub,但是grub是DEEPIN的,接下去需要改为全部grub启动


回复

使用道具 举报

80#
 楼主| 发表于 2019-10-15 13:18:13 | 只看该作者
本帖最后由 hilsonma 于 2019-10-15 13:21 编辑
vm669 发表于 2019-10-15 08:41
不要忘了每个windows分区都要配置一个bcd文件,就放在各自的 \Windows\Boot\EFI\ 文件夹

我觉得还是应 ...


正是为了统一的efi区,不管哪台电脑,多次重装,efi区引导都不用变动。

而每次重装系统或每台不同的电脑,bcd都是不同的,所以我建议bcd放在windows分区跟bootmgfw.efi放一起。
efi区的启动文件(无论是xorboot还是grub2)都是引导到windows分区的bootmgfw.efi 这样efi区才不需要每次更新

重装windows搞bcd不过是一个脚本的事,而且在windows分区搞bcd当然要比在efi区搞bcd简便得多。
回复

使用道具 举报

79#
发表于 2019-10-15 08:41:23 | 只看该作者
hilsonma 发表于 2019-10-14 20:27
set root='(hd0,gpt2)' 是指定启动分区
但我的操作通常不用指定分区,都是根据启动文件来查找启动分区 ...

不要忘了每个windows分区都要配置一个bcd文件,就放在各自的 \Windows\Boot\EFI\ 文件夹

我觉得还是应该放在EFI区,系统分区经常重装再搞BCD麻烦
我觉得应该像你之前思路启动文件统一放在EFI区,
各自系统盘怎么折腾都没事,照样能启动到win系统

点评

正是为了统一的efi区,不管哪台电脑,多次重装,efi区引导都不用变动。 而每次重装系统或每台不同的电脑,bcd都是不同的,所以我建议bcd放在windows分区跟bootmgfw.efi放一起。 efi区的启动文件(无论是xorboot还  详情 回复 发表于 2019-10-15 13:18
回复

使用道具 举报

78#
发表于 2019-10-14 20:53:09 | 只看该作者
本帖最后由 vm669 于 2019-10-14 21:15 编辑
hilsonma 发表于 2019-10-14 20:27
set root='(hd0,gpt2)' 是指定启动分区
但我的操作通常不用指定分区,都是根据启动文件来查找启动分区 ...


这个https://bbs.deepin.org/forum.php?mod=viewthread&tid=133379

对头,就是这样,你厉害


我刚好看到这边文章“bootmgfw.efi 任意存放 , 引導不同的 BCD”

但是你更厉害,bootmgfw.efi  这个文件还能改名
回复

使用道具 举报

77#
 楼主| 发表于 2019-10-14 20:27:42 | 只看该作者
本帖最后由 hilsonma 于 2019-10-14 20:37 编辑
vm669 发表于 2019-10-14 20:12
是这样吗?我以为他的 set root='(hd0,gpt2)'
是指定启动分区呢?


set root='(hd0,gpt2)' 是指定启动分区
但我的操作通常不用指定分区,都是根据启动文件来查找启动分区。
win7, win8, win10 都存在 \Windows\Boot\EFI\bootmgfw.efi
分别复制改名或直接改名,
win7的叫做 \Windows\Boot\EFI\boot7.efi
win8的叫做 \Windows\Boot\EFI\boot8.efi
win10的叫做 \Windows\Boot\EFI\boot10.efi

cfg语句为
menuentry "0.Windows 7" "/Windows/Boot/EFI/boot7.efi" --hotkey=0 {
        search --no-floppy --set --file $2
        chainloader $2
}
menuentry "1.Windows 8" "/Windows/Boot/EFI/boot8.efi" --hotkey=1 {
        search --no-floppy --set --file $2
        chainloader $2
}
menuentry "2.Windows 10" "/Windows/Boot/EFI/boot10.efi" --hotkey=2 {
        search --no-floppy --set --file $2
        chainloader $2
}

当然,不要忘了每个windows分区都要配置一个bcd文件,就放在各自的 \Windows\Boot\EFI\ 文件夹

我没有用过deepin,没办法给建议,你设置好了不妨在这里分享一下。

点评

时隔多年再来寻找这段指导,再次感谢大大 目前的本本和台式老机安装deepin和mint已经可以自动安装显卡等驱动,完美支持 目前还是多系统,win10+win8.1VHD+linux, 为了一级菜单多系统启动,再次寻找大大这段回  详情 回复 发表于 2023-4-10 21:27
今天在虚拟机操作,cfg文件改了boot7.efi, BCD也放在C盘的 \Windows\Boot\EFI\ 文件夹 开机还是提示找不到BCD 这是什么情况呢? 其他启动文件用的是你的三分区U盘的grub2  详情 回复 发表于 2019-11-8 09:42
不要忘了每个windows分区都要配置一个bcd文件,就放在各自的 \Windows\Boot\EFI\ 文件夹 我觉得还是应该放在EFI区,系统分区经常重装再搞BCD麻烦 我觉得应该像你之前思路启动文件统一放在EFI区, 各自系统盘怎  详情 回复 发表于 2019-10-15 08:41
对头,就是这样,你厉害 我刚好看到这边文章“bootmgfw.efi 任意存放 , 引導不同的 BCD” 但是你更厉害,bootmgfw.efi 这个文件还能改名  详情 回复 发表于 2019-10-14 20:53
回复

使用道具 举报

76#
发表于 2019-10-14 20:12:04 | 只看该作者
hilsonma 发表于 2019-10-14 18:02
他这两个菜单项是分别引导两个分区内的 /efi/microsoft/boot/bootmgfw.efi,这两个分区应该都是efi分区
...

是这样吗?我以为他的 set root='(hd0,gpt2)'
是指定启动分区呢?

我以后将说分区:EFI,win7,win8,win10,DEEPIN,。。
然后用 set root='(hd0,gpt2)' 这样来指定启动不同系统。
============

如果我想前面三个分别启动7,8,10
对应的cfg中你的这句
menuentry "0.Windows 7" --hotkey=0 {
  chainloader /efi/microsoft/bootx64.efi
}
menuentry "0.Windows 8.1" --hotkey=0 {
  chainloader /efi/microsoft/bootx64.efi
}
menuentry "0.Windows 10" --hotkey=0 {
  chainloader /efi/microsoft/bootx64.efi
}
是不是要三次都是bootx64.efi,那怎么分辨是哪个磁盘分区,不是用et root='(hd0,gpt**)'这句吗?

然后
menuentry "ubuntu16.04 x86" --class ubuntu --class os {
        insmod ext2
        set root='(hd0,gpt5)'
        linux /vmlinuz ro root=/dev/sda5
        initrd /initrd.img
        echo "Start Ubuntu 16.04"
}
这句准备修改一下用来启动deepin


还没搞明白grub2,只是初步想法,

点评

set root='(hd0,gpt2)' 是指定启动分区 但我的操作通常不用指定分区,都是根据启动文件来查找启动分区。 win7, win8, win10 都存在 \Windows\Boot\EFI\bootmgfw.efi 分别复制改名或直接改名, win7的叫做 \Windo  详情 回复 发表于 2019-10-14 20:27
回复

使用道具 举报

75#
 楼主| 发表于 2019-10-14 18:02:26 | 只看该作者
vm669 发表于 2019-10-14 15:20
也学习过 極限驅動 的贴子 Windows定制Grub2(包括BIOS和UEFI、自定义Grub2路徑)http://bbs.wuyou.net/for ...

他这两个菜单项是分别引导两个分区内的 /efi/microsoft/boot/bootmgfw.efi,这两个分区应该都是efi分区
其实没有必要多个efi分区,直接引导每个windows分区的 \Windows\Boot\EFI\bootmgfw.efi 就可以了
比如可以把第一个windows分区的 \Windows\Boot\EFI\bootmgfw.efi 复制一份命名为 boot1.efi
把第二个windows分区的 \Windows\Boot\EFI\bootmgfw.efi 复制一份命名为 boot2.efi
菜单项如下:
menuentry "第一Windows分区" "/Windows/Boot/EFI/boot1.efi" {
        search --no-floppy --set --file $2
        chainloader $2
}
menuentry "第二Windows分区" "/Windows/Boot/EFI/boot2.efi" {
        search --no-floppy --set --file $2
        chainloader $2
}

点评

是这样吗?我以为他的 set root='(hd0,gpt2)' 是指定启动分区呢? 我以后将说分区:EFI,win7,win8,win10,DEEPIN,。。 然后用 set root='(hd0,gpt2)' 这样来指定启动不同系统。 ============ 如果我想  详情 回复 发表于 2019-10-14 20:12
回复

使用道具 举报

74#
发表于 2019-10-14 15:20:08 | 只看该作者
本帖最后由 vm669 于 2019-10-14 15:21 编辑

也学习过 極限驅動 的贴子 Windows定制Grub2(包括BIOS和UEFI、自定义Grub2路徑)http://bbs.wuyou.net/forum.php?mod=viewthread&tid=339411

这篇很好,里面有一个
x64.cfg内容示例:
有挺多系统的,应该都是grub2的的吧,直接参考可以吧

前面一大堆看不懂,后面的
menuentry "启动 delta win7" --class windows --class os {
        insmod ntfs
        set root='(hd0,gpt2)'

        clear
        echo "Start Windows"
        chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "local win7" --class windows --class os {
        insmod ntfs
        set root='(hd0,gpt3)'
       

        clear
        echo "Start Windows"
        chainloader /EFI/Microsoft/Boot/bootmgfw.efi

}

————————————————
版权声明:本文为CSDN博主「Beatfan_N」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010875635/article/details/74289971

这些感觉挺好仿写的,可以套用在你的Uboot的ESP里面grub.cfg吧

点评

他这两个菜单项是分别引导两个分区内的 /efi/microsoft/boot/bootmgfw.efi,这两个分区应该都是efi分区 其实没有必要多个efi分区,直接引导每个windows分区的 \Windows\Boot\EFI\bootmgfw.efi 就可以了 比如可以把  详情 回复 发表于 2019-10-14 18:02
回复

使用道具 举报

73#
发表于 2019-10-14 14:06:00 | 只看该作者
hilsonma 发表于 2019-10-14 10:47
是的,本贴所表述的定制其实就两段代码,一段是编译生成efi文件,一段是编辑配置文件。你可以回头再仔 ...

谢谢你

开始安装虚拟机,准备学习GRUB2
也是想每个文件夹一个启动
回复

使用道具 举报

72#
 楼主| 发表于 2019-10-14 10:47:29 | 只看该作者
本帖最后由 hilsonma 于 2019-10-14 11:05 编辑
vm669 发表于 2019-10-14 09:11
原来的grubx64.EFI还可以在编译来修改grub.cfg文件的位置吗?


是的,本贴所表述的定制其实就两段代码,一段是编译生成efi文件,一段是编辑配置文件。你可以回头再仔细阅读。
最基本的编译参数是 grub-mkimage -O x86_64-efi -p /efi/grub -o grubx64.efi part_msdos fat normal
O 参数是指定用于什么平台,编译时就会使用相应文件夹的模块 (x86_64-efi)
p 参数是指定prefix变量值,安装文件夹,也就是配置文件所在文件夹 (/efi/grub)
o 参数是指定生成的efi文件名 (grubx64.efi)
最后面是内置模块列表 part msdos fat normal 这四个模块是必备的,这样才能在启动时进入正常模式,否则会进入救援模式。

要将配置文件放在deepin文件夹,编译命令类似这样:
grub-mkimage -O x86_64-efi -p /deepin -o grubx64.efi part_msdos fat normal

但是对于linux系统,grub.cfg 是由系统自动生成的,用户不应该编辑修改,用户修改的应该是你之前说的 40_启动菜单 这类用户定义配置。

你可以将自己的prefix值设置为 /efi/grub、/efi/boot、/boot、/boot/grub 等等。前面两个这一类一般是efi平台,后面两个这一类一般是bios平台。

点评

谢谢你 开始安装虚拟机,准备学习GRUB2 也是想每个文件夹一个启动  详情 回复 发表于 2019-10-14 14:06
回复

使用道具 举报

71#
发表于 2019-10-14 09:11:58 | 只看该作者
hilsonma 发表于 2019-10-14 05:20
grub2引导到命令行是因为默认路径找不到grub.cfg
grub.cfg的位置与grubx64.efi的位置无关,是在编译grub ...

原来的grubx64.EFI还可以在编译来修改grub.cfg文件的位置吗?

点评

是的,本贴所表述的定制其实就两段代码,一段是编译生成efi文件,一段是编辑配置文件。你可以回头再仔细阅读。 最基本的编译参数是 grub-mkimage -O x86_64-efi -p /efi/grub -o grubx64.efi part_msdos fat normal  详情 回复 发表于 2019-10-14 10:47
回复

使用道具 举报

70#
 楼主| 发表于 2019-10-14 05:44:56 | 只看该作者
本帖最后由 hilsonma 于 2019-10-14 06:11 编辑
vm669 发表于 2019-10-13 18:50
这两天增加凤凰Os
然后发现grubx64.efi启动需要的grub。cfg是需要放在boot里面
但是深度自己的shimx64.ef ...


xorboot的话请参考下图,这是想象中的设置,我没有测试过,你可以试试,不成功的话就变换一些参数再试



当然,如果不是直接用linux内核方式启动,也可以用 efi 方式启动,先引导grubx64.efi 再由grubx64引导phoenix.

我个人认为,比较简单固定的菜单,使用xorboot比较合适,文件结构也简单;如果要测试各种pe镜像或其他系统,使用grub2会更灵活。
回复

使用道具 举报

69#
 楼主| 发表于 2019-10-14 05:20:41 | 只看该作者
vm669 发表于 2019-10-13 16:07
大大在吗?我用XOR启动的增加一个凤凰系统
引导efi文件grubx64.efi,启动后运行到命令行就没了

grub2引导到命令行是因为默认路径找不到grub.cfg
grub.cfg的位置与grubx64.efi的位置无关,是在编译grubx64.efi时指定的

例如:
  1. grub-mkimage -O x86_64-efi -p /efi/grub -o grubx64.efi part_msdos part_gpt fat exfat ntfs normal chain configfile probe regexp test search wimboot halt reboot help linux
复制代码

上面编译命令中,-p /efi/grub 这个参数就是指定安装路径是 /efi/grub,也就是编译生成的grubx64.efi 使用的配置文件是 /efi/grub/grub.cfg 。如果这个路径的grub.cfg不存在,启动时就会进入命令行。
在grub2命令行中,输入set, 会显示所有grub2环境变量值,其中 prefix= 后面的值就是grub.cfg的默认位置,只要将修改好的grub.cfg放到这个位置就会起作用,不再是直接进入命令行。

点评

原来的grubx64.EFI还可以在编译来修改grub.cfg文件的位置吗?  详情 回复 发表于 2019-10-14 09:11
回复

使用道具 举报

68#
发表于 2019-10-13 18:50:08 | 只看该作者
这两天增加凤凰Os
然后发现grubx64.efi启动需要的grub。cfg是需要放在boot里面
但是深度自己的shimx64.efi的cfg确实放在自己文件夹,就是shimx64.efi和grub.cfg是一起放在deepin文件夹的,是不是这个文件修改过啊?
我后来自己建立一个凤凰文件夹,用深度的shimx64.efi和凤凰的cfg,可以启动凤凰的os

呵呵呵

只是另外的kernel和initrd的命令方式在xor里面没成功,我觉得这个比较直接

点评

xorboot的话请参考下图,这是想象中的设置,我没有测试过,你可以试试,不成功的话就变换一些参数再试 [attachimg]402621[/attachimg]  详情 回复 发表于 2019-10-14 05:44
回复

使用道具 举报

67#
发表于 2019-10-13 16:36:41 | 只看该作者
谢谢,收藏测试
回复

使用道具 举报

66#
发表于 2019-10-13 16:07:52 | 只看该作者
大大在吗?我用XOR启动的增加一个凤凰系统
引导efi文件grubx64.efi,启动后运行到命令行就没了

是那个文件出错呢?

我的grubx64.efi和grub.cfg放在一起


set timeout=6

menuentry ‘Phoenix OS’ --class android-x86 {
search --set=root --file /PhoenixOS/kernel
linux /PhoenixOS/kernel quiet root=/dev/ram0 SRC=/PhoenixOS vga=auto
initrd /PhoenixOS/initrd.img

这个是在deepin的40_启动菜单复制出来的
是语法出错还是iefi文件错误呢?
发现用XORboot的人太少了,网上查找的帮助也太简单了
搞得我都要准备换grub2菜单了

点评

grub2引导到命令行是因为默认路径找不到grub.cfg grub.cfg的位置与grubx64.efi的位置无关,是在编译grubx64.efi时指定的 例如: 上面编译命令中,-p /efi/grub 这个参数就是指定安装路径是 /efi/grub,也就是  详情 回复 发表于 2019-10-14 05:20
回复

使用道具 举报

65#
发表于 2019-10-11 22:03:48 | 只看该作者
先收藏,慢慢消化
回复

使用道具 举报

64#
 楼主| 发表于 2019-10-1 11:00:21 | 只看该作者
本帖最后由 hilsonma 于 2019-10-1 11:11 编辑
lgstd 发表于 2019-10-1 06:17
请教一下,是不是vhd也不能引导?


是的,vhd也不能在自动菜单中一键引导,只能每个vhd都设置用bootmgfw.efi+bcd 引导。
目前自动菜单一键引导的镜像文件就只有wim文件。

当然,grub2可以通过引导bootmgfw.efi 再去引导vhd文件,只是还做不到在自动菜单中一键引导。bios平台可能可以吧,但我在bios平台都是用grub4dos的SISO实现的,没有尝试过bios平台下用grub2.
回复

使用道具 举报

63#
发表于 2019-10-1 06:17:08 | 只看该作者
hilsonma 发表于 2019-9-29 21:20
我下载的pe都能成功启动,你的什么情况我不清楚。
有两点是确定的:
引导程序是64位的,只能引导64位 ...

请教一下,是不是vhd也不能引导?

点评

是的,vhd也不能在自动菜单中一键引导,只能每个vhd都设置用bootmgfw.efi+bcd 引导。 目前自动菜单一键引导的镜像文件就只有wim文件。  详情 回复 发表于 2019-10-1 11:00
回复

使用道具 举报

62#
 楼主| 发表于 2019-9-29 21:20:59 | 只看该作者
本帖最后由 hilsonma 于 2019-9-29 21:43 编辑
zck132 发表于 2019-9-29 19:50
楼主你好,我下载了你那个uboot测试,那个把所有PE放到pe文件夹,自动加载菜单太好用了,可是我测试以前一 ...


我下载的pe都能成功启动,你的什么情况我不清楚。
有两点是确定的:
引导程序是64位的,只能引导64位的pe wim镜像。32位的pe wim镜像要么在bios平台下引导,要么在32位efi平台使用32位引导程序引导。
目前只是使用了wintoflash的wimboot模块实现wim镜像的引导,iso镜像暂未能在grub2下直接引导。

关于添加认证贴中已经说了,请仔细再看。

点评

请教一下,是不是vhd也不能引导?  详情 回复 发表于 2019-10-1 06:17
回复

使用道具 举报

61#
发表于 2019-9-29 19:50:37 | 只看该作者
楼主你好,我下载了你那个uboot测试,那个把所有PE放到pe文件夹,自动加载菜单太好用了,可是我测试以前一直正常的几个PE,很多都启动不了,只有其中一个可以成功,哎,是什么原因啊?其它我只想要在我现在的GRUB2的基础上添加那个微软认证。有没有简单的方法?

点评

[attachimg]401917[/attachimg]  详情 回复 发表于 2019-9-29 21:20
回复

使用道具 举报

60#
发表于 2019-9-25 11:29:09 | 只看该作者
谢谢楼主的分享,学习中
回复

使用道具 举报

59#
发表于 2019-8-25 19:32:39 | 只看该作者
1
回复

使用道具 举报

58#
发表于 2019-8-23 22:00:31 | 只看该作者

W大,回家试了也是同样的错误,和楼上这位仁兄一样grubx64.efi 0k
看了国外的论坛,似乎有个patch要打补丁?请查验下,我也是下的0812的版本的
回复

使用道具 举报

57#
发表于 2019-8-23 21:06:25 | 只看该作者

W大,grub2_0812版在64位windows10_1809中运行build_grub.bat生成 的grubx64.efi 0k,之前版本则正常,请查验
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-7-13 08:55

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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