hyde777 发表于 2016-2-16 09:59:30

grub2能定义一个目录为根目录吗?

比如在UEFI下,引导winpe的efi文件目录为\EFI\Boot\bootx64.efi,想把winpe的所有目录文件移动到一个pe目录里,如\pe\EFI\Boot\bootx64.efi,然后再引导,就是把pe变成类似bat的path那种默认搜索目录

lbw2007 发表于 2016-2-16 11:29:32

在UEFI环境下
关于\EFI\Boot\bootx64.efi
在关于Windows Boot Manager、Bootmgfw.efi、Bootx64.efi、bcdboot.exe 的详解帖子中已经分析过。
bootx64.efi的路径是主板固件定义的。即使可以更改目前主板UEFI固件设置,也无法兼容所有主板。EFI引导文件结构应该是一个通用的规范。

在BIOS环境下有可能,因为BIOS的引导信息都是存到mbr中的

hyde777 发表于 2016-2-18 10:07:44

lbw2007 发表于 2016-2-16 11:29
在UEFI环境下
关于\EFI\Boot\bootx64.efi
在关于Windows Boot Manager、Bootmgfw.efi、Bootx64.efi、bcdb ...

我的意思是bootx64.efi不变,因为是grub2引导,bootx64.efi是grub2的,主板引导grub2后再引导各个目录里的efi,

不然都解压到跟目录太乱了

lbw2007 发表于 2016-2-19 11:04:11

帮顶吧,我也不会。
grub2肯定会有绑定变量的命令的

nf17b 发表于 2016-2-19 18:51:48

本帖最后由 nf17b 于 2016-2-19 19:07 编辑

那個不是可以都放在次目錄下 , 假設都放在 efi 目錄下

efi 目錄結構
K:\EFI
├─931
││931mgr.efi
││bcd
││
│└─zh-tw
│          931mgr.efi.mui
│         
├─932
││932mgr.efi
││bcd
││
│└─zh-tw
│          932mgr.efi.mui
│         
├─a31
││a31mgr.efi
││bcd
││
│└─zh-tw
│          a31mgr.efi.mui
│         
├─a62
││a62mgr.efi
││bcd
││
│└─zh-tw
│          a62mgr.efi.mui
│         
├─a63
││a63mgr.efi
││bcd
││
│└─zh-tw
│          a63mgr.efi.mui
│         
├─b32
││b32mgr.efi
││bcd
││
│└─zh-tw
│          b32mgr.efi.mui
│         
├─b64
││b64mgr.efi
││bcd
││
│└─zh-tw
│          b64mgr.efi.mui
│         
├─boot
││bootia32.efi
││bootx64.efi
││memtestia32.efi
││memtestx64.efi
││mt86.cfg
││grubx64.efi
││
│└─zh-tw
│          bootia32.efi.mui
│          bootx64.efi.mui
│         
├─microsoft
│└─boot
│      │bcd
│      │
│      └─fonts
│            cht_boot.ttf
│            wgl4_boot.ttf
│            
├─s32
││bcd
││s32mgr.efi
││
│└─zh-tw
│          s32mgr.efi.mui
│         
├─s64
││bcd
││s64mgr.efi
││
│└─zh-tw
│          s64mgr.efi.mui
│         
├─w10
││bcd
││w10mgr.efi
││
│└─zh-tw
│          w10mgr.efi.mui
│         
├─w14
││bcd
││w14mgr.efi
││
│└─zh-tw
│          w14mgr.efi.mui
│         
├─w74
││bcd
││w74mgr.efi
││
│└─zh-tw
│          w74mgr.efi.mui
│         
├─w81
││bcd
││w81mgr.efi
││
│└─zh-tw
│          w81mgr.efi.mui
│         
└─w84
    │bcd
    │w84mgr.efi
    │
    └─zh-tw
            w84mgr.efi.mui
            

