captain_g 发表于 2014-11-12 09:51:48

grldr + wimboot

试用 2014-11-10 0.46a 版的 grldr
在菜单中通过
kernel /boot/wimboot
initrd @bcd=/boot/bcd @boot.sdi=/boot/boot.sdi @bootmgr=/boot/bootmgr @boot.wim=/boot/WIN8164PE.WIM
启动 U 盘可见分区中 WIM 格式的 WIN8164 PE 成功。
如果 bcd 中没有其他选项,则在以 8M 间隔读完 WIN8164PE.WIM 文件后,应该是直接加载进入 PE 系统;
但是,我的 bcd 文件中不止一个选项。实测时,在读完 WIN8164PE.WIM 后,出现了选项菜单,这时我可以选择进入(其他) PE 系统。
我的想法是:是否可以不先读取 WIM 文件。

另外,尝试用这样的菜单命令进行网启,但没有成功。在成功读完 WIM 文件后,客户端屏幕提示 PXE UNLOADED,再无其他反应,只能 RESET 重启。

captain_g 发表于 2014-11-12 11:13:09

谢谢 chenall !我再仔细研究一下。

eonion 发表于 2014-11-12 11:12:19

沙发啊,支持一个,学习了。

chenall 发表于 2014-11-12 10:25:12

用wimboot应该和位置无关呀,只要grub4dos能访问到的就可以了比如fb上面也是一样的.

用wimboot建议使用未经修改的BCD文件.直接从光盘提取的.另外用WIMBOOT
wimboot 支持指定 index,这样就可以把多个WIM PE整在一个WIM上面,通过指定index 来启动.

用WIMBOOT就是可以简化WIMPE的启动,不需要修改BCD文件等,只要处理好WIM文件就行了.

chenall 发表于 2014-11-13 08:54:41

zhaohj 发表于 2014-11-13 08:32
使用win8原版的bcd、boot.sdi、bootmgr ,也无法进入PE,虚拟机自动重启了。能见到加载的进度条,
:w8pe
...

我用QEMU测试正常,不过我是使用GRUB4DOS测试的.
WIN8的BCD/BOOTMGR/BOOT.SDI + WIN7PE

2011bm 发表于 2014-11-16 13:06:07

captain_g 发表于 2014-11-16 12:41
修改过的BOOTMGR

感谢提供,除bbb外其他几个bcg等等文件能否一起分享?

zhaohj 发表于 2014-11-13 08:32:27

本帖最后由 zhaohj 于 2014-11-13 08:45 编辑

使用win8原版的bcd、boot.sdi、bootmgr ,也无法进入PE,虚拟机自动重启了。能见到加载的进度条,
:w8pe
kernel http://${next-server}:81/wimboot pause
initrd http://${next-server}:81/boot/bcd bcd
initrd http://${next-server}:81/boot/boot.sdi boot.sdi
initrd http://${next-server}:81/bootmgr bootmgr
initrd http://${next-server}:81/w8pe/w8pe1.wim boot.wim
boot

sratlf 发表于 2014-11-12 18:39:01

chenall 发表于 2014-11-12 18:08
估计WIMBOOT不支持这些修改的特殊BCD/BOOTMGR

建议直接使用原版BCD+BOOTMGR

不同版本能混用吗比如win7的bcd+bootmgr启动win8的wim

chenall 发表于 2014-11-12 18:08:57

zhaohj 发表于 2014-11-12 17:40
:w8pe
kernel http://${next-server}:81/wimboot
initrd http://${next-server}:81/w8pe/bcd w8pe/bc ...

估计WIMBOOT不支持这些修改的特殊BCD/BOOTMGR

建议直接使用原版BCD+BOOTMGR

zhaohj 发表于 2014-11-12 17:40:55

本帖最后由 zhaohj 于 2014-11-12 17:45 编辑

