无忧启动论坛

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

[分享] iPXE-UEFI网启小工具

    [复制链接]
跳转到指定楼层
1#
发表于 2017-10-18 16:45:22 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 captain_g 于 2018-11-21 14:05 编辑

# BOOT文件夹(请解压到磁盘、分区根目录下):

boot.sdi——取自64位WIN8;
bootmgfw.efi——取自64位WIN8;
ipxe.efi——下载自IPXE官网;
wimboot——下载自IPXE官网;
tinypxesrv.exe——网启服务器1.0.0.21;

wimboot.ipxe——纯文本配置文件(ANSI,可自行修改内容):

#!ipxe
set boot-url http://${dhcp-server}
kernel ${boot-url}/BOOT/wimboot
initrd ${boot-url}/BOOT/bootmgfw.efi bootmgfw.efi
initrd ${boot-url}/EFI/MICROSOFT/BOOT/BCD BCD
initrd ${boot-url}/BOOT/BOOT.SDI BOOT.SDI
initrd ${boot-url}/BOOT/BOOT.WIM BOOT.WIM
boot

BOOT.WIM——支持UEFI启动的64位PE核心文件;

# EFI文件夹(请解压到磁盘、分区根目录下):

取自微软64位WIN8原版光盘(只在BCD中禁用了数字签名验证,其他不动);

# 为使用方便:

启用网启服务端iPXE-UEFI.CMD(需与BOOT、EFI文件夹在同一磁盘、分区);

# 请关闭“安全启动”选项;

# 条件有限,只在64位机器上测试通过UEFI网启!


https://pan.baidu.com/s/19Sn4L1XZ4CRk8jLvdAgL8Q 密码:slwm

iPXE-UEFI网启.7z

1.34 MB, 下载次数: 1784, 下载积分: 无忧币 -2

点评

好好好  发表于 2018-11-24 22:10

评分

参与人数 5无忧币 +17 收起 理由
wuxin9712 + 5
bc3xxx + 1 赞一个!
wjguowei + 5
879792799 + 5 好宝贝 大家赶快收藏
maomihuacha + 1

查看全部评分

2#
 楼主| 发表于 2017-10-19 16:37:10 | 显示全部楼层
本帖最后由 captain_g 于 2017-10-21 09:16 编辑

根据官网介绍:

# wimboot自己会自行提取wim文件中的启动管理器,如bootmgr.exe(BIOS)或bootmgfw.efi(UEFI),有些

网友制作的PE中可能精简掉了这些文件,会导致网启失败,所以在配置脚本中予以指定并在外部提供相

应文件,可以避免因找不到文件而导致的失败,如1楼的:

initrd ${boot-url}/BOOT/bootmgfw.efi bootmgfw.efi

又,如系BIOS启动,类似的可以写成initrd ${boot-url}/BOOT/bootmgr bootmgr (从bootmgr中提取bootmgr.exe);

或者 initrd ${boot-url}/BOOT/bootmgr.exe bootmgr.exe

# wimboot在使用BCD文件时自己会在虚拟内存环境中“修补”BCD的内部配置,如果用的是BIOS启动的

BCD,则wimboot在UEFI启动时,会将BCD内部的字串.exe改成.efi,就是说,假如根下目录结构与微软的

一致,可以直接用原版的BCD(禁用数字签名验证除外);

# wimboot执行后在内存中创建虚拟文件系统,该系统使得在下列多个位置调用BCD、BOOT.SDI、BOOT.WIM

成为可能:

\
\Boot
\Boot\Fonts
\Boot\Resources
\Sources
\EFI
\EFI\Boot
\EFI\Microsoft
\EFI\Microsoft\Boot

BCD最好用原名,因为bootmgr.exe只简单搜索\Boot\BCD;

BCD中指定的BOOT.SDI、BOOT.WIM路径必须是上面几种并互相匹配,以boot.wim为例,\boot.wim或

\Boot\boot.wim或\Sources\boot.wim以及上面列举的子目录等都行,但不支持像\Image\boot.wim这样

