无忧启动论坛

标题: 在 gpt 上运行 legacy+bootmgr+bcd,需要bcd 有特殊设置么? [打印本页]

作者: dos时代菜鸟    时间: 2018-6-21 11:18
标题: 在 gpt 上运行 legacy+bootmgr+bcd,需要bcd 有特殊设置么?
本帖最后由 dos时代菜鸟 于 2018-6-21 21:48 编辑

方案虽然笨,但还算管用,成品在这里
http://bbs.wuyou.net/forum.php?m ... 54&fromuid=1198


一个u盘,做成 gpt 结构 内有fat32主分区和 bios boot partition 并已经成功将 grub2 安装到此u盘,可以在 纯 legacy 电脑上进入 grub2
把以前能够 在 mbr 结构上启动的 u盘上的  win8pe x64 转移到 这个 gpt 的fat32上,发现 启动 wim 出现 0xc000000e 错误,说bcd 不对,

有遇到过这个问题的么?或者怎么弄?

因为 gpt 下的 bios boot partition 可以存放大于 32 的 grub2 的 legacy core.img 。所以才考虑这么弄下。
不会是 bootmgr 不能在gpt 启动吧。

-答案在此-------------------------------------------------------------------
果真 是 legacy的 bootmgr 不能在 gpt 结构上运行。解决的办法就是 把 bootmgr + bcd 封装到一个 vhd 中。vhd 做成 mbr 结构。
向 gpt 结构中划分 biios-boot-partition 分区,并通过 grub2 的 bios-setup 将 grub2 的 boot.img 和 core.img 安装到 gpt 结构上。
用 grub2 虚拟 vhd 成虚拟盘后 调用 vhd中的 bootmgr ,vhd 中的 bcd 不能涉及 [boot] [locate] 的 device ,需要精确指定 wim /vhd 的位置。

当需要 修改 bcd 的时候 ,只需要在win或者pe下 挂载vhd ,修改 vhd 中的bcd 即可。这个办法 适用于 legacy bootmgr 在gpt上运行的几乎所有情况,应该也可以调用 gpt 上的 系统,只要 gpt上的 系统本身支持gpt 。




作者: 窄口牛    时间: 2018-6-21 11:38
nt6不支持在gpt分区上以legacy启动。nt5不限制。
作者: dos时代菜鸟    时间: 2018-6-21 11:53
窄口牛 发表于 2018-6-21 11:38
nt6不支持在gpt分区上以legacy启动。nt5不限制。

原来如此,那 能否 在 grub 下将 gpt 分区 map 成 mbr 再运行呢? pe 已经植入 grub 驱动
作者: 窄口牛    时间: 2018-6-21 11:55
转成mbr就行了2
作者: dos时代菜鸟    时间: 2018-6-21 12:16
窄口牛 发表于 2018-6-21 11:55
转成mbr就行了2

不想转,就像用 gpt
作者: 朱玛12345678    时间: 2018-6-21 12:33
GPT上以Legacy启动需要对0扇区做一个特殊处理,另外WBM没有启动模式限制。
作者: 窄口牛    时间: 2018-6-21 13:21
那你鼓捣吧,坐等处理办法。
作者: dos时代菜鸟    时间: 2018-6-21 13:41
本帖最后由 dos时代菜鸟 于 2018-6-21 13:46 编辑
窄口牛 发表于 2018-6-21 13:21
那你鼓捣吧,坐等处理办法。


方法已经有了,就是 麻烦些。
因为 grub4dos 比 grub2 好用些,尤其是那个 memdisk .所以我 用 grub2 转 grub4dos 。

具体思路如下:
1,u盘分区 gpt 并建立 bios boot partition ,和一个 fat32分区,考虑到 efi 所以做成 fat32
2,用 grub2 install 将 grub2 的 boot.img 和 core.img 安装到 u盘 ,设置好 cfg 让其能够 legacy 方式启动到 grub4dos
3、pe 放置到 fat32分区, 因为 bootmgr 调用 Wim 不能 locate 所以,所以将u盘上 调用 u盘pe 的bcd 修改为精准指向 u盘的那个 pe wim.
4、制作一个 vhd ,结构是 mbr ,把 u盘上的 调用 u盘pe 的 bootmgr+bcd 复制到 vhd 中。
5,启动 u盘,通过 grub4dos 将 vhd 虚拟成硬盘,chainloader vhd上的bootmgr .精准找到 u盘上 的 pe wim 并调用之。

经测试,换电脑也可以。但是 麻烦就麻烦再 第 3步,要求 bcd 修改为 指向 特定u盘上的 特定 wim 。不过,考虑到这个,所以做成 vhd 的,以后可以弄个 批处理 用 diskpart +bcdedit 实现 对 vhd 及其里面的 bcd 进行 自动调整,这样就可以 移植到别的u盘上了。 等有时间了再 研究。

