搜索找到这个帖子,学到了一些efi启动的相关知识,谢谢几位大大的留言 |
这个路径不常见啊。 /efi/Windows10/ |
自己到控制台下ls看看,应该是怎么描述盘区,那种方式有可能会被再接进来的盘区改变,所以不太好用。 |
多谢hilsonma老师的解释,很清楚。这么晚了还没睡啊?注意身体! |
扇区启动有它的优点,但技术性太强了。 uefi基于文件启动是一个进步。 所以建议不再惦记扇区呀盘符呀,找到启动文件,启动它,这就OK了。 就连bios平台我都做了这样的转变,使用wee(硬盘)或fbinst(u盘)做为主引导(mbr),然后寻找grldr引导,再寻找其他启动文件引导。 |
ma__jjuunn 发表于 2019-11-19 22:57 第一个,意思是启动 (hd0,gpt4)的0扇区开始的一个扇区 扇区启动属于实模式,只能是bios启动。gpt硬盘一般只能基于文件的uefi启动,不能扇区启动,所以无效。 第二个,按菜单看是没有问题的,但bootmgr是属于bios平台的,如果是在uefi平台下当然无效。 第三个,意思是启动 (hd0,gpt1)/Efi/Windows10/boot/bootmgfw.efi 看着也没有问题,但要确定存在 (hd0,gpt1)/Efi/Windows10/boot/bootmgfw.efi 一般我不会自己指定设备,让grub2自己寻找,这样比较稳妥,如 search -s -f /Efi/Windows10/boot/bootmgfw.efi chainloader /Efi/Windows10/boot/bootmgfw.efi 这样grub2会将找到指定文件的第一个设备设为root,然后启动指定文件。 当使用u盘启动时,系统会将这个u盘当做hd0,其他u盘hd1,hd2等等,然后才是硬盘 当使用硬盘启动时,系统会将这个硬盘当做hd0,其他硬盘hd1,hd2等等,然后才是u盘 还有可能固态硬盘的情况。 还有mbr硬盘的主分区和逻辑分区,一不小心就会搞错分区编号。 所以我一般不指定设备,让grub2自己查找。 |
按照各位老师的指导,已经成功启动。 请教 menuentry "test" --class windows { set root='hd0,gpt4' chainloader +1 } menuentry "test2" --class windows { search -s -f /bootmgr chainloader /bootmgr } menuentry "test3" --class windows { set root='hd0,gpt1' chainloader /Efi/Windows10/boot/bootmgfw.efi } 这三个菜单为什么无效呢?是定位不到分区吗? |
hilsonma 发表于 2019-11-19 00:47 很棒的菜单模板! |
本帖最后由 ma__jjuunn 于 2019-11-19 08:20 编辑 多谢各位的耐心解释,有空我再试一下,正好对$2这个参数搞不懂呢,谢谢7楼的兄弟解释这么清楚。windows10这个目录是我自己把微软microsoft的目录改名的,原来的microsoft目录的bootmgfw.efi我用rEFInd替换了,开机windows boot manager默认就变成rEFInd引导了,发现这个rEFInd自动探测功能很强大,本机的win10、mint、macos都能识别出来,而且能启动。 后面有时间用wintoflash老大的最新版自己定制一个文件试一下。像我这样一直潜水的菜鸟水平不高,平时有空就喜欢折腾一下,遇到自己解决不了的问题能得到大家的帮助真的太好了,。按理说不应该是gpt识别不了,因为命令行下能看到分区,而且mint能启动,估计还是菜单错了。 |
menuentry "【 启动已安装的 Microsoft windows系统 】" --class win { search -s -f /efi/Microsoft/Boot/bootmgfw.efi chainloader /efi/Microsoft/Boot/bootmgfw.efi } |
我一般这样引导windows: menuentry "Windows" "/Windows/Boot/EFI/bootmgfw.efi" { search --no-floppy --set --file $2 chainloader $2 } 如果要引导efi区的efi文件: menuentry "Windows" "/efi/microsoft/boot/bootmgfw.efi" { search --no-floppy --set --file $2 chainloader $2 } 以上变量$2 是指menuentry 后面的第2个参数,使用这个变量可以避免重复输入路径。你要确定放在这个位置的路径是真实存在。一般是不存在/efi/Windows10/boot/bootmgfw.efi这样的,除非你自己专门建立。 如果你的grub2启动文件(efi文件)没有包含part_gpt模块而要识别gpt硬盘,就要加上这个模块,如 menuentry "Windows" "/Windows/Boot/EFI/bootmgfw.efi" { insmod part_gpt search --no-floppy --set --file $2 chainloader $2 } 这时,grub2安装文件夹中要有part_gpt.mod这个模块文件。 windows是不会在ext2分区的,所以引导windows不需要insmod ext2 你的菜单中有这句(hd0,gpt1)/efi/Windows10/boot/bootmgfw.efi 都没有包含grub2命令也是错的。 |
期待大神的再次出现,先感谢! |
menuentry "Linux Mint" --class linuxmint --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-34ec19bb-4b1f-4e22-b252-5238c010cb45' { insmod part_gpt insmod ext2 set root='hd0,gpt6' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 34ec19bb-4b1f-4e22-b252-5238c010cb45 else search --no-floppy --fs-uuid --set=root 34ec19bb-4b1f-4e22-b252-5238c010cb45 fi linux /boot/vmlinuz-4.15.0-38-generic root=UUID=34ec19bb-4b1f-4e22-b252-5238c010cb45 ro quiet splash $vt_handoff initrd /boot/initrd.img-4.15.0-38-generic } 我的电脑上还装了一个 Linux Mint,这个菜单是ubuntu(以前装的)系统生成的菜单,我直接copy过来的,可以执行,能启动到Mint系统。说明Grub2是可以找到gpt分区的。是不是缺什么模块? |
没有看到你的Grub2 引导efi分区bootmgfw.efi菜单。谁都不知道问题在哪里, |
自己模仿的菜单执行不了,总是出错 怎么模仿的 出什么错 |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.