的路径(因为Image并非认可的子目录);

E文水平有限,难免理解错误,请查阅官网,或参靠比较论坛前辈们的配置文件;
回复

使用道具 举报

3#
 楼主| 发表于 2018-4-25 20:45:15 | 显示全部楼层
本帖最后由 captain_g 于 2018-4-25 20:48 编辑
txh0714 发表于 2018-4-19 21:22
学习了,谢谢分享,希望大师指导一下gho文件放在哪,实现自动网络克隆!


“大师”不敢当!弄这个东西纯粹是为了好玩。

不知道你的网络环境究竟如何,也不知道在网启后准备克隆一台电脑还是若干台电脑一起克。

论坛内网启、网克工具很多,这个主要是针对UEFI网启的,没有想过用它进行网克,简单说几点:

1、假如网启用的PE不带网络功能或网络功能不正常,且GHO文件不大,可以考虑将它封在BOOT.WIM中;自己编写一个批处理脚本,让它在PE启动后自动运行,调用

Ghost64.exe(Ghost32.exe),从而实现自动克隆,但这个批处理脚本只能适用于特定的已知情形,这种实际上属于网启后的“本地”克隆。

2、假如网启用的PE带网络功能而且网络功能正常,即客户端(网启,使用PE系统的)电脑与服务端(运行本工具,使用正常Windows的)电脑可以互联:

1)在服务端上退出本网启小工具。在服务端上运行Symantec GhostCast Server(Ghostsrv.exe),在客户端(需要克隆的)电脑上运行Ghost64.exe(Ghost32.exe),

服务端、客户端经过一番设置即可进行“多播”多机克隆,这种情况GHO文件放在服务端即可,但很难做到“自动”克隆;

2)在服务端上退出本网启小工具。事先已将服务端上GHO文件所在的文件夹设为“共享”文件夹,在客户端可以通过批处理脚本:a.先将前述共享文件夹“映射”为

“网络驱动器”;b.调用Ghost64.exe(Ghost32.exe),从而实现自动克隆,但这个批处理脚本同样也只能适用于特定的已知情形。还有一点,Windows下共享文件的共

享连接数很有限。

3、根据个人经验,要想实现网启后自动进行克隆,很难,有很多先决条件需要满足!换一个说法,如果不是特定已知情形,则很危险!

点评

可以做到半自动。PE打好网卡驱动,去掉图形界面,pecmd.ini加一句: exec =ghost.exe -clone,src=@MCDeploy,dst=1 -rb -sure 服务器启动ghostsrv,会话名称为Deploy,选择镜像,输入数量,接受客户机,连接够数了  详情 回复 发表于 2018-10-29 17:02
回复

使用道具 举报

4#
 楼主| 发表于 2018-10-29 17:43:39 | 显示全部楼层
hanzsim 发表于 2018-10-29 17:20
哎,我折腾了好几天,uefi ipxe通过http启动wim总是bcd错误。TFTP方式一点问题也没有,除了慢的令人怀疑人 ...

从一楼下载的压缩包要解压到分区、磁盘根目录下,即BOOT文件夹、批处理要在分区、磁盘根目录下。

另外,其他都(如BCD)不要动它,直接将你的PE核心WIM重命名为BOOT.WIM放在BOOT文件夹中就行了。

还有,压缩包里的bootmgfw.efi提取自WIN8,可以要换成WIN10的,最后确保WIM文件中最好也要包含这个文件。

点评

我看了你的批处理了,是调整web路径的,我用IIS,不影响。除了wim用的自己的,别的用的都是你的文件。 文件传输完了。载入efi文件时,出的0xc000000f错误  详情 回复 发表于 2018-10-29 19:51
回复

使用道具 举报

5#
 楼主| 发表于 2018-10-29 18:14:22 | 显示全部楼层
hanzsim 发表于 2018-10-29 17:20
哎,我折腾了好几天,uefi ipxe通过http启动wim总是bcd错误。TFTP方式一点问题也没有,除了慢的令人怀疑人 ...

