无忧启动论坛

标题: 我想在grub2的菜单里加上没发现\EFI\microsoft\boot\bootmgfw.efi就执行exit命令 [打印本页]

作者: 2011qt    时间: 2019-12-4 15:40
标题: 我想在grub2的菜单里加上没发现\EFI\microsoft\boot\bootmgfw.efi就执行exit命令
本帖最后由 2011qt 于 2019-12-5 10:45 编辑

我想在grub2的菜单里加上没发现\EFI\microsoft\boot\bootmgfw.efi就执行exit命令
求助各位老大给个菜单

谢谢hilsonmawintoflash两位老师的帮助
菜单如下:
menuentry "exit"  "/EFI/boot/bootx64.efi" --hotkey=0 {
if        search -n -s -f $2 --hint=hd1,1 ; then
          chainloader $2
  else
          exit
fi
}

http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1的方案,grub.cfg最后加exit,可以绕过安全启动验证。在exit后可进入下一启动设备启动

作者: hilsonma    时间: 2019-12-4 16:25
不知你要exit到哪里?
现在的grub2好象没有exit命令。
而grub2找不到你要引导的文件就会自动返回菜单的。
当然,在找不到的情况下会查找软驱的,这时grub2会显得有点迟钝,因为在查找软驱中,所以如果有可能找不到的情形下一般建议加上--no-floppy参数防止查找软驱。如果确定硬盘有此文件只是想自动查找分区那就不需使用--no-floppy参数。
作者: 2011qt    时间: 2019-12-4 16:51
hilsonma 发表于 2019-12-4 16:25
不知你要exit到哪里?
现在的grub2好象没有exit命令。
而grub2找不到你要引导的文件就会自动返回菜单的。 ...

在grub2的提示符下用exit可以退出uefi环境,想在菜单里可以退出uefi环境
作者: hilsonma    时间: 2019-12-4 17:27
2011qt 发表于 2019-12-4 16:51
在grub2的提示符下用exit可以退出uefi环境,想在菜单里可以退出uefi环境

