无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 24951|回复: 50
打印 上一主题 下一主题

[分享] grldr + wimboot

    [复制链接]
1#
发表于 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

QQ图片20141112164923.jpg (32.55 KB, 下载次数: 204)

QQ图片20141112164923.jpg

点评

使用ipxe启动同样要指定名称路径的, 可以试试以下的命令 initrd w8pe/bcd bcd initrd w8pe/w8pe.sdi w8pe/w8pe.sdi initrd w8pe/w8pe1.wim w8pe/w8pe1.wim chain wimboot  详情 回复 发表于 2014-11-12 16:58
wimboot 其实是把启动需要的文件都加载到内存中了,所以这些文件可以放在任意位置,只要访问得到就行. 具体的启动过程如下 先产生一个虚拟的内存盘,然后把initrd里面的文件复制过去,再根据参数修改BCD内容.最后启  详情 回复 发表于 2014-11-12 16:55
回复

使用道具 举报

2#
发表于 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

Snap1.jpg (45.41 KB, 下载次数: 205)

Snap1.jpg

点评

必须使用标准的BOOTMGR不是使用PXE的BOOTMGR. 另外如果文件的菜单文件在同一个地方以下字符可以省略的. http://${next-server}:81/  详情 回复 发表于 2014-11-12 17:21
回复

使用道具 举报

3#
发表于 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

Snap2.jpg (39.99 KB, 下载次数: 204)

Snap2.jpg

点评

你的BOOTMGR是修改过的,路径要正确 /w8pe/bcd bcd 应该是 w8pe/bcd w8pe/bcd  发表于 2014-11-12 17:30
回复

使用道具 举报

4#
发表于 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=[boot]\w8pe\W8pe.WIM,{ramdiskoptions}

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

set d03=Windows8 PE (w8pe2.wim) by coolg
set f03=ramdisk=[boot]\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%} winpe  yes
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%} winpe  yes
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%} winpe  yes
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

点评

估计WIMBOOT不支持这些修改的特殊BCD/BOOTMGR 建议直接使用原版BCD+BOOTMGR  详情 回复 发表于 2014-11-12 18:08
回复

使用道具 举报

5#
发表于 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

Snap1.jpg (58.21 KB, 下载次数: 229)

Snap1.jpg

Snap2.jpg (17.1 KB, 下载次数: 234)

Snap2.jpg

点评

我用QEMU测试正常,不过我是使用GRUB4DOS测试的. WIN8的BCD/BOOTMGR/BOOT.SDI + WIN7PE  详情 回复 发表于 2014-11-13 08:54
回复

使用道具 举报

6#
发表于 2014-11-13 12:39:20 | 显示全部楼层
成功了,直接pxe启动文件用 IPXE的undionly.kpxe作为启动文件(dhcp67选项,并添加类别 ipxe)成功启动win7pe win8pe,速度确实很爽!
看来目前只能 ipxe启动,要使用grub4dosr的话用 IPXE转grldr

Snap1.jpg (11.89 KB, 下载次数: 193)

Snap1.jpg

点评

用http的话速度是比tftp快多了. 我是直接使用纯GRUB4DOS启动的,没有用http和tftp 目前grub4dos只能间接通过ipxe来启动http上的文件(我那个PXEBoot里面的例子,都是网络启动的)  详情 回复 发表于 2014-11-13 13:39
回复

使用道具 举报

7#
发表于 2014-11-13 14:31:05 | 显示全部楼层
新版的grub4dos因为支持带路径启动,这个怎么办?

Snap2.jpg (33.92 KB, 下载次数: 197)

Snap2.jpg

点评

这个我不知道你是如何启动的, 不过可以使用 pxe basedir 修改基本路径 grub4dos也不支持http,只能用tftp方式启动.  详情 回复 发表于 2014-11-13 14:43
回复

使用道具 举报

8#
发表于 2014-11-13 15:30:17 | 显示全部楼层
是这样的,如果pxe的启动文件用grldr,可以转 ipxe启动,menu.lst启动IPXE菜单:
title  IPXE
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

点评

这个就不清楚原因了,我用ipxe/grub4dos可以随意切换,启动一切正常. 不能启动,你可以在命令行下输入命令看提示.可能是文件位置等错误.  详情 回复 发表于 2014-11-13 15:41
回复

使用道具 举报

9#
发表于 2014-11-14 07:54:29 | 显示全部楼层
实机测试一点问题都没有,是虚拟机vm的问题(vmplayer 6.0.0 build-1295980)。
我百度查一下能否解决这个问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-8 10:22

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表