“uefi ipxe通过http启动wim总是bcd错误”

究竟是什么问题?BCD没传过去,还是找不到BOOT.WIM?

客户端有没有成功读取5个文件;

wimboot + ipxe UEFI 网络启动时,不支持WIM文件改成其他名称,只能是BOOT.WIM,如果没改过BCD;

但wimboot + ipxe BIOS 网络启动时,WIM文件是可以改其他名称的,即不改BCD的情况下:

BIOS: initrd ${boot-url}/BOOT/WXYZ.WIM BOOT.WIM,没问题;

UEFI: initrd ${boot-url}/BOOT/WXYZ.WIM BOOT.WIM,不可以!

点评

uefi模式启动时可以用这种方法自定义wim文件名 initrd -n boot.wim ${boot-url}/BOOT/WXYZ.WIM 我自己测试可以使用  详情 回复 发表于 2021-9-30 15:35
换用bootx64.efi,我实际测了,可以改wim文件名。就是不能中文,  详情 回复 发表于 2020-11-16 19:46
回复

使用道具 举报

6#
 楼主| 发表于 2018-10-29 18:22:55 | 显示全部楼层
网络UEFI启动不止一个WIM,去这里看看:

下载链接:

https://pan.baidu.com/s/19Sn4L1XZ4CRk8jLvdAgL8Q 密码:slwm
回复

使用道具 举报

7#
 楼主| 发表于 2018-10-29 20:04:55 | 显示全部楼层
hanzsim 发表于 2018-10-29 19:55
我做的是U盘BIOS、uefi双启是成功的,网启不用uefi也是成功的。用uefi直接用x64.efi做启动文件也成功了,就 ...

严格按下面的做:
#!ipxe
set boot-url http://${dhcp-server}
kernel ${boot-url}/BOOT/wimboot
initrd ${boot-url}/BOOT/bootmgfw.efi bootmgfw.efi
initrd ${boot-url}/EFI/MICROSOFT/BOOT/BCD BCD
initrd ${boot-url}/BOOT/BOOT.SDI BOOT.SDI
initrd ${boot-url}/BOOT/BOOT.WIM BOOT.WIM
boot
什么都不动,文件都是原版的,除了WIM是自己的,但必须文件名必须是BOOT.WIM。
根据这个配置,wimboot + ipxe.efi网络启动,不使用bootx64.efi
回复

使用道具 举报

8#
 楼主| 发表于 2018-10-29 20:06:58 | 显示全部楼层
还有服务器上proxydhcp勾或不勾分别试一试
回复

使用道具 举报

9#
 楼主| 发表于 2018-10-30 13:32:06 | 显示全部楼层
被启动机器=客户端机器,不需要网卡驱动;
只要主板支持并设置好相应网络启动项目即可;
BIOS与UEFI网络启动不一样,开机时一般按可按F12键选择;
BIOS网启(ipxe):wimboot + undionly.kpxe + 启动配置文件(menubios.ipxe)
如果启不来可改用:wimboot + ipxe.pxe(带驱动) + 启动配置文件(menubios.ipxe)
UEFI网启(ipxe)用:wimboot + ipxe.efi + 启动配置文件(menuuefi.ipxe)
UEFI网启只支持64架构系统;
网启只支持有线连接;
#1下载的只含UEFI网启;
#25下载的BIOS/UEFI网启两者都有;
回复

使用道具 举报

10#
 楼主| 发表于 2018-10-30 13:33:02 | 显示全部楼层
zclin 发表于 2018-10-30 10:07
请问需要被启动
机器的网卡驱动吗?

请看楼上
回复

使用道具 举报

11#
 楼主| 发表于 2018-11-23 20:52:31 | 显示全部楼层