还想说明几点:
u盘 可以用 diskgen 分出2个分区,第一个分区用于存放数据,第二个分区用于 放pe ,u flash 盘 通常不量产,只能为 第一个分区分配盘符,所以,要对 pe 存放区进行数据复制就需要先把 第一个分区 隐藏了,卸掉盘符,再装载 第二个分区 的盘符,在对第二个分区进行 数据复制编辑。然后再改回来,最后还要 再用 grub2-install 进行一次 grub2 的u盘安装,不然,u盘分区 变更以后 grub2引导可能就失灵了。

一点儿设想,关于 pe 如果有 64位的 native.exe ,可以把 能够识别 gpt分区的 pe 制作成 native 模式的 vhd 或者 iso ,native 模式下 再到 gpt 上找 大体积wim装到 native 上。这样 就不用 考虑 vhd 中 的 wim 特定路径的问题了。但是现在看估计 没有 条件做。没有 64位的 native.exe 也没有 native pe 的文件列表。




作者: dos时代菜鸟    时间: 2018-6-21 13:48
朱玛12345678 发表于 2018-6-21 12:33
GPT上以Legacy启动需要对0扇区做一个特殊处理,另外WBM没有启动模式限制。

gpt 的 0 扇区 做什么特殊处理?
另外 wbm 是何物?

作者: freesoft00    时间: 2018-6-21 14:49
本帖最后由 freesoft00 于 2018-6-21 15:14 编辑

自己没有试过,也不太懂。下面不知道是不是。
https://wzyboy.im/post/1049.html
http://ishare.iask.sina.com.cn/f/31mpXWodN5o.html
http://ju.outofmemory.cn/entry/204454
http://blog.sina.com.cn/s/blog_71c391e00101bzt5.html
http://isouth.org/archives/341.html
https://blog.csdn.net/icycolawater/article/details/51242999
https://www.cnblogs.com/donaldjohn/p/6728306.html
http://tieba.baidu.com/p/2436230859
http://www.gnu.org/software/grub ... S-installation.html
https://www.sevenforums.com/inst ... brid-mbrs-duet.html
https://blog.elsdoerfer.name/201 ... rtition-using-bios/
http://reboot.pro/topic/17877-ue ... iboot-usb-harddisk/
http://www.360doc.com/content/16/0308/17/15266069_540529336.shtml
http://tieba.baidu.com/p/3680199178
http://tieba.baidu.com/p/3575701847
作者: dos时代菜鸟    时间: 2018-6-21 15:58
wintoflash 发表于 2018-6-21 14:10
legacy可以直接用wimboot啊
http://ipxe.org/wimboot

多谢,我把 wimboot 给忘了,呵呵,以前倒是用在 ipx 上过。

作者: dos时代菜鸟    时间: 2018-6-21 15:59
freesoft00 发表于 2018-6-21 14:49
自己没有试过,也不太懂。下面不知道是不是。
https://wzyboy.im/post/1049.html
http://ishare.iask.sin ...

多谢 提供,我慢慢研究研究。
作者: phyuzhoukai    时间: 2018-6-22 18:07
本帖最后由 phyuzhoukai 于 2018-6-22 19:06 编辑

好像并不是gpt不支持bootmgr,因为我在没有封装vhd的情况下,能直接在legacy下用grub2引导bootmgr。
但是不知道出了什么问题,有时候会出现0x000000e的错误。

另外可以通过umbr工具直接把grub2安装到gpt的主引导记录,不需要bios-boot-partition。
作者: dos时代菜鸟    时间: 2018-6-22 19:30
phyuzhoukai 发表于 2018-6-22 18:07
好像并不是gpt不支持bootmgr,因为我在没有封装vhd的情况下,能直接在legacy下用grub2引导bootmgr。
但是 ...

感觉应该是 legacy bootmgr+bcd 的方式不能再 gpt 上实现。

我理解,umbr 要依托 grub4dos 0.4.6 才能运行。实现了 启动特定位置的 引导器的 功能。

作者: phyuzhoukai    时间: 2018-6-22 20:21
dos时代菜鸟 发表于 2018-6-22 19:30
感觉应该是 legacy bootmgr+bcd 的方式不能再 gpt 上实现。

我理解,umbr 要依托 grub4dos 0.4.6 才能 ...

但事实是我现在就是用gpt+legacy+grub2+bootmgr+bcd引导的windows,完全能顺利启动。但是有时候格式化、切换EFI/BIOS模式会出现000000e的错误,不知道问题出在哪里。
作者: dos时代菜鸟    时间: 2018-6-22 21:49
本帖最后由 dos时代菜鸟 于 2018-6-22 21:52 编辑
phyuzhoukai 发表于 2018-6-22 20:21
但事实是我现在就是用gpt+legacy+grub2+bootmgr+bcd引导的windows,完全能顺利启动。但是有时候格式化、 ...


你命好,偶尔出问题,我是 上来就出问题。
我的,可能主板 uefi 太老了。

也可能 gpt 存在 bios boot partition 的原因。




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