无忧启动论坛

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

[发布] Tiny PXE Server 可以用了

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


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


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

点评

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

4#
发表于 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
回复

使用道具 举报

5#
发表于 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。 当然为什么会有这个差别就不知道了
回复

使用道具 举报

6#
发表于 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 。具体的解释也不是很明了 反正知道这个就行了吧
回复

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

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指向自己的脚本所以也没啥大问题

回复

使用道具 举报

10#
发表于 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地址和相关配置信息。
回复

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-15 01:58

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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