hp 的笔记本在 efi 模式下是没法修改启动顺序的,无论用什么程序修改都是没人使用 windows 的引导管理器引导,我今天试了一下,将 efi 分区下的 boot 文件夹下的 bootx64.efi 更换成 grub 下的 efi 文件,将我 indows 下的 efi 文件 bootmgfw.efi 也替换成 grub 的 efi 文件,将原本的文件改了个名字为 winbootmgfw.efi ,在 /boot/grub/grub.cfg 下修改了 windows 的引导程序为 chainloader /EFI/Microsoft/Boot/winbootmgfw.efi
这样的话修改开机引导成功,系统默认使用 grub 引导, windows 引导项也可以正常使用。
但是根据 grub 的说明显示官方不建议直接修改 grub.cfg 文件,但是我在 defaults 下以及 grub.d 下均没有找到如何修改 chainloader 这个项目的地方,请各位帮忙,谢谢
1
whatot 2015-12-20 21:07:14 +08:00
安装 grub 到 efi 里,然后通过 grub-mkconfig 生成 grub.cfg
|
2
styx 2015-12-20 21:14:56 +08:00
/etc/grub.d/40_custom 最后加上用来启动 windows 的 menuentry ,然后 debian 的话用 update-grub ,其他发行版(如 Gentoo )可以用 grub2-mkconfig -o /boot/grub/grub.cfg ,这样就会自动把 custom 里面的加进去
|
3
Solitudechn OP @whatot 抱歉,你可能没有动我的意思,我是正常有 grup.cfg 但是我要修改源文件...
|
4
Solitudechn OP @styx 不是,我的意思是,我修改了 efi 下 windows 引导文件的名称,将引导文件的名字改为了 winbootmgfw.efi ,使用默认生成的配置文件,扫描出来的 windows 引导文件为 bootmgfw.efi ,我想问得是在哪里可以修改这个。先说一下我是 debian 系统。
|
5
whatot 2015-12-21 00:48:03 +08:00
arch 里面代码在 /etc/grub.d/30_os-prober , debian 可以类推。
``` efi) EFIPATH=${DEVICE#*@} DEVICE=${DEVICE%@*} onstr="$(gettext_printf "(on %s)" "${DEVICE}")" cat << EOF menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --class windows --class os \$menuentry_id_option 'osprober-efi-$(grub_get_device_id "${DEVICE}")' { EOF save_default_entry | sed -e "s/^/\t/" prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/" cat <<EOF chainloader ${EFIPATH} } EOF ;; ``` |
6
pynix 2015-12-21 01:56:08 +08:00
直接使用 efi 引导 kernel
|
7
comicfans44 2015-12-21 07:56:28 +08:00
可以尝试把 64bit efi shell 拷贝到 u 盘 efi/boot/bootx64.efi ,用 u 盘启动,执行 bcfg 命令或可直接修改 efi 启动顺序
|
8
styx 2015-12-21 09:38:33 +08:00
@Solitudechn 你的意思就是你想要重命名 grub 脚本自动生成的 chainloader 引导文件是吧?那 debian 的话用 os_prober 可以用 @whatot 的方法,也可以我说的 40_custom 的方法,自己手写一个 menuentry ,当然也可以自己手写 chainloader 咯。
|
9
Solitudechn OP @whatot 你好我看见了这段代码,但是我不能知道${EFIPATH}在哪里修改
|
10
Solitudechn OP @styx 也就是说,我可以自己写一个这样的例子?请问有没有范文?
|
11
BOYPT 2015-12-21 10:07:56 +08:00
其实用 reFind 来做 EFI 引导会比较专业点。
|
12
styx 2015-12-22 00:32:10 +08:00
@Solitudechn 回复有点晚,不知道你解决没有。就是楼上的代码改一下
menuentry 'WIndows 10' --class windows --class os { insmod part_dos insmod ntfs insmod part_gpt set root='hd0,gpt1' chainloader /EFI/Microsoft/Boot/bootmgfw.efi } insmod 看需要增减, root 的话你可以进 grub rescue 模式下试探一下或者大概也能才出来 |