无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)虚位以待广告联系 QQ:184822951 微信:wuyouceo
楼主: captain_g

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

    [复制链接]
发表于 2018-10-29 21:22:34 | 显示全部楼层
wim保证文件名正确就行,放在其它路径下。bcd我直接用boot下的,也可以。文件名正确,文件名正确,文件名正确
回复

使用道具 举报

发表于 2018-10-30 10:07:25 | 显示全部楼层
请问需要被启动
机器的网卡驱动吗?
回复

使用道具 举报

 楼主| 发表于 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网启两者都有;
回复

使用道具 举报

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

请看楼上
回复

使用道具 举报

发表于 2018-11-23 20:14:41 来自手机 | 显示全部楼层
你好,最近在用ipxe测试网络启动,请教下如果是tiny pxe server的话,怎么配置可以识别客户机的启动方式(bios,uefi等),进而通告不同的nbp?
回复

使用道具 举报

 楼主| 发表于 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
回复

使用道具 举报

 楼主| 发表于 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三项
回复

使用道具 举报

发表于 2018-11-23 21:28:41 | 显示全部楼层
captain_g 发表于 2018-11-23 20:52
在TPS的配置文件CONFIG.INI中实现;

在[arch]部分加条目

ok 多谢,一会测试下。 作者为什么不把这些东西做到ui里面呢,坛子里的大神呢。。。。。。做一个tiny pxe配置文件编辑器多好。。。
回复

使用道具 举报

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

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

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

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

使用道具 举报

发表于 2018-11-24 14:41:07 | 显示全部楼层
本帖最后由 yigeren 于 2018-11-24 14:43 编辑

提供一个菜单文件自动识别BIOS和EFI启动
#!ipxe
#check platform (pcbios or efi)
echo Platform: ${platform}
set menu-timeout 20000
dhcp
isset ${next-server} || set next-server 192.168.1.2  #自行指定服务器ip
iseq ${platform} pcbios && set start BIOS_MENU || set start EFI_MENU
goto ${start}

:BIOS_MENU
set menu-default win10pe
menu iPXE BIOS Boot Menu
#item win2003                0.Yigeren Win2003PE
item --key 1 win7pe        1.Yigeren Win7PE
item --key 2 win8pe        2.Yigeren Win8PE
item --key 3 win8x64        3.Yigeren Win8x64PE
item --key 4 win10pe        4.Yigeren Win10x64PE
item --key 5 maxdos        5.MAXDOS9.3PLUS
item --key 6 diskgen        6.DISKGEN
item --key 7 hddreg        7.HDDREG
item --key h hddboot        H.HDDBOOT
item --key r reboot        R.ReBoot Computer

choose --timeout ${menu-timeout} --default ${menu-default} selected
goto ${selected}

:shell
echo Type 'Exit' to get the back to the menu
shell
goto start

:failed
echo Booting failed, dropping to shell
goto shell

:reboot
reboot

:hddboot
sanboot --no-describe --drive 0x80

:maxdos
initrd http://${next-server}/img/MAXDOS.IMG
chain http://${next-server}/memdisk || goto failed

:diskgen
initrd http://${next-server}/img/DISKGEN.img
chain http://${next-server}/memdisk || goto failed

:hddreg
initrd http://${next-server}/img/HDDREG.IMG
chain http://${next-server}/memdisk || goto failed

#:win2003
#kernel http://${next-server}/STARTROM.0
#boot || goto failed

:win7pe
kernel http://${next-server}/wimboot
initrd http://${next-server}/boot/bootmgr.exe                bootmgr.exe
initrd http://${next-server}/boot/BCD                                  BCD
initrd http://${next-server}/boot/boot.sdi                        boot.sdi
initrd http://${next-server}/boot/Win7PE.wim                Win7PE.wim
boot || goto failed

:win8pe
kernel http://${next-server}/wimboot
initrd http://${next-server}/boot/bootmg8.exe                bootmgr.exe
initrd http://${next-server}/boot/BC8                                BC8
initrd http://${next-server}/boot/boot.sdi                        boot.sdi
initrd http://${next-server}/boot/Win8PE.wim                Win8PE.wim
boot || goto failed

:win8x64
kernel http://${next-server}/wimboot
initrd http://${next-server}/boot/boot864.exe                bootmgr.exe
initrd http://${next-server}/boot/864                                864
initrd http://${next-server}/boot/boot.sdi                        boot.sdi
initrd http://${next-server}/boot/Win864PE.wim                Win864PE.wim
boot || goto failed

:win10pe
kernel http://${next-server}/wimboot
initrd http://${next-server}/boot/boot164.exe                bootmgr.exe
initrd http://${next-server}/boot/164                                164
initrd http://${next-server}/boot/boot.sdi                        boot.sdi
initrd http://${next-server}/boot/Win10x64.wim                Win10x64.wim
boot || goto failed
goto start