grub.cfg
if search --file /efi/Microsoft/Boot/bootmgfw.efi ; then
menuentry " 啟動 Windows 硬碟系統" --hotkey="w" {
search -s -f /efi/Microsoft/Boot/bootmgfw.efi
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
fi

menuentry " 執行 BCD x64 選單 " --hotkey="d" {
search -s -f /sources/usbflage
chainloader /efi/b64/b64mgr.efi
}

menuentry " 安裝 7/8.1/10(單一ISO模式) " --hotkey="s" {
search -s -f /sources/usbflage
chainloader /efi/s64/s64mgr.efi
}

if search --file /winsetup/w70/x64/install.wim ; then
menuentry " 安裝 Windows 7(wim) " --hotkey="7" {
search -s -f /sources/usbflage
chainloader /efi/w74/w74mgr.efi
}
else
if search --file /winsetup/w70/x64/install.swm ; then
menuentry " 安裝 Windows 7(swm) " --hotkey="7" {
search -s -f /sources/usbflage
chainloader /efi/w74/w74mgr.efi
}
fi
fi

if search --file /winsetup/w81/x64/install.wim ; then
menuentry " 安裝 Windows 8.1(wim) " --hotkey="8" {
search -s -f /sources/usbflage
chainloader /efi/w84/w84mgr.efi
}
else
if search --file /winsetup/w81/x64/install.esd ; then
menuentry " 安裝 Windows 8.1(esd) " --hotkey="8" {
search -s -f /sources/usbflage
chainloader /efi/w84/w84mgr.efi
}
else
if search --file /winsetup/w81/x64/install.swm ; then
menuentry " 安裝 Windows 8.1(swm) " --hotkey="8" {
search -s -f /sources/usbflage
chainloader /efi/w84/w84mgr.efi
}
fi
fi
fi

if search --file /winsetup/w10/x64/install.wim ; then
menuentry " 安裝 Windows 10(wim) " --hotkey="1" {
search -s -f /sources/usbflage
chainloader /efi/w14/w14mgr.efi
}
else
if search --file /winsetup/w10/x64/install.esd ; then
menuentry " 安裝 Windows 10(esd) " --hotkey="1" {
search -s -f /sources/usbflage
chainloader /efi/w14/w14mgr.efi
}
else
if search --file /winsetup/w10/x64/install.swm ; then
menuentry " 安裝 Windows 10(swm) " --hotkey="1" {
search -s -f /sources/usbflage
chainloader /efi/w14/w14mgr.efi
}
fi
fi
fi

if [ -f /boot/pe/a62.wim ]; then
menuentry " 執行 Windows10 PE(sun00721_10240) " --hotkey="n" {
search -s -f /sources/usbflage
chainloader /efi/a62/a62mgr.efi
}
fi

if [ -f /boot/pe/a63.wim ]; then
menuentry " 執行 Windows10 PE(sun00721_10586) " --hotkey="k" {
search -s -f /sources/usbflage
chainloader /efi/a63/a63mgr.efi
}
fi

if search --file /linux/iso/ubuntu-15.10-desktop-amd64.iso ; then
menuentry " 執行 ubuntu-desktop-amd64 LiveCD 模式" --hotkey="u" {
echo "正在啟動 ubuntu-desktop-amd64 LiveCD 模式,請等待...."
set isofile="/linux/iso/ubuntu-15.10-desktop-amd64.iso"
search -s -f $isofile
loopback loop $isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile locale=zh_TW.UTF-8 quiet splash
initrd (loop)/casper/initrd.lz
}
fi
開機


U盤結構


efi 目錄結構




superium 发表于 2016-3-9 20:12:44

这个可以用grub2循环搜索
但是需要列出所有目录的名字。
好像是带 in a31 a62 的一个语句。
另外一个办法,就是考虑用正则表达式。先 insmod regexp. 然后每个目录按照一定的规则命名,比如a1,a2,a3....

devilma 发表于 2016-3-9 21:46:25

superium 发表于 2016-3-9 20:12
这个可以用grub2循环搜索
但是需要列出所有目录的名字。
好像是带 in a31 a62 的一个语句。


能具体写出来吗?

superium 发表于 2016-3-10 13:18:28

devilma 发表于 2016-3-9 21:46
能具体写出来吗?

就是忘记在哪里看到的,只有点模糊印象,所以才说好像是。
你可以参考下诸如自动编号一类的文章。
页: [1]
查看完整版本: grub2能定义一个目录为根目录吗?