问一下关于修改 grub2efi 引导文件的事 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Solitudechn
V2EX    Linux

问一下关于修改 grub2efi 引导文件的事

  •  
  •   Solitudechn 2015 年 12 月 20 日 978 次点击
    这是一个创建于 3753 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 这个项目的地方,请各位帮忙,谢谢

    12 条回复    2015-12-22 00:32:10 +08:00
    whatot
        1
    whatot  
       2015 年 12 月 20 日
    安装 grub 到 efi 里,然后通过 grub-mkconfig 生成 grub.cfg
    styx
        2
    styx  
       2015 年 12 月 20 日
    /etc/grub.d/40_custom 最后加上用来启动 windows 的 menuentry ,然后 debian 的话用 update-grub ,其他发行版(如 Gentoo )可以用 grub2-mkconfig -o /boot/grub/grub.cfg ,这样就会自动把 custom 里面的加进去
    Solitudechn
        3
    Solitudechn  
    OP
       2015 年 12 月 20 日
    @whatot 抱歉,你可能没有动我的意思,我是正常有 grup.cfg 但是我要修改源文件...
    Solitudechn
        4
    Solitudechn  
    OP
       2015 年 12 月 20 日
    @styx 不是,我的意思是,我修改了 efi 下 windows 引导文件的名称,将引导文件的名字改为了 winbootmgfw.efi ,使用默认生成的配置文件,扫描出来的 windows 引导文件为 bootmgfw.efi ,我想问得是在哪里可以修改这个。先说一下我是 debian 系统。
    whatot
        5
    whatot  
       2015 年 12 月 21 日
    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
    ;;
    ```
    pynix
        6
    pynix  
       2015 年 12 月 21 日
    直接使用 efi 引导 kernel
    comicfans44
        7
    comicfans44  
       2015 年 12 月 21 日
    可以尝试把 64bit efi shell 拷贝到 u 盘 efi/boot/bootx64.efi ,用 u 盘启动,执行 bcfg 命令或可直接修改 efi 启动顺序
    styx
        8
    styx  
       2015 年 12 月 21 日
    @Solitudechn 你的意思就是你想要重命名 grub 脚本自动生成的 chainloader 引导文件是吧?那 debian 的话用 os_prober 可以用 @whatot 的方法,也可以我说的 40_custom 的方法,自己手写一个 menuentry ,当然也可以自己手写 chainloader 咯。
    Solitudechn
        9
    Solitudechn  
    OP
       2015 年 12 月 21 日 via Android
    @whatot 你好我看见了这段代码,但是我不能知道${EFIPATH}在哪里修改
    Solitudechn
        10
    Solitudechn  
    OP
       2015 年 12 月 21 日 via Android
    @styx 也就是说,我可以自己写一个这样的例子?请问有没有范文?
    BOYPT
        11
    BOYPT  
       2015 年 12 月 21 日
    其实用 reFind 来做 EFI 引导会比较专业点。
    styx
        12
    styx  
       2015 年 12 月 22 日
    @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 模式下试探一下或者大概也能才出来
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3224 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 13:55 PVG 21:55 LAX 06:55 JFK 09:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86