menuentry "Windows" "\EFI\microsoft\boot\bootmgfw.efi" {
        if search -n -s -f $2;then
                chainloader $2
        else
                exit
        fi
}
作者: 2011qt    时间: 2019-12-4 17:30
hilsonma 发表于 2019-12-4 17:27
menuentry "Windows" "\EFI\microsoft\boot\bootmgfw.efi" {
        if search -n -s -f $2;then
                chainload ...

谢谢,我试试去!!!
作者: 2011qt    时间: 2019-12-4 17:53
hilsonma 发表于 2019-12-4 17:27
menuentry "Windows" "\EFI\microsoft\boot\bootmgfw.efi" {
        if search -n -s -f $2;then
                chainload ...

直接用grubx64.efi改名bootX64.efi可以
用其他efi引导grubx64.efi不可以,exit似乎退出了当前的efi
想通过http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1此贴的方式绕过安全验证引导grubx64.efi后实现退出efi环境请问有什么办法吗
作者: hilsonma    时间: 2019-12-4 18:05
2011qt 发表于 2019-12-4 17:53
直接用grubx64.efi改名bootX64.efi可以
用其他efi引导grubx64.efi不可以,exit似乎退出了当前的efi
想 ...

在那个方案的grub.cfg里面也加exit
好象原来是
rmmod chain
insmod /boot/grub/chain.mod
chainloader /EFI/BOOT/grubx64.efi
boot
改成
rmmod chain
insmod /boot/grub/chain.mod
chainloader /EFI/BOOT/grubx64.efi
exit

或者找一个进efishell的efi文件代替前面的exit.
作者: wintoflash    时间: 2019-12-4 18:06
本帖最后由 wintoflash 于 2019-12-4 18:22 编辑
2011qt 发表于 2019-12-4 17:53
直接用grubx64.efi改名bootX64.efi可以
用其他efi引导grubx64.efi不可以,exit似乎退出了当前的efi
想 ...

啥叫"退出efi环境"?
exit是退出当前grub环境。
作者: 2011qt    时间: 2019-12-4 18:46
hilsonma 发表于 2019-12-4 18:05
在那个方案的grub.cfg里面也加exit
好象原来是
rmmod chain

谢谢,明天再试试
作者: hilsonma    时间: 2019-12-4 18:56
wintoflash 发表于 2019-12-4 18:06
啥叫"退出efi环境"?
exit是退出当前grub环境。

他的意思是退出grub2到efishell,
作者: 2011qt    时间: 2019-12-4 19:04
wintoflash 发表于 2019-12-4 18:06
啥叫"退出efi环境"?
exit是退出当前grub环境。

确实不能这么说,应该是退出grub环境,平时都是搬的大神们的东西直接用,里面的内容完全不懂。
其实就是想实现efi启动u盘后默认转硬盘启动,可是硬盘分区又不是gpt的没法从efi引导,所以就想在此时退出grub2,从而退出efi环境。技嘉主板一般是默认从u盘efi启动,装完系统还要在旁边等着,按照hilsonma大神的菜单exit后直接从硬盘(mbr)分区启动了,虽然不清楚之间的过程,但还是实现了需要的效果,现在只差能不能绕过安全验证了
作者: hilsonma    时间: 2019-12-4 19:21
本帖最后由 hilsonma 于 2019-12-4 19:36 编辑
2011qt 发表于 2019-12-4 19:04
确实不能这么说,应该是退出grub环境,平时都是搬的大神们的东西直接用,里面的内容完全不懂。
其实就是 ...

不是gpt也可以efi引导的啊,我的就是mbr硬盘,uefi引导。
按你前面的描述,"在grub2的提示符下用exit可以退出uefi环境",我试了,是退出grub2,到了efishell。
只要是uefi引导,是不会退出uefi环境的,起码目前做不到,本论坛好象有贴子讨论类似问题,现在一时间找不到这个贴子,但我印象中中见过,uefi启动后进入模拟bios环境,好象有人在尝试,现在还未实现。也有人说应该不能实现,因为bios启动基于中断,而uefi平台没有这些。
大体意思是这样,详细的我也不了解,我对这些没有多大兴趣。

作者: 2011qt    时间: 2019-12-4 19:31
hilsonma 发表于 2019-12-4 19:21
不是gpt也可以efi引导的啊,我的就是mbr硬盘,uefi引导。

grub2的菜单是怎么怎么写的?
作者: 2011qt    时间: 2019-12-4 19:32
2011qt 发表于 2019-12-4 19:31
grub2的菜单是怎么怎么写的?

论坛里翻了好久都没找到
作者: 2011qt    时间: 2019-12-4 19:54
hilsonma 发表于 2019-12-4 19:21
不是gpt也可以efi引导的啊,我的就是mbr硬盘,uefi引导。
按你前面的描述,"在grub2的提示符下用exit可 ...

我的电脑在执行exit后从mbr硬盘启动了,会不会是bios认为第一启动失败尝试下一个启动了(纯属臆测)
作者: hilsonma    时间: 2019-12-4 20:44
本帖最后由 hilsonma 于 2019-12-4 20:48 编辑
2011qt 发表于 2019-12-4 19:54
我的电脑在执行exit后从mbr硬盘启动了,会不会是bios认为第一启动失败尝试下一个启动了(纯属臆测)

哦,我明白了。
那是因为你的uefi主引导是grub2,退出grub2就等于到了主板uefi,主板uefi就按照启动序列进入下一个启动。
我刚才是用qemu试的,退出grub2后下一启动是bios boot,可能因为我在uefi平台中,bios boot失败,就到了ipxe,再失败,最后到了efishell,所以我以为退出grub2就到了efishell.

作者: hilsonma    时间: 2019-12-4 20:57
2011qt 发表于 2019-12-4 19:31
grub2的菜单是怎么怎么写的?

mbr硬盘实现efi引导不是单纯通过grub2菜单的
先要有一个fat主分区,这个分区我会从mbr硬盘的尾部分出,我试过从前面分出的话会影响系统识别mbr硬盘。
然后用diskgenius将这个fat主分区的分区参数改为EF,我试过使用傲梅分区助手修改不能实现uefi启动。
这样建立了efi分区后再将启动文件放到这个分区,重新启动就会识别为uefi引导了。
作者: 2011qt    时间: 2019-12-4 21:19
hilsonma 发表于 2019-12-4 20:57
mbr硬盘实现efi引导不是单纯通过grub2菜单的
先要有一个fat主分区,这个分区我会从mbr硬盘的尾部分出, ...

哦,我还以为efi引导的mbr。我的优盘就是mbr分区,可以efi引导的。
作者: hilsonma    时间: 2019-12-4 22:45
2011qt 发表于 2019-12-4 21:19
哦,我还以为efi引导的mbr。我的优盘就是mbr分区,可以efi引导的。

U盘是mbr分区,但是分区格式是FAT格式的,或者有一个主分区是FAT格式的,这个FAT主分区上放有uefi启动文件,那么主板uefi就会将它识别为uefi启动盘并使用FAT主分区上的启动文件引导。
注意efi引导的是这个u盘上的fat主分区里的efi文件,而不是mbr.
如果是传统引导方式引导U盘,引导的才是这个U盘的mbr.
是uefi引导还是传统引导,取决于你开机时的选择,开机启动菜单上以UEFI:开头的菜单项是uefi引导,开头没有UEFI:而直接是磁盘型号的就是传统引导。
作者: 2011qt    时间: 2019-12-5 08:51
hilsonma 发表于 2019-12-4 22:45
U盘是mbr分区,但是分区格式是FAT格式的,或者有一个主分区是FAT格式的,这个FAT主分区上放有uefi启动文 ...

大致明白你的意思了!!谢谢!!!
作者: 2011qt    时间: 2019-12-5 08:54
hilsonma 发表于 2019-12-4 18:05
在那个方案的grub.cfg里面也加exit
好象原来是
rmmod chain

刚刚试了,直接就退出grub了,不能进我的菜单
作者: 2011qt    时间: 2019-12-5 09:45
hilsonma 发表于 2019-12-4 18:05
在那个方案的grub.cfg里面也加exit
好象原来是
rmmod chain

用了wintoflash大大的http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1方案直接在boot后加了exit可以了。
再问一下,search 加什么参数可以只搜固定硬盘的或者不搜usb设备的
作者: wintoflash    时间: 2019-12-5 09:57
2011qt 发表于 2019-12-5 09:45
用了wintoflash大大的http://bbs.wuyou.net/forum.php?mod=viewthread&tid=416924&extra=page%3D1方案直 ...

没有这种功能。U盘和固定硬盘区分不出来。
不过可以用 --hint 参数指定搜索到多个设备时优先考虑的设备。
以下示例我没有测试过,不保证可行。
例如优先hd1,1
search -s --file=/aaa.efi --hint=hd1,1
优先hd1
search -s --file=/aaa.efi --hint=hd1,
作者: 2011qt    时间: 2019-12-5 10:06
wintoflash 发表于 2019-12-5 09:57
没有这种功能。U盘和固定硬盘区分不出来。
不过可以用 --hint 参数指定搜索到多个设备时优先考虑的设备 ...

谢谢wintoflash大的回复,--hint=hd1,1 是不是第一硬盘的第一分区,如果搜到多个设备,而hd1,1 没有搜索的文件会怎样
作者: wintoflash    时间: 2019-12-5 10:08
2011qt 发表于 2019-12-5 10:06
谢谢wintoflash大的回复,--hint=hd1,1 是不是第一硬盘的第一分区,如果搜到多个设备,而hd1,1 没有搜索 ...

hd1,1是第二硬盘的第一分区
hd0,1是第一硬盘的第一分区
因为我觉得U盘启动,U盘一般是hd0。
具体怎么样,我也不知道,因为没用过,官方也没有文档。
作者: 2011qt    时间: 2019-12-5 10:10
wintoflash 发表于 2019-12-5 10:08
hd1,1是第二硬盘的第一分区
hd0,1是第一硬盘的第一分区
因为我觉得U盘启动,U盘一般是hd0。

好的,谢谢,我试试看!
作者: 2011qt    时间: 2019-12-5 10:34
wintoflash 发表于 2019-12-5 10:08
hd1,1是第二硬盘的第一分区
hd0,1是第一硬盘的第一分区
因为我觉得U盘启动,U盘一般是hd0。

经测试可行,hd1,1没有搜索的文件时会按照搜索到的原顺序启动
作者: hilsonma    时间: 2019-12-5 15:58
本帖最后由 hilsonma 于 2019-12-5 16:00 编辑

我真的不明白你为什么非要搞个退出当前启动尝试下一个启动。
按你的菜单要求是找不到\EFI\microsoft\boot\bootmgfw.efi就尝试下一个启动,其实你还是要启动windows的,是吧?只是找不到efi分区的bootmgfw.efi引导就想转到传统引导bootmgr.

如果是这样的话,还不如不找\EFI\microsoft\boot\bootmgfw.efi,直接找到 \Windows\Boot\EFI\bootmgfw.efi这样就能成功引导了,只是要将bcd复制一份放在\Windows\Boot\EFI

也就是说不管你是从U盘还是从硬盘启动,只要是uefi平台使用grub2启动,都可以这样引导硬盘上的windows系统:
menuentry "Windows" "/Windows/Boot/EFI/bootmgf.efi" {
        search -s -f $2
        chainloader $2
}

当然,要将c:\boot\bcd 复制一份放到 c:\windows\boot\efi\

作者: 2011qt    时间: 2019-12-5 17:07
hilsonma 发表于 2019-12-5 15:58
我真的不明白你为什么非要搞个退出当前启动尝试下一个启动。
按你的菜单要求是找不到\EFI\microsoft\boot\ ...

系统是安装在mbr分区,安装win7和xp似乎这样不行吧,即使win7可以也要拷贝文件,就因为懒才搞这个菜单,要拷贝文件就不能懒了,我已经把找文件这个判断给去掉了,直接就弄了个exit,另外加了个找其他文件的判断,装系统前默认进pe,系统装好后默认exit




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3