:EFI_MENU
set menu-default win10efi
menu iPXE EFI Boot Menu
item win8efi                1.Yigeren Win8x64PE
item win10efi                2.Yigeren Win10x64PE
item reboot                3.ReBoot Computer

choose --timeout ${menu-timeout} --default ${menu-default} selected
goto ${selected}

:win8efi
kernel http://${next-server}/wimboot
initrd http://${next-server}/boot/bootx64.efi                                        bootx64.efi
initrd http://${next-server}/boot/boot864.exe                                bootmgr.exe
initrd http://${next-server}/efi/microsoft/boot/864                                864
initrd http://${next-server}/efi/microsoft/boot/fonts/chs_boot.ttf        chs_boot.ttf
initrd http://${next-server}/efi/microsoft/boot/fonts/wgl4_boot.ttf        wgl4_boot.ttf
initrd http://${next-server}/boot/boot.sdi                                        boot.sdi
initrd http://${next-server}/boot/Win864PE.wim                                Win864PE.wim
boot || goto failed

:win10efi
kernel http://${next-server}/wimboot
initrd http://${next-server}/efi/boot/bootx64.efi                                bootx64.efi
initrd http://${next-server}/boot/boot164.exe                                bootmgr.exe
initrd http://${next-server}/efi/microsoft/boot/BCD                        BCD
initrd http://${next-server}/efi/microsoft/boot/fonts/chs_boot.ttf        chs_boot.ttf
initrd http://${next-server}/efi/microsoft/boot/fonts/wgl4_boot.ttf        wgl4_boot.ttf
initrd http://${next-server}/boot/boot.sdi                                        boot.sdi
initrd http://${next-server}/boot/Win10x64.wim                                Win10x64.wim
boot || goto failed
goto start  

评分

参与人数 1无忧币 +5 收起 理由
freesoft00 + 5

查看全部评分

回复

使用道具 举报

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

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

使用道具 举报

 楼主| 发表于 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
回复

使用道具 举报

发表于 2018-11-24 21:25:12 | 显示全部楼层
本帖最后由 yigeren 于 2018-11-24 21:40 编辑
captain_g 发表于 2018-11-24 20:43
关于这个菜单,想请教一下,懒得自己去摸索了。

