无忧启动论坛

标题: bcdedit 如何创建EFI 文件引导项? [打印本页]

作者: jneny    时间: 2012-6-8 10:18
标题: bcdedit 如何创建EFI 文件引导项?
我原来天真的认为把.efi文件改名放在\efi\boot\bootx64.efi ,它就会成默认的启动管理器了。事实不是这样。uefi是否有nvram在记录固件引导项?

其实windSLIC 是用一个程序创建的,用bcded修改其中的path值不生效,用bcdedit 复制一个固件应用程序项也行,启动后在Boot menu中能看到。bcdedit 但是依旧无法修改其中的值.
请问有方法修改其它的值 吗?  或者添加efi入口。

测试发现位于{fwbootmgr} 第一的项 会先被启动,想使用grub2.efi来做启动器,现在 的办法。只是把WindSLIC 位置中的bootx64.efi用替换成grub2的文件来启动 来实现开机自启动grub2。   grub2能用chainloader 加载bootmgrfw.efi,所以选择它。
所以请问,如何修改和创建固件应用程序 项?

C:\Users\magic>bcdedit /enum firmware

固件启动管理器
---------------------
标识符                  {fwbootmgr}
displayorder            {c034533c-aeaf-19e1-b862-806e6f6e6963}
                        {c034533e-aeaf-19e1-b862-806e6f6e6963}
                        {c034533a-aeaf-19e1-b862-806e6f6e6963}
                        {c034533b-aeaf-19e1-b862-806e6f6e6963}
                        {c034533d-aeaf-19e1-b862-806e6f6e6963}
timeout                 0

Windows 启动管理器
--------------------
标识符                  {bootmgr}
device                  partition=X:
path                    \EFI\Microsoft\Boot\bootmgfw.efi
default                 {current}
displayorder            {current}

固件应用程序(101fffff)
-------------------------------
标识符                  {c034533a-aeaf-19e1-b862-806e6f6e6963}
description             Optical Disk Drive

固件应用程序(101fffff)
-------------------------------
标识符                  {c034533b-aeaf-19e1-b862-806e6f6e6963}
description             Notebook Hard Drive

固件应用程序(101fffff)
-------------------------------
标识符                  {c034533c-aeaf-19e1-b862-806e6f6e6963}
device                  partition=X:
path                    \EFI\89ddafb2d906a4551dc5c41fa57e8628\BOOTX64.EFI
description             WindSLIC

固件应用程序(101fffff)
-------------------------------
标识符                  {c034533d-aeaf-19e1-b862-806e6f6e6963}
description             Notebook Ethernet

固件应用程序(101fffff)
-------------------------------
标识符                  {c034533e-aeaf-19e1-b862-806e6f6e6963}
device                  partition=X:
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
作者: fujianabc    时间: 2012-6-8 14:52
uefi引导信息(uefi启动菜单)是存在nvram中的,也就是 {fwbootmgr}下面的项,这个bcdedit可以更改。

另外,uefi启动菜单也可以直接通过主板的bios启动顺序设置来改,而不用进入操作系统修改,大部分uefi主板设置都是图形化的,修改起来比bcdedit命令行方便。
作者: jneny    时间: 2012-6-8 20:50
标题: 回复 #2 fujianabc 的帖子
fujianabc的出现总是让我充满希望

我的板子确实不能用bcdedit来编辑。不知道WindSLIC是如何来添加fwbootmgr项的。再称赞下grub2 好用。
作者: fujianabc    时间: 2012-6-9 01:43
不知道你的板子是不是有限制?
另外,我一般还是喜欢在bios设置里面改这个uefi启动菜单,而不是在操作系统中改。
作者: jneny    时间: 2012-6-9 08:30
bcdedit 中新建“固件应用程序  ” 可以吗?  是哪个参数?
之前我做法是/copy 其它项再修改path 选项
作者: fujianabc    时间: 2012-6-9 16:48
原帖由 jneny 于 2012-6-9 08:30 发表
bcdedit 中新建“固件应用程序  ” 可以吗?  是哪个参数?
之前我做法是/copy 其它项再修改path 选项