:w8pe
kernel http://${next-server}:81/wimboot
initrd http://${next-server}:81/w8pe/bcd w8pe/bcd
initrd http://${next-server}:81/w8pe/w8pe.sdi w8pe/w8pe.sdi
initrd http://${next-server}:81/w8pe/W8BCD bootmgr.exe
initrd http://${next-server}:81/w8pe/w8pe1.wim w8pe/w8pe1.wim
boot
与上图一样效果
是否是这个bcd只能包含wim文件的菜单?
原来的bcd是这样生成的:
echo off

set d01=Windows8 PE (w8pe.wim)by one1
set f01=ramdisk=\w8pe\W8pe.WIM,{ramdiskoptions}

set d02=Windows8 PE (w8pe1.wim) by one2
set f02=ramdisk=\w8pe\W8pe1.WIM,{ramdiskoptions}

set d03=Windows8 PE (w8pe2.wim) by coolg
set f03=ramdisk=\w8pe\W8pe2.WIM,{ramdiskoptions}

set d04=grub4dos
set f04=\grldr

set d05=Local system
set f05=\boot\startrom.com

set d06=mem test
set f06=\boot\memtest.exe

set d00=pxelinux.0 (linux)
set f00=\pxelinux.0

del bcd
bcdedit /createstore bcd

bcdedit /store bcd /create {bootmgr} /d "Windows Boot Manager"
bcdedit /store bcd /set {bootmgr} timeout 10
rem bcdedit /store bcd /set {bootmgr} graphicsmodedisabled yes
bcdedit -store bcd /set {bootmgr} locale zh-CN
rem 数字签名
bcdedit /store bcd /set {bootmgr} nointegritychecks yes

bcdedit /store bcd /create {ramdiskoptions}
bcdedit /store bcd /set {ramdiskoptions} ramdisksdidevice boot
bcdedit /store bcd /set {ramdiskoptions} ramdisksdipath \w8pe\w8pe.sdi
rem TFTP传输块大小
rem bcdedit /store bcd /set {ramdiskoptions} ramdisktftpblocksize 2048
rem TFTP窗口大小
rem bcdedit /store bcd /set {ramdiskoptions} ramdisktftpwindowsize 100

for /f "tokens=1,2 delims={}" %%i in ('Bcdedit -store bcd -create /d "%d01%" /application osloader ') do SET GUID1=%%j
bcdedit -store bcd /set {%GUID1%} systemroot\windows
bcdedit -store bcd /set {%GUID1%} path\windows\system32\boot\winload.exe
bcdedit -store bcd /set {%GUID1%} locale zh-CN
bcdedit -store bcd /set {%GUID1%} winpeyes
bcdedit -store bcd /set {%GUID1%} detecthal yes
bcdedit -store bcd /set {%GUID1%} device%f01%
bcdedit -store bcd /set {%GUID1%} osdevice%f01%
bcdedit-store bcd /displayorder {%GUID1%} /addlast

for /f "tokens=1,2 delims={}" %%i in ('bcdedit -store bcd -create /d "%d02%" /application osloader ') do SET GUID1=%%j
bcdedit -store bcd /set {%GUID1%} systemroot\windows
bcdedit -store bcd /set {%GUID1%} path \windows\system32\boot\winload.exe
bcdedit -store bcd /set {%GUID1%} locale zh-CN
bcdedit -store bcd /set {%GUID1%} winpeyes
bcdedit -store bcd /set {%GUID1%} detecthal yes
bcdedit -store bcd /set {%GUID1%} device%f02%
bcdedit -store bcd /set {%GUID1%} osdevice%f02%
bcdedit-store bcd /displayorder {%GUID1%} /addlast

for /f "tokens=1,2 delims={}" %%i in ('bcdedit -store bcd -create /d "%d03%" /application osloader ') do SET GUID1=%%j
bcdedit -store bcd /set {%GUID1%} systemroot\windows
bcdedit -store bcd /set {%GUID1%} path \windows\system32\boot\winload.exe
bcdedit -store bcd /set {%GUID1%} locale zh-CN
bcdedit -store bcd /set {%GUID1%} winpeyes
bcdedit -store bcd /set {%GUID1%} detecthal yes
bcdedit -store bcd /set {%GUID1%} device%f03%
bcdedit -store bcd /set {%GUID1%} osdevice%f03%
bcdedit-store bcd /displayorder {%GUID1%} /addlast