如果用这个菜单,服务端用那个启动文件undionly.kpxe( ...


Tiny PXE的配置文件config.ini里找到[arch]字段,在下面添加
00007=ipxe.efi

提供的菜单文件在虚拟机和实机上都测试通过的,自己在用的,使用很久了
ipxe.pxe是启动BIOS,ipxe.efi是启动UEFI的,不管客户机是用什么模式启动,服务端会自动识别调用相应的启动文件
参考图片

ipxe

ipxe

ipxe.rar

399.02 KB, 下载次数: 47, 下载积分: 无忧币 -2

ipxe.efi

点评

问题1解决了,应该是我下载的版本编译时内置了相应的脚本,换了你发的附件里的,ok了,按altfilename寻找菜单加载。 另外那个在线编译怎么不会用啊,找不到下一步  详情 回复 发表于 2018-11-25 17:44
有两个问题请问下: 1我用的ipxe启动文件都是下载的别人的不是自己编译的,在altfilename=menu.all 想共用一个菜单 ,可是好像没有效果ipxe好像忽略altfilename=menu.all,寻找menu.ipxe(bios下)和menu.efi(uefi  详情 回复 发表于 2018-11-25 17:09
你的菜单文件就只有一个ipxemenu.text,无论bios还是uefi,对吧? 我一会准备也这样弄下省得BIOS,UEFI各弄一个菜单  详情 回复 发表于 2018-11-25 16:25
感谢赐教,这样太方便了。  详情 回复 发表于 2018-11-25 07:55
回复

使用道具 举报

 楼主| 发表于 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
回复

使用道具 举报

发表于 2018-11-25 16:22:43 | 显示全部楼层
captain_g 发表于 2018-11-25 07:55
感谢赐教,这样太方便了。

什么情况,昨天我才在你的指引下研究arch字段,让tiny pxe server自动识别客户机启动方式,再通告相应的NBP,怎么你今天又来请教别人。。。。

点评

我就是要确认一下,这个菜单还是必须要配合TPS的CONFIG.INI中的[arch]使用的。  详情 回复 发表于 2018-11-25 20:42
回复

使用道具 举报

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

你的菜单文件就只有一个ipxemenu.text,无论bios还是uefi,对吧? 我一会准备也这样弄下省得BIOS,UEFI各弄一个菜单
回复

使用道具 举报

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

有两个问题请问下:
1我用的ipxe启动文件都是下载的别人的不是自己编译的,在altfilename=menu.all 想共用一个菜单 ,可是好像没有效果ipxe好像忽略altfilename=menu.all,寻找menu.ipxe(bios下)和menu.efi(uefi下),就会出错?

2.ipxe的poweroff命令在bios和uefi下都没法使用,不知道是我下载的别人的版本问题还是怎么回事?
回复

使用道具 举报

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

问题1解决了,应该是我下载的版本编译时内置了相应的脚本,换了你发的附件里的,ok了,按altfilename寻找菜单加载。 另外那个在线编译怎么不会用啊,找不到下一步

点评

如果有内置脚本,altfilename这项空着应该就行。  详情 回复 发表于 2018-11-25 20:44
POWEROFF命令在IPXE菜单是无效的,只有重启:reboot 没去用什么在线编译的,直接在这下载现成的:http://boot.ipxe.org/  详情 回复 发表于 2018-11-25 20:18
回复

使用道具 举报

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

POWEROFF命令在IPXE菜单是无效的,只有重启:reboot
没去用什么在线编译的,直接在这下载现成的:http://boot.ipxe.org/

点评

ipxe菜单支持背景吗,看你发的地址里有一个Ipxe.png  详情 回复 发表于 2018-11-25 21:32
回复

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

发表于 2018-11-25 21:32:47 | 显示全部楼层
yigeren 发表于 2018-11-25 20:18
POWEROFF命令在IPXE菜单是无效的,只有重启:reboot
没去用什么在线编译的,直接在这下载现成的:http://bo ...

ipxe菜单支持背景吗,看你发的地址里有一个Ipxe.png
回复

使用道具 举报

发表于 2018-11-26 11:42:53 | 显示全部楼层
faly 发表于 2018-11-25 21:32
ipxe菜单支持背景吗,看你发的地址里有一个Ipxe.png


下载的IPXE.PXE是没有console这个命令的,所以不支持,你可以自己去编译一个有支持console这个命令的版本
用法:console --picture http://${next-server}/ipxe.png
IPXE还可以设置需要用户和密码登录的,但不清楚要怎么指定用户名和密码登录
命令:login
回复

使用道具 举报

发表于 2018-11-28 19:57:47 | 显示全部楼层
到官方论坛找到了可以设置用户名和密码录登的方法了,嘿嘿
在ipxe启动文件最前面添加如下:
login
iseq ${username} yigeren || goto reboot                #登录用户名:yigeren
iseq ${password} wuyou || goto reboot                #登录密码:wuyou


这样登录时需要输入正确的用户名和密码才能进引导菜单界面,用户名或密码输错电脑会重启,也可单独对某一条菜单行加密码
回复

使用道具 举报

 楼主| 发表于 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为前缀的文件名。
回复

使用道具 举报

发表于 2018-11-29 11:02:14 | 显示全部楼层
本帖最后由 yigeren 于 2018-11-29 11:03 编辑

32EFI我是直接用了微软的bootia32efi文件,加载后直接读取BOOT\BCD菜单引导的,用的TFTP协议肯定会慢了点,不过测试了下速度还能接受
也因为32EFI的平台我几乎碰不到,所以没再去弄配置菜单了,所以直接用了微软的省事,BCD直接加载引导,呵呵
有空我研究下三合一菜单的^_^
还有你检查下BCD文件,看下添加这2个参数没,速度会快一点
RamdiskTftpBlockSize
参数值为:20480
RamdiskTftpWindowSize
参数值为10
回复

使用道具 举报

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

多谢指点!
回复

使用道具 举报

发表于 2018-11-29 15:55:54 | 显示全部楼层

嘿,BIOS,X64EFI,X86EFI三合一菜单搞定,在虚拟机测试通过,能自动引导相应的菜单界面
在我上面提供的菜单中找到:
iseq ${platform} pcbios && set start BIOS_MENU || set start EFI_MENU
goto ${start}

替换为:
iseq ${platform} pcbios && set start BIOS_MENU || set start EFI        #(pcbios && efi)
goto ${start}
:EFI
iseq ${buildarch} x86_64 && set start EFI_MENU || set start x86EFI_MENU                #(x64EFI && x86EFI)
goto ${start}


去试试看看吧^_^
回复

使用道具 举报

发表于 2018-11-29 15:55:57 | 显示全部楼层
本帖最后由 yigeren 于 2018-11-29 15:59 编辑


嘿,BIOS,X64EFI,X86EFI三合一菜单搞定,在虚拟机测试通过,能自动引导相应的菜单界面
在我上面提供的菜单中找到:
iseq ${platform} pcbios && set start BIOS_MENU || set start EFI_MENU
goto ${start}

替换为:
iseq ${platform} pcbios && set start BIOS_MENU || set start EFI        #(pcbios && efi)
goto ${start}
:EFI
iseq ${buildarch} x86_64 && set start EFI_MENU || set start x86EFI_MENU                #(x64EFI && x86EFI)
goto ${start}


去试试看看吧^_^
对了,你自己要添加一个:x86EFI_MENU菜单的,config配置文件[arch]添加00006=ipxe32.efi
回复

使用道具 举报

 楼主| 发表于 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啊?

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2020-9-29 18:21

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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