那你就用bcdedit /copy吧,我也没新建过。

不知道你为什么想用bcdedit来改这个固件菜单?一般我都是在bios设置中修改的,而不是在操作系统中来改
作者: jneny    时间: 2012-6-9 21:40
第一:是习惯用引导器来管理操作系统
第二:安装完LINUX后并不能正确生成UEFI的引导项 (或者说修改nvram)。 没有试过先进的ubuntu。整个UEFI菜单中只有bootmgr和硬盘有关。
作者: fujianabc    时间: 2012-6-9 21:54
原帖由 jneny 于 2012-6-9 21:40 发表
第一:是习惯用引导器来管理操作系统
第二:安装完LINUX后并不能正确生成UEFI的引导项 (或者说修改nvram)。 没有试过先进的ubuntu。整个UEFI菜单中只有bootmgr和硬盘有关。

这个fwbootmgr本来就不是操作系统的引导器,而是efi主板上带的引导程序。
按照正常标准,这个EFI主板上的引导程序在操作系统中也可以修改(而不像bios,必须尽主板bios才能更改启动顺序)。

但看你的描述,bcdedit和linux都改不了你的这个主板引导程序,应该是主板可能没有开放给操作系统,所以你还是进主板设置来改这个fwbootmgr下面的项。而且UEFI主板设置里面应该可以直接选择你要加载的.EFI文件的,比如选择执行grub2.efi
作者: fujianabc    时间: 2012-6-9 21:58
bcdedit列出来的项,fwbootmgr里的那几个项是存在主板nvram中的,其他项还是存在硬盘的bcd文件里的
作者: jneny    时间: 2012-6-10 00:05
是的,看来是板子的限制问题
作者: myBOOT    时间: 2012-7-11 17:51
看来需要有人开发能读主板NVRAM的东西来修改fwbootmgr里的那几个项。
作者: fujianabc    时间: 2012-7-12 15:28
原帖由 myBOOT 于 2012-7-11 17:51 发表
看来需要有人开发能读主板NVRAM的东西来修改fwbootmgr里的那几个项。

bcdedit就能读到,除非你的板子没按标准来
作者: rivulet    时间: 2013-2-21 18:09
用bcdedit /store BCDfile
需要先用diskpart 给windows efi区分配盘符

B:\>bcdedit /store b:\EFI\Microsoft\Boot\BCD /enum

Windows 启动管理器
--------------------
标识符                  {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  en-us
inherit                 {globalsettings}
default                 {default}
resumeobject            {aa0b6361-7c05-11e2-9349-a34517bb1fbe}
displayorder            {default}
toolsdisplayorder       {memdiag}
timeout                 30

Windows 启动加载器
-------------------
标识符                  {default}
device                  partition=C:
path                    \windows\system32\winload.efi
description             Windows 8
locale                  en-us
inherit                 {bootloadersettings}
nointegritychecks       Yes
testsigning             Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \windows
resumeobject            {aa0b6361-7c05-11e2-9349-a34517bb1fbe}
nx                      OptIn
bootmenupolicy          Standard
detecthal               Yes

B:\>

[ 本帖最后由 rivulet 于 2013-2-21 18:20 编辑 ]
作者: edaplayer    时间: 2015-1-22 22:29
经过验证,bcdedit命令必须指定标识符才能修改efi引导项,如下:
bcdedit /set {bootmgr} path \EFI\Boot\BOOTX64.EFI  可成功修改路径。
若使用bcdedit /set {current} path \EFI\Boot\BOOTX64.EFI 是无效的,即使提示操作完成,依然无法修改bootmgr项的efi路径参数
作者: lintrainwy    时间: 2017-3-20 22:58
bcdedit /set {fwbootmgr} default {bootmgr}




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