无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 35716|回复: 57

[发布] Tiny PXE Server 可以用了

    [复制链接]
发表于 2014-9-20 22:23:00 | 显示全部楼层 |阅读模式
本帖最后由 hhh333 于 2015-3-17 09:06 编辑

解决了两个问题:
1、可以使用相对路径
2、[arch]部分的设置终于可以用了
3、PXE启动时用grldr慢的问题似乎也解决了。

目前,比HaneWin先进的地方有:
1、直接支持HTTP;
2、支持proxyDHCP,再不怕内网有DHCP了,如内网有路由器并默认启用了DHCP;
3、直接全自动支持EFI 64和EFI 32,而Hanewin只能同时支持一种,要么32,要么64;(注:这种说法不准确,Hanewin通过设置也可以做到自动启动,可以看我发布的ISO
4、利用opt252选项,EFI时支持为32或64直接指定BCD;
5、不需要安装设置,直接运行就可用。

不足之处:
1、不能自动保存配置--这一点作者正采纳本人建议增加SAVE按钮;
2、有些项目在config.ini中设置,软件界面中没有修改的地方;

这是我的config.ini:
  1. [arch]
  2. 00006=efi\boot\bootia32.efi
  3. 00007=efi\boot\iPXE64.efi

  4. [dhcp]
  5. root=c:\
  6. Filename=pxelinux.0
  7. tftpd=1
  8. httpd=1
  9. binl=0
  10. start=1
  11. proxydhcp=0
  12. bind=1
  13. smb=0
  14. verbose=1
复制代码

其中iPXE64.efi 为我编译的ipxe efi启动文件。
这是最新下载的工具: pxesrv.7z (347.16 KB, 下载次数: 916)

点评

www.xbctech.com 校园小说  发表于 2015-3-16 04:33
www.hbshengwang.com 圣王小说  发表于 2015-3-16 04:33
发表于 2014-9-27 21:10:13 | 显示全部楼层
hhh333 发表于 2014-9-27 19:53
能全自动支持吗?配置文件如何写?

当然是全自动支持的了。这个一般没有手动改配置文件,就直接在界面上点鼠标配置吧。
参见此贴 http://bbs.wuyou.net/forum.php?m ... 5&fromuid=67874

点评

我的意思是一个配置文件解决问题 你的是不是建两个配置文件?针对Arch:00006和00007分别建一个?  详情 回复 发表于 2014-9-28 09:08
回复

使用道具 举报

 楼主| 发表于 2014-9-27 19:53:21 | 显示全部楼层
我是神仙 发表于 2014-9-26 16:44
这软件BUG太多 arch这个从没测试成功过

能全自动支持吗?配置文件如何写?

点评

当然是全自动支持的了。这个一般没有手动改配置文件,就直接在界面上点鼠标配置吧。 参见此贴 http://bbs.wuyou.com/forum.php?mod=viewthread&tid=338135&fromuid=67874  详情 回复 发表于 2014-9-27 21:10
回复

使用道具 举报

发表于 2014-9-26 16:44:03 | 显示全部楼层
这软件BUG太多 arch这个从没测试成功过


3、直接全自动支持EFI 64和EFI 32,而Hanewin只能同时支持一种,要么32,要么64;


没这回事哈 hanewin支持任意多的arch配置的

点评

能全自动支持吗?配置文件如何写?  详情 回复 发表于 2014-9-27 19:53
回复

使用道具 举报

 楼主| 发表于 2014-9-28 09:08:42 | 显示全部楼层
我是神仙 发表于 2014-9-27 21:10
当然是全自动支持的了。这个一般没有手动改配置文件,就直接在界面上点鼠标配置吧。
参见此贴 http://bb ...

我的意思是一个配置文件解决问题
你的是不是建两个配置文件?针对Arch:00006和00007分别建一个?

点评

当然是“一个”配置文件! 注意“配置”和“配置文件”是两回事。 同一个配置文件 DHCPsrv.ini, 里面支持多种配置。 正如 tinypxe声称的 同一个 config.ini 支持多个 arch= 配置一样。 不要把 配置 和  详情 回复 发表于 2014-9-28 09:23
回复

使用道具 举报

发表于 2014-9-28 09:23:56 | 显示全部楼层
本帖最后由 我是神仙 于 2014-9-28 09:28 编辑
hhh333 发表于 2014-9-28 09:08
我的意思是一个配置文件解决问题
你的是不是建两个配置文件?针对Arch:00006和00007分别建一个?


当然是“一个”配置文件!

注意“配置”和“配置文件”是两回事。

同一个配置文件 DHCPsrv.ini, 里面支持多种配置。

正如 tinypxe声称的 同一个 config.ini 支持多个 arch= 配置一样。(虽然我没有测试成功这个功能)

不要把 配置 和 配置文件 搞混淆了。

同一个配置文件 不作任何改动 同时支持三种网络启动 完全没有问题

点评

我知道了,配置文件如下: 出现怪现象,EFI32、PXE都可以成功,但就是EFI64不行,出现: [attachimg]200174[/attachimg] 同等情况下Tiny PXE Server可以。另外用hanewin用原来的方式可以即 这个是成功的  详情 回复 发表于 2014-9-28 11:56
回复

使用道具 举报

 楼主| 发表于 2014-9-28 11:56:55 | 显示全部楼层
我是神仙 发表于 2014-9-28 09:23
当然是“一个”配置文件!

注意“配置”和“配置文件”是两回事。

我知道了,配置文件如下:
  1. [License]
  2. Key=BBLZ26803UBBCAT9
  3. Name=Free User

  4. [DHCPsrv]
  5. Profile0=PXE
  6. Profile1=EFI64
  7. Profile2=EFI32
  8. Include=192.168.1.220
  9. TFTPDirectory=C:\
  10. Multicast=0
  11. TestIP=1
  12. TFTPEnable=1
  13. TFTPMode=0
  14. Log=0

  15. [PXE]
  16. SubnetMask=255.255.255.0
  17. BaseIP=192.168.1.100
  18. Range=101
  19. NextIP=192.168.1.220
  20. BootFile=pxelinux.0
  21. RootPath=iscsi:192.168.1.220::3268::H3PE
  22. DNSUpdate=0
  23. VendorClass="PXEClient:Arch:00000:

  24. [EFI64]
  25. SubnetMask=255.255.255.0
  26. BaseIP=192.168.1.100
  27. Range=101
  28. NextIP=192.168.1.220
  29. BootFile=efi/boot/ipxe64.efi
  30. DNSUpdate=0
  31. VendorClass="PXEClient:Arch:00007:


  32. [EFI32]
  33. SubnetMask=255.255.255.0
  34. BaseIP=192.168.1.100
  35. Range=101
  36. NextIP=192.168.1.220
  37. BootFile=efi/boot/ipxe32.efi
  38. RootPath=iscsi:192.168.1.220::3268::H3PE
  39. DNSUpdate=0
  40. VendorClass="PXEClient:Arch:00006:
复制代码


出现怪现象,EFI32、PXE都可以成功,但就是EFI64不行,出现:
Windows 8 x64 -EFI-2014-09-28-10-20-25.png

同等情况下Tiny PXE Server可以。另外用hanewin用原来的方式可以即
  1. [EFI64]
  2. SubnetMask=255.255.255.0
  3. BaseIP=192.168.1.100
  4. Range=101
  5. NextIP=192.168.1.220
  6. BootFile=pxelinux.0
  7. RootPath=iscsi:192.168.1.220::3268::H3PE
  8. DNSUpdate=0
  9. UseOpt=1
  10. Alternate=1
  11. VendorClassId=PXEClient:Arch:00007:
  12. BootFile2=efi/boot/ipxe64.efi
  13. InterfaceIP=192.168.1.220
复制代码

这个是成功的。

点评

operation not supported。 至少说明ipxe是成功加载了的。和DHCP已经没关系了。 遇到过这个提示,一般是加载远程文件时没加TFTP://前缀之类的。建议是先ctrl B 进入 ipxe shell 手动加载。 首先是ifstat 查看IP  详情 回复 发表于 2014-9-28 12:03
回复

使用道具 举报

发表于 2014-9-28 12:03:18 | 显示全部楼层
hhh333 发表于 2014-9-28 11:56
我知道了,配置文件如下:

operation not supported。 至少说明ipxe是成功加载了的。和DHCP已经没关系了。

遇到过这个提示,一般是加载远程文件时没加TFTP://前缀之类的。建议是先ctrl B 进入 ipxe shell 手动加载。
首先是ifstat 查看IP 再是ping 服务器看是否连通。再手动initrd 或 chain 加载后续文件

点评

原则上来说应该与DHCP无关了,但如果将配置改为如下,pxe/efi64/efi32三者都可以启动: 即64位EFI要用VendorClassId和bootfile2来启动  详情 回复 发表于 2014-9-28 12:37
回复

使用道具 举报

 楼主| 发表于 2014-9-28 12:37:35 | 显示全部楼层
我是神仙 发表于 2014-9-28 12:03
operation not supported。 至少说明ipxe是成功加载了的。和DHCP已经没关系了。

遇到过这个提示,一般 ...

原则上来说应该与DHCP无关了,但如果将配置改为如下,pxe/efi64/efi32三者都可以启动:
  1. [License]
  2. Key=BBLZ26803UBBCAT9
  3. Name=Free User

  4. [DHCPsrv]
  5. Profile0=PXE
  6. Profile1=EFI64
  7. Profile2=EFI32
  8. Include=192.168.1.220
  9. TFTPDirectory=C:\
  10. Multicast=0
  11. TestIP=1
  12. TFTPEnable=1
  13. TFTPMode=0
  14. Log=0

  15. [PXE]
  16. SubnetMask=255.255.255.0
  17. BaseIP=192.168.1.100
  18. Range=101
  19. NextIP=192.168.1.220
  20. BootFile=pxelinux.0
  21. RootPath=iscsi:192.168.1.220::3268::H3PE
  22. DNSUpdate=0
  23. VendorClass="PXEClient:Arch:00000:

  24. [EFI64]
  25. SubnetMask=255.255.255.0
  26. BaseIP=192.168.1.100
  27. Range=101
  28. NextIP=192.168.1.220
  29. BootFile=pxelinux.0
  30. DNSUpdate=0
  31. UseOpt=1
  32. Alternate=1
  33. VendorClassId=PXEClient:Arch:00007:
  34. BootFile2=efi/boot/ipxe64.efi
  35. InterfaceIP=192.168.1.220

  36. [EFI32]
  37. SubnetMask=255.255.255.0
  38. BaseIP=192.168.1.100
  39. Range=101
  40. NextIP=192.168.1.220
  41. BootFile=efi/boot/ipxe32.efi
  42. RootPath=iscsi:192.168.1.220::3268::H3PE
  43. DNSUpdate=0
  44. VendorClass="PXEClient:Arch:00006:
复制代码


即64位EFI要用VendorClassId和bootfile2来启动

点评

对 我测试了确实是这样的。而且我以前也一直这是这样测试的,即arch0000就不要测试了。 log=2 查看详细日志的话就会发现 在加上测试arch0000后 hanewin会检测到另外一种arch,即 arch:00009.而不再是arch00007。实  详情 回复 发表于 2014-9-28 12:47
回复

使用道具 举报

 楼主| 发表于 2014-9-28 12:46:56 | 显示全部楼层
再简化一下:
  1. [License]
  2. Key=BBLZ26803UBBCAT9
  3. Name=Free User

  4. [DHCPsrv]
  5. Profile0=EFI64
  6. Profile1=EFI32
  7. Include=192.168.1.220
  8. TFTPDirectory=C:\
  9. Multicast=0
  10. TestIP=1
  11. TFTPEnable=1
  12. TFTPMode=0
  13. Log=0

  14. [EFI64]
  15. SubnetMask=255.255.255.0
  16. BaseIP=192.168.1.100
  17. Range=101
  18. NextIP=192.168.1.220
  19. BootFile=pxelinux.0
  20. DNSUpdate=0
  21. UseOpt=1
  22. Alternate=1
  23. VendorClassId=PXEClient:Arch:00007:
  24. BootFile2=efi/boot/ipxe64.efi
  25. InterfaceIP=192.168.1.220

  26. [EFI32]
  27. SubnetMask=255.255.255.0
  28. BaseIP=192.168.1.100
  29. Range=101
  30. NextIP=192.168.1.220
  31. BootFile=efi/boot/ipxe32.efi
  32. RootPath=iscsi:192.168.1.220::3268::H3PE
  33. DNSUpdate=0
  34. VendorClass="PXEClient:Arch:00006:
复制代码
回复

使用道具 举报

发表于 2014-9-28 12:47:41 | 显示全部楼层
hhh333 发表于 2014-9-28 12:37
原则上来说应该与DHCP无关了,但如果将配置改为如下,pxe/efi64/efi32三者都可以启动:

对 我测试了确实是这样的。而且我以前也一直这是这样测试的,即arch0000就不要测试了。
log=2 查看详细日志的话就会发现 在加上测试arch0000后 hanewin会检测到另外一种arch,即 arch:00009.而不再是arch00007。实际上 9也是正确的arch。 当然为什么会有这个差别就不知道了
回复

使用道具 举报

发表于 2014-9-28 12:58:13 | 显示全部楼层
比如官方网站 http://ipxe.org/cfg/platform 上说可以用 arch00006 或arch0009来进行32位ipxe.efi或64位的不同分发。只不过它用的DHCP服务器是linux上的

If you are using a sophisticated DHCP server such as ISC dhcpd, then you may use the contents of the DHCP request to differentiate between BIOS and EFI clients. The DHCP Client Architecture option (code 93) will indicate the client architecture as specified by RFC 4578:
DHCP option 93         Client architecture
0         Standard PC BIOS
6         32-bit EFI
9         64-bit EFI


You could use this to determine which version of iPXE to provide to a particular client. For example, in /etc/dhcpd.conf:

  option client-arch code 93 = unsigned integer 16;
  if exists client-arch {
     if option client-arch = 0 {
       filename "bin/undionly.kpxe";
     } elsif option client-arch = 6 {
       filename "bin-i386-efi/snponly.efi";
     } elsif option client-arch = 9 {
       filename "bin-x86_64-efi/snponly.efi";
     }
  }


DHCP国际标准是 RFC4578
http://tools.ietf.org/html/rfc4578


As of the writing of this document, the following pre-boot
   architecture types have been requested.

            Type   Architecture Name
            ----   -----------------
              0    Intel x86PC
              1    NEC/PC98
              2    EFI Itanium
              3    DEC Alpha
              4    Arc x86
              5    Intel Lean Client
              6    EFI IA32
              7    EFI BC
              8    EFI Xscale
              9    EFI x86-64

实际上 9 才是正宗的 EFI64
7 是一个什么 EFI BC 意义不是很明确。但是在hanewin里面一般都探测为arch00007 。具体的解释也不是很明了 反正知道这个就行了吧
回复

使用道具 举报

发表于 2014-9-28 13:03:40 | 显示全部楼层
看一下日志

2014-09-24 09:21:59 DHCP  Discov. 00:0c:29:77:aa:f6 (0.0.0.0) uc "iPXE" vc "PXEClient:Arch:00009:UNDI:003010" if 192.168.11.1
2014-09-24 09:30:26 DHCP  Discov. 00:0c:29:77:aa:f6 (0.0.0.0) vc "PXEClient:Arch:00007:UNDI:003016" if 192.168.11.1

原始的DHCP discov 是7
iPXE发出的二次DHCP请求就变成9了。再加上一个user class, uc iPXE

点评

这个不是7或9的问题,有点怪,原则上已经与DHCP无关了,但用bootfile2的方式又可以,真不知道问题在哪里?  详情 回复 发表于 2014-9-28 14:16
回复

使用道具 举报

 楼主| 发表于 2014-9-28 14:16:18 | 显示全部楼层
我是神仙 发表于 2014-9-28 13:03
看一下日志

2014-09-24 09:21:59 DHCP  Discov. 00:0c:29:77:aa:f6 (0.0.0.0) uc "iPXE" vc "PXEClient: ...

这个不是7或9的问题,有点怪,原则上已经与DHCP无关了,但用bootfile2的方式又可以,真不知道问题在哪里?

点评

规则1是这样的 根据DHCP请求的ARCH arch:00000 pxelinux arch:00006 ipxe32 arch:00007 ipxe64 启动时根据匹配的arch分配IP。 所以客户机启动时首先是一个arch:0007的请求,得到了IP 然后又是一个arch:000  详情 回复 发表于 2014-9-28 14:53
事实上确实和DHCP有关.ipxe.efi加载后会再一次DHCP过程,arch是9. 事实上我也测试了一下 再加一个arch为9的配置就可以启动了  详情 回复 发表于 2014-9-28 14:34
回复

使用道具 举报

发表于 2014-9-28 14:34:45 | 显示全部楼层
hhh333 发表于 2014-9-28 14:16
这个不是7或9的问题,有点怪,原则上已经与DHCP无关了,但用bootfile2的方式又可以,真不知道问题在哪里 ...

事实上确实和DHCP有关.ipxe.efi加载后会再一次DHCP过程,arch是9. 事实上我也测试了一下 再加一个arch为9的配置就可以启动了
回复

使用道具 举报

发表于 2014-9-28 14:53:21 | 显示全部楼层
本帖最后由 我是神仙 于 2014-9-28 15:12 编辑
hhh333 发表于 2014-9-28 14:16
这个不是7或9的问题,有点怪,原则上已经与DHCP无关了,但用bootfile2的方式又可以,真不知道问题在哪里 ...


规则1是这样的
根据DHCP请求的ARCH  
arch:00000 pxelinux
arch:00006 ipxe32
arch:00007 ipxe64

启动时根据匹配的arch分配IP。
所以客户机启动时首先是一个arch:0007的请求,得到了IP 然后又是一个arch:00009的请求,根本得不到IP



改动后的规则2是这样的:
根据DHCP请求的ARCH  
如果是arch:00006  则指向ipxe32
如果不是arch:00006 先分配IP,再分配文件名:如果是0007则分配ipxe64,如果不是00007则分配pxelinux

即 不管arch是什么 都会分配ip,但分配的文件名会根据arch而变化

所以客户机启动时首先是一个arch:0007的请求,得到了IP 并成功指向ipxe64 然后又是一个arch:00009的请求,依然得到了IP,但这时的filename实际上指向了pxelinux。不过可用embedscript指向自己的脚本所以也没啥大问题

回复

使用道具 举报

发表于 2014-9-28 15:01:28 | 显示全部楼层
本帖最后由 我是神仙 于 2014-9-28 15:08 编辑

还好这个只要在配置文件中加一行 log=2就可以看到详细的DHCP日志了 总体过程还是明确的

不然还得用抓包工具才能搞清楚这个复杂的DHCP discovery , request, ack,... 等复杂的启动过程。

而且ipxe还会带来二次DHCP的问题。。。


1 dhcp discover: 此为client开始DHCP过程中的第一个请求报文 arch:00007

2 dhcp offer   : 此为server 对dhcpdiscover 报文的响应

3 dhcp request  : 此为client 对dihcpoffer 报文的响应

4 dhcp ack     : server对 dhcprequest 报文的响应,client收到此报文后才真正获得了IP地址和相关配置信息。

5 加载ipxe

6 dhcp discover: 此为client开始DHCP过程中的第一个请求报文  arch:00009

7 dhcp offer   : 此为server 对dhcpdiscover 报文的响应

8 dhcp request  : 此为client 对dihcpoffer 报文的响应

9 dhcp ack     : server对 dhcprequest 报文的响应,client收到此报文后才真正获得了IP地址和相关配置信息。
回复

使用道具 举报

发表于 2014-9-28 18:38:21 | 显示全部楼层
为什么ipxe发出的dhcp不是7 而是变成9?又想了一下 这样区别一下 有助于区分不同的启动阶段。就是说遇到arch为9的基本上就可以认为已经是ipxe了 这时可以把启动文件设置为ipxe的启动脚本了 如menu.ipxe 这样就避免了dhcp循环 并且用不着内嵌脚本embeb

当然直接检测userckass yc是否为iPXE也可以
回复

使用道具 举报

发表于 2014-10-18 09:22:05 来自手机 | 显示全部楼层
内网开了dhcp这个会不会影响dhcp网络分配?
回复

使用道具 举报

发表于 2014-11-5 09:55:55 | 显示全部楼层
这些代码是什么意思啊?放在哪里  分别是怎么连接的  最好做一个压缩包 打开可以直接用的

我的出问题了共享出错了
回复

使用道具 举报

发表于 2014-11-11 06:45:38 | 显示全部楼层
谢谢指点!
回复

使用道具 举报

发表于 2014-11-21 23:14:21 | 显示全部楼层
现在用的比较好的pxe工具是哪个啊?请教大大
回复

使用道具 举报

发表于 2015-1-13 11:47:27 | 显示全部楼层
这个速度是很快,但有个问题,就是不论TFTP还是HTTP,一次一个文件只能被一台客户机器读取。
tiny pxe server提示: 另一个程序正在使用此文件,进程无法访问。
客户端提示:no sunch file或者file no found
这样就相当与单线程了,效率不高。
不知道是否可以请作者改一下呢?
其实,这个功能挺好用的,跟serva一样。

点评

按作者提示,新的版本已经解决了这个问题,允许同时读取了  详情 回复 发表于 2015-3-15 08:07
回复

使用道具 举报

发表于 2015-1-22 20:04:43 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2015-3-3 20:44:35 来自手机 | 显示全部楼层
不错,支持
回复

使用道具 举报

发表于 2015-3-3 20:44:36 来自手机 | 显示全部楼层
不错,支持
回复

使用道具 举报

发表于 2015-3-14 18:24:32 来自手机 | 显示全部楼层
这么说配置个9就解决问题(O_O)?
回复

使用道具 举报

 楼主| 发表于 2015-3-15 08:07:18 | 显示全部楼层
wln 发表于 2015-1-13 11:47
这个速度是很快,但有个问题,就是不论TFTP还是HTTP,一次一个文件只能被一台客户机器读取。
tiny pxe ser ...

按作者提示,新的版本已经解决了这个问题,允许同时读取了

点评

wln
谢谢老大,我下一个试试  详情 回复 发表于 2015-3-16 09:38
wln
谢谢老大,我下一个试试  详情 回复 发表于 2015-3-16 09:38
回复

使用道具 举报

发表于 2015-3-16 09:38:08 | 显示全部楼层
hhh333 发表于 2015-3-15 08:07
按作者提示,新的版本已经解决了这个问题,允许同时读取了

谢谢老大,我下一个试试
回复

使用道具 举报

发表于 2015-3-16 09:38:10 | 显示全部楼层
hhh333 发表于 2015-3-15 08:07
按作者提示,新的版本已经解决了这个问题,允许同时读取了

谢谢老大,我下一个试试
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-17 06:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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