for /f "tokens=1,2 delims={}" %%i in ('Bcdedit -store bcd -create /d "%d04%" /application bootsector ') do SET GUID1=%%j
bcdedit -store bcd /set {%GUID1%} device boot
bcdedit -store bcd /set {%GUID1%} PATH %f04%
bcdedit -store bcd /set {%GUID1%} graphicsmodedisabled yes
bcdedit -store bcd /displayorder {%GUID1%} /addlast

for /f "tokens=1,2 delims={}" %%i in ('Bcdedit -store bcd -create /d "%d05%" /application startup ') do SET GUID1=%%j
bcdedit -store bcd /set {%GUID1%} device boot
bcdedit -store bcd /set {%GUID1%} PATH %f05%
bcdedit -store bcd /set {%GUID1%} locale zh-CN
bcdedit -store bcd /set{%GUID1%} pxesoftreboot yes
bcdedit /store bcd /set {%GUID1%} nointegritychecks yes
bcdedit -store bcd /displayorder {%GUID1%} /addlast

for /f "tokens=1,2 delims={}" %%i in ('Bcdedit -store bcd -create {memdiag} /d "%d06%" ') do SET GUID1=%%j
bcdedit -store bcd /set {%GUID1%} device boot
bcdedit -store bcd /set {%GUID1%} PATH %f06%
bcdedit -store bcd /set {%GUID1%} locale zh-CN
bcdedit /store bcd /set {%GUID1%} nointegritychecks yes
bcdedit -store bcd /displayorder {%GUID1%} /addlast

for /f "tokens=1,2 delims={}" %%i in ('Bcdedit -store BCD -create /d "%d00%" /application startup ') do SET GUID1=%%j
bcdedit -store BCD /set {%GUID1%} device boot
bcdedit -store BCD /set {%GUID1%} PATH %f00%
bcdedit -store bcd /set {%GUID1%} pxesoftreboot yes
bcdedit -store bcd /displayorder {%GUID1%} /addlast

pause
bcdedit /enum all /store bcd
del /a:h bc?.log
pause

zhaohj 发表于 2014-11-12 16:48:26

本帖最后由 zhaohj 于 2014-11-12 16:59 编辑

我也想提这个问题: bcd中包含很多的win8pe,wim文件已经在bcd中指定,为何还要initrd@boot.wim=/boot/WIN8164PE.WIM ?
wimboot的index是加载固定wim文件的启动索引,象安装盘install.wim的“标准版”、“专业版”、“旗舰版”
我的想法是原来 pxe启动(grldr引导)的win8pe,Ipxe启动后不修改原来的bcd、boot.sdi文件名称及路径,只修改 Ipxe启动配置文件怎么做?
   isset ${ip} || dhcp
   isset ${next-server} || set next-server 192.168.1.11
...
:w8pe
kernel http://${next-server}:81/wimboot
initrd http://${next-server}:81/w8pe/bcd
initrd http://${next-server}:81/w8pe/w8pe.sdi
initrd http://${next-server}:81/w8pe/W8BCD
initrd http://${next-server}:81/w8pe/w8pe1.wim
boot

chenall 发表于 2014-11-12 16:55:34

zhaohj 发表于 2014-11-12 16:48
我也想提这个问题: bcd中包含很多的win8pe,wim文件已经在bcd中指定,为何还要initrd@boot.wim=/boot/WI ...

wimboot 其实是把启动需要的文件都加载到内存中了,所以这些文件可以放在任意位置,只要访问得到就行.
具体的启动过程如下

先产生一个虚拟的内存盘,然后把initrd里面的文件复制过去,再根据参数修改BCD内容.最后启动BOOTMGR

另外如果你的PE里面已经包含BOOTMGR那可以不用加载BOOTMGR的,WIMBOOT启动时会自动从WIM中提取.

目前无忧的WIM格式PE都精简掉了,所以需要加载BOOTMGR

像http方式启动的WIM PE就很有用,对于PXE还是直接用BOOTMGR吧,速度可能会比较快.

chenall 发表于 2014-11-12 16:58:00