本帖最后由 captain_g 于 2018-11-23 20:58 编辑
faly 发表于 2018-11-23 20:14
你好,最近在用ipxe测试网络启动,请教下如果是tiny pxe server的话,怎么配置可以识别客户机的启动方式(bi ...


在TPS的配置文件CONFIG.INI中实现;

在[arch]部分加条目
00000 对应 Intel x86PC
00001 对应 NEC/PC98
00002 对应 EFI Itanium
00003 对应 DEC Alpha
00004 对应 Arc x86
00005 对应 Intel Lean Client
00006 对应 EFI IA32
00007 对应 EFI BC
00008 对应 EFI Xscale
00009 对应 EFI x86-64

E文好的看这里

http://mistyrebootfiles.altervis ... s/pxesrv_config.htm

点评

ok 多谢,一会测试下。 作者为什么不把这些东西做到ui里面呢,坛子里的大神呢。。。。。。做一个tiny pxe配置文件编辑器多好。。。  详情 回复 发表于 2018-11-23 21:28
回复

使用道具 举报

12#
 楼主| 发表于 2018-11-23 20:53:49 | 显示全部楼层
本帖最后由 captain_g 于 2018-11-23 21:01 编辑

Note that the architecture information is sent by the client system - it's extracted from dhcp option 60 - usually in the form PXEClient:Arch:0000X:UNDI:XXXXXXX. If the [arch] section is missing, or if the client architecture is not specified in the [arch] section, then Tiny PXE Server will use the information set in the filename parameter (or opt67).

主要0000,00006,0007三项
回复

使用道具 举报

13#
 楼主| 发表于 2018-11-24 12:13:19 | 显示全部楼层
faly 发表于 2018-11-23 21:28
ok 多谢,一会测试下。 作者为什么不把这些东西做到ui里面呢,坛子里的大神呢。。。。。。做一个tiny pxe ...

UI应该限于界面,不适宜放太多东西;

有些配置只能放在INI文件中,UI上没有。

UI上勾选或取消勾选后,应先OFFLINE,然后再ONLINE,否者不生效。
回复

使用道具 举报

14#
 楼主| 发表于 2018-11-24 17:29:31 | 显示全部楼层
yigeren 发表于 2018-11-24 14:41
提供一个菜单文件自动识别BIOS和EFI启动
#!ipxe
#check platform (pcbios or efi)

多谢分享,收藏下来学习下。
回复

使用道具 举报

15#
 楼主| 发表于 2018-11-24 20:43:22 | 显示全部楼层
yigeren 发表于 2018-11-24 14:41
提供一个菜单文件自动识别BIOS和EFI启动
#!ipxe
#check platform (pcbios or efi)

关于这个菜单,想请教一下,懒得自己去摸索了。

如果用这个菜单,服务端用那个启动文件undionly.kpxe(ipxe.pxe)或ipxe.efi?

正常理解,客户端PXE启动后,要先取得相对应的启动文件,然后才是配置、菜单文件,如果服务端给错了网器启动文件,网启就会失败。

不知理解得对不对。

点评

Tiny PXE的配置文件config.ini里找到[arch]字段,在下面添加 00007=ipxe.efi 提供的菜单文件在虚拟机和实机上都测试通过的,自己在用的,使用很久了  详情 回复 发表于 2018-11-24 21:25
回复

使用道具 举报

16#
 楼主| 发表于 2018-11-25 07:55:29 | 显示全部楼层
yigeren 发表于 2018-11-24 21:25
Tiny PXE的配置文件config.ini里找到[arch]字段,在下面添加
00007=ipxe.efi

感谢赐教,这样太方便了。

点评

什么情况,昨天我才在你的指引下研究arch字段,让tiny pxe server自动识别客户机启动方式,再通告相应的NBP,怎么你今天又来请教别人。。。。  详情 回复 发表于 2018-11-25 16:22
回复

使用道具 举报

17#
 楼主| 发表于 2018-11-25 20:42:29 | 显示全部楼层
faly 发表于 2018-11-25 16:22
什么情况,昨天我才在你的指引下研究arch字段,让tiny pxe server自动识别客户机启动方式,再通告相应的N ...

我就是要确认一下,这个菜单还是必须要配合TPS的CONFIG.INI中的[arch]使用的。
回复

使用道具 举报

18#
 楼主| 发表于 2018-11-25 20:44:54 | 显示全部楼层
faly 发表于 2018-11-25 17:44
问题1解决了,应该是我下载的版本编译时内置了相应的脚本,换了你发的附件里的,ok了,按altfilename寻找 ...

如果有内置脚本,altfilename这项空着应该就行。
回复

使用道具 举报

19#
 楼主| 发表于 2018-11-29 10:35:34 | 显示全部楼层
yigeren 发表于 2018-11-28 19:57
到官方论坛找到了可以设置用户名和密码录登的方法了,嘿嘿
在ipxe启动文件最前面添加如下:
login

感谢分享!

关于您分享的那个菜单:

判断客户端为EFI平台后,配置直接跳转到是64位启动配置部分;

针对客户端是32位EFI平台,在TPS的INI中您用了00006=efi\boot\bootia32.efi,貌似用了微软的文件,这个是不需要菜单的,但是速度明显慢很多;

还有如果是原版的bootia32.efi,相应的fonts和resources文件夹中的文件不能完全删除;

去iPXE官网看了一下 platform 的介绍,因E文一般理解可能有误,似乎只能区分客户端是EFI还是PCBIOS,好像不能区分客户端是32还是64位EFI?

不知您是如何解决32位EFI启动配置问题的?尽管实际中遇到的可能性很小。

学习了H3大的全套网启文件,他搞了BIOS的、EFI的配置文件各一个,在EFI配置中,似乎是有64位或32位选择的(可能理解得不对):

cpuid --ext 29 && set x64 Y || set x32 Y,用了 isset ${x32} && set ......

也去iPXE官网看了一下 cpuid 的介绍,个人理解,就目前个人电脑在用到CPU,应该都是29吧?

最近在论坛内无意中发现并下载到了“不知”编译的32位的ipxe.efi,想弄个配置,但不知道如何“合三为一”供自动调用,烦请支招!

为了根据客户端类型自动配置,目前只好在TPS的INI文件中,对altfilename这项用了以@arch为前缀的文件名。
回复

使用道具 举报

20#
 楼主| 发表于 2018-11-29 11:08:43 | 显示全部楼层
yigeren 发表于 2018-11-29 11:02
32EFI我是直接用了微软的bootia32efi文件,加载后直接读取BOOT\BCD菜单引导的,用的TFTP协议肯定会慢了点, ...

多谢指点!

点评

嘿,BIOS,X64EFI,X86EFI三合一菜单搞定,在虚拟机测试通过,能自动引导相应的菜单界面 在我上面提供的菜单中找到: iseq ${platform} pcbios && set start BIOS_MENU || set start EFI_MENU goto ${start} 替换为  详情 回复 发表于 2018-11-29 15:55
嘿,BIOS,X64EFI,X86EFI三合一菜单搞定,在虚拟机测试通过,能自动引导相应的菜单界面 在我上面提供的菜单中找到: iseq ${platform} pcbios && set start BIOS_MENU || set start EFI_MENU goto ${start} 替换为  详情 回复 发表于 2018-11-29 15:55
回复

使用道具 举报

21#
 楼主| 发表于 2018-11-29 16:30:21 | 显示全部楼层
yigeren 发表于 2018-11-29 15:55
嘿,BIOS,X64EFI,X86EFI三合一菜单搞定,在虚拟机测试通过,能自动引导相应的菜单界面
在我上面提供的菜 ...

非常感谢热心相助!

这个设置参数在官网也学习过,由于是业余的没专业知识,理解不透。

官网只是简单地说:i386 指 32-bit x86 CPU;x86_64 指 64-bit x86 CPU;

看来理解上有偏差,难道32EFI平台的电脑,都是用的32-bit的CPU啊?

这个还真不清楚呢,如果是这样,问题确实没以前想的复杂了。

点评

在32EFI平台的电脑一样是用64位的CPU,只是我们需要改变下逻辑变通下来达到我们的目的 在32EFI的平台下,TPS是不是会自动调用config配置里00006=ipxe32.efi的文件,对吧 然后咱们先引导IPXE32.efi到SHELL里面,也就  详情 回复 发表于 2018-11-29 16:50
回复

使用道具 举报

22#
 楼主| 发表于 2018-11-29 16:36:59 | 显示全部楼层
yigeren 发表于 2018-11-29 11:02
32EFI我是直接用了微软的bootia32efi文件,加载后直接读取BOOT\BCD菜单引导的,用的TFTP协议肯定会慢了点, ...

以前是在服务端WIFI连接的情况下测试的,感觉很慢。

按你的指点动了下BCD,刚刚在服务端网线连接的情况下测试了一下,

所有文件包括150M的WIM文件读取完毕用时不到20秒,这个网启速度应该不错了。

再次感谢!
回复

使用道具 举报

23#
 楼主| 发表于 2018-11-29 16:54:04 | 显示全部楼层
本帖最后由 captain_g 于 2018-11-29 16:57 编辑
yigeren 发表于 2018-11-29 16:50
在32EFI平台的电脑一样是用64位的CPU,只是我们需要改变下逻辑变通下来达到我们的目的
在32EFI的平台下 ...


这下理解了,多谢。

当时没注意这句话:Specifies the CPU architecture for which this version of iPXE was compiled. Possible values are:

点评

其实那些英文我也看不懂,呵呵  详情 回复 发表于 2018-11-29 17:00
回复

使用道具 举报

24#
 楼主| 发表于 2018-11-30 14:48:41 | 显示全部楼层
2012huguoliang 发表于 2018-11-30 14:31
老大 我想NAS里弄PXE启动 麻烦出个教程呗

问错人喽,我只是入门爱好者啊!

网启区大神都大隐了!
回复

使用道具 举报

25#
 楼主| 发表于 2020-11-15 19:21:19 | 显示全部楼层
本帖最后由 captain_g 于 2020-11-15 19:23 编辑
dawnstar 发表于 2020-11-15 17:54
请教一下呢分享的网络硬盘里面,哪一个才是mbr和uefi自动识别?试验过uefi没有启动成功

文件名中有UEFI的支持UEFI网络启动;

传统网启、UEFI网启不成功的原因有很多;

MBR/UEFI网启,客户端机器BIOS中的设置是不一样的;
还有一点,PE本身要支持UEFI启动,位数也要对应;
回复

使用道具 举报

26#
 楼主| 发表于 2020-11-16 13:51:46 | 显示全部楼层
dawnstar 发表于 2020-11-16 13:39
LAN-TPS-UEFI  我运行的是这个,mbr格式可以启动,而同一台电脑的UEFI不能启动。PE支持的。PXE中可以进行选 ...

LAN-TPS-UEFI-MS.7z

这个里面除了TPS,其他都是微软的,试一下看看;

看看TPS说什么
回复

使用道具 举报

27#
 楼主| 发表于 2020-11-17 08:26:52 | 显示全部楼层
cchessbd 发表于 2020-11-16 19:46
换用bootx64.efi,我实际测了,可以改wim文件名。就是不能中文,

中文肯定是用不了的;

至于UEFI网启WIM文件改名,测试当时发现是不能该的,变通的方法就是同步改BCD配置;

不能改是指直接配合使用复制粘贴过来微软ISO中的BCD;

也许是更新过的WIMBOOT支持改WIM文件名了(BIOS/MBR一直是支持改名的);

点评

不需要改bcd。直接改了菜单对应的.wim就行了,wimboot可以启动  详情 回复 发表于 2020-11-19 10:43
回复

使用道具 举报

28#
 楼主| 发表于 2021-5-11 10:28:19 | 显示全部楼层
tigerhuang 发表于 2021-5-11 00:58
今天在Win10上测试,客户端是本机的一个Hyper-V虚拟机(Generation 2),uefi网启失败。

能出个教程,如何 ...

业余玩玩的,没有用过H-V,也没动过路由器。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-3 16:33

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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