zhaohj 发表于 2014-11-12 16:48
我也想提这个问题: bcd中包含很多的win8pe,wim文件已经在bcd中指定,为何还要initrd@boot.wim=/boot/WI ...

使用ipxe启动同样要指定名称路径的,
可以试试以下的命令
initrd w8pe/bcd bcd
initrd w8pe/w8pe.sdi w8pe/w8pe.sdi
initrd w8pe/w8pe1.wim w8pe/w8pe1.wim
chain wimboot

zhaohj 发表于 2014-11-12 17:18:38

:w8pe
kernel http://${next-server}:81/wimboot
initrd http://${next-server}:81/w8pe/bcd bcd
initrd http://${next-server}:81/w8pe/w8pe.sdi w8pe/w8pe.sdi
initrd http://${next-server}:81/w8pe/W8BCD w8pe/W8BCD#bootmgr.exe
initrd http://${next-server}:81/w8pe/w8pe1.wim w8pe/w8pe1.wim
boot

chenall 发表于 2014-11-12 17:21:47

zhaohj 发表于 2014-11-12 17:18
:w8pe
kernel http://${next-server}:81/wimboot
initrd http://${next-server}:81/w8pe/bcd bcd


必须使用标准的BOOTMGR不是使用PXE的BOOTMGR.

另外如果文件的菜单文件在同一个地方以下字符可以省略的.
http://${next-server}:81/

zhaohj 发表于 2014-11-12 17:21:54

:w8pe
kernel http://${next-server}:81/wimboot
initrd http://${next-server}:81/w8pe/bcd bcd
initrd http://${next-server}:81/w8pe/w8pe.sdi w8pe/w8pe.sdi
initrd http://${next-server}:81/w8pe/W8BCD bootmgr.exe
initrd http://${next-server}:81/w8pe/w8pe1.wim w8pe/w8pe1.wim
boot

captain_g 发表于 2014-11-13 10:35:56

我的BOOTMGR是按无忧网友迷离境界提供的方法破解过的文件,文件名改为了BOOTMGX;
我的BCD文件是从WIN8.1原版关盘提取的文件,按迷离境界提供批处理命令法,只禁用了数字签名验证并改名为BBB使用;
几个必须的文件均放在UD中的BOOT文件夹下;
使用2014-11-11 0.46a版的GRLDR,菜单为:
kernel /boot/wimboot
initrd @bcd=/boot/bbb @boot.sdi=/boot/boot.sdi @bootmgr=/boot/bootmgx @boot.wim=/boot/WIN786PE.WIM
boot
实机本地U启测试,成功进入WIN786PE;
先前以成功启动过WIN8164PE,只是没有测试过WIN8PE。
据此估计WIN8.1光盘中的BOOTMGR及BCD是可以同时支持WIN7/8/81PE的。
IPXE网启还没有试过。

321 发表于 2014-11-13 10:58:27

请问对于指针文件在vhd里面的wimboot,菜单该怎么写呢?
如果是wimboot+vhd做成ramos又该怎么写呢?

2012zhd 发表于 2014-11-13 11:05:12

captain_g 发表于 2014-11-13 10:35
我的BOOTMGR是按无忧网友迷离境界提供的方法破解过的文件,文件名改为了BOOTMGX;
我的BCD文件是从WIN8.1 ...

请分享一下w8.1 64位光盘中的bootmgr,bcd,boot.sdi。

captain_g 发表于 2014-11-13 11:25:16

2012zhd 发表于 2014-11-13 11:05
请分享一下w8.1 64位光盘中的bootmgr,bcd,boot.sdi。

http://pan.baidu.com/s/1mgj0Y2s

2012zhd 发表于 2014-11-13 11:36:00

captain_g 发表于 2014-11-13 11:25
http://pan.baidu.com/s/1mgj0Y2s

谢谢。我去下载。

zhaohj 发表于 2014-11-13 12:39:20

成功了,直接pxe启动文件用 IPXE的undionly.kpxe作为启动文件(dhcp67选项,并添加类别 ipxe)成功启动win7pe win8pe,速度确实很爽!
看来目前只能 ipxe启动,要使用grub4dosr的话用 IPXE转grldr

chenall 发表于 2014-11-13 13:39:28

zhaohj 发表于 2014-11-13 12:39
成功了,直接pxe启动文件用 IPXE的undionly.kpxe作为启动文件(dhcp67选项,并添加类别 ipxe)成功启动win7pe ...

用http的话速度是比tftp快多了.

我是直接使用纯GRUB4DOS启动的,没有用http和tftp

目前grub4dos只能间接通过ipxe来启动http上的文件(我那个PXEBoot里面的例子,都是网络启动的)

zhaohj 发表于 2014-11-13 14:31:05

新版的grub4dos因为支持带路径启动,这个怎么办?

chenall 发表于 2014-11-13 14:43:06

zhaohj 发表于 2014-11-13 14:31
新版的grub4dos因为支持带路径启动,这个怎么办?

这个我不知道你是如何启动的,

不过可以使用
pxe basedir 修改基本路径

grub4dos也不支持http,只能用tftp方式启动.

zhaohj 发表于 2014-11-13 15:30:17

是这样的,如果pxe的启动文件用grldr,可以转 ipxe启动,menu.lst启动IPXE菜单:
titleIPXE
pxe keep
kernel /IPXE.KRN
initrd /myscript.ipxe
其中的myscript.ipxe中启动grldr菜单:
:grub4dos
chain http://${next-server}:81/grldr || goto failed
goto start
也可以顺利启动grldr
但这样启动的IPXE无法引导win7/win8pe
------------------------------------------------------
如果pxe的启动文件使用undionly.kpxe(dhcp67选项添加id为ipxe,见21楼)
IPXE可以顺利启动win7/win8pe,但无法在配置文件中返回grldr

chenall 发表于 2014-11-13 15:41:06

zhaohj 发表于 2014-11-13 15:30
是这样的,如果pxe的启动文件用grldr,可以转 ipxe启动,menu.lst启动IPXE菜单:
titleIPXE
pxe keep
...

这个就不清楚原因了,我用ipxe/grub4dos可以随意切换,启动一切正常.

不能启动,你可以在命令行下输入命令看提示.可能是文件位置等错误.

zhaohj 发表于 2014-11-14 07:54:29

实机测试一点问题都没有,是虚拟机vm的问题(vmplayer 6.0.0 build-1295980)。
我百度查一下能否解决这个问题。

captain_g 发表于 2014-11-15 15:49:48

PXE GRLDR 网启转 iPXE 实机测试结果:

从 WIN 8.1 光盘提取的 BCD 与 BOOTMGR 支持 WIN7/8/8.1 PE 的 WIM 文件。

可以使用破解后的 BOOTMGR,相应的 BCD 也可以改名(除禁用数字签名外,不要修改BCD里面的内容)。

注意在下面的命令中:
kernel http://${next-server}/BOOT/wimboot
initrd http://${next-server}/BOOT/bootmgx        bootmgr
initrd http://${next-server}/BOOT/bbb        bcd
initrd http://${next-server}/BOOT/boot.sdi        boot.sdi
initrd http://${next-server}/BOOT/WIN886PE.WIM        BOOT.WIM

bootmgx/bbb/WIN886PE.WIM 是真实存在的文件的名称,它们后边的 bootmgr/bcd/boot.wim 必须有。

这样,使用一个 BCD 文件和一个 BOOTMGR 即可以通过 WIMBOOT 加载多个 PE WIM。

2011bm 发表于 2014-11-15 21:16:21

captain_g 发表于 2014-11-15 15:49
PXE GRLDR 网启转 iPXE 实机测试结果:

从 WIN 8.1 光盘提取的 BCD 与 BOOTMGR 支持 WIN7/8/8.1 PE 的 W ...

能否提供你修改后的BCD套件?谢谢。

captain_g 发表于 2014-11-16 12:37:36

2011bm 发表于 2014-11-15 21:16
能否提供你修改后的BCD套件?谢谢。

请见附件。
页: [1] 2
查看完整版本: grldr + wimboot