无忧启动论坛

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

[原创] 在PXE服务器上部署ipxe的HTTP、FTP启动,体验极速传输(更新FTP)

    [复制链接]
跳转到指定楼层
1#
发表于 2013-7-17 22:37:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ljycslg 于 2013-8-5 08:52 编辑

重大更新:支持FTP

官方源码内置了FTP协议,但是默认没有打开。现打开重新编译测试发现比HTTP更强
实测速度效率几乎没有损耗,你的网速能有多快那就有多快,不愧是专用文件传输协议FTP!这是网启的一次革命
本人FTP服务使用的是win7内置的iis组件,配置稍显繁琐,大家可以找些小巧的ftp软件
ipxe_ftp.rar (345.31 KB, 下载次数: 1268)
脚本怎么改不用我说了吧
由于有未解决的问题,不再提供直接启动文件
百兆实测128m的iso用时11.6s,每秒11m
千兆不用说了,妙传!


P大的HTTP网启功能虽然比较傻瓜,但不适合DIY
最近研究了下整合到了grub4dos的网启菜单上
虽然ipxe能直接作为启动文件,不过还是用grldr来调用比较好,方便定制菜单DIY
在grub4dos网启菜单添加如下:
title ipxe
kernel /IPXE.KRN
initrd /myscript.ipxe

ipxe.krn为启动文件,myscript.ipxe为脚本文件,这里都放在网启启动目录
myscript.ipxe内容:

  1. #!ipxe
  2.   dhcp
  3.   isset ${next-server} || set next-server 192.168.1.3  #自行指定服务器ip
  4.   initrd http://${next-server}/0PE.ISO
  5.   chain http://${next-server}/grub.exe  --config-file="map (rd)+1 (0xff);map --hook;chainloader (0xff)"
  6.   
复制代码
有了这个就能方便定制你要启动的ISO文件
next-server变量代表tftp服务器,这里假定tftp和http为同一台机, 这条语句表示如果探测不到则指定ip,你可以改成你的服务器ip
ipxe通过http服务把iso加载到了内存,实测直接把百兆速度占满了,秒杀TFTP
最屌暴的是grub的(rd)就是ipxe加载的内容,这样就好玩了,大家可以尽情发挥
下面grub命令熟悉了吧,映射成了光驱然后启动,别忘了把grub.exe放到启动目录中

用pxelinux中的memdisk引导ISO或许比grub.exe更好
  1. chain  http://${next-server}/memdisk iso raw
复制代码
memdisk.rar (13.04 KB, 下载次数: 431)

部署http服务:
P大用的是easywebserver
非常小巧的Web服务器软件。可以很快速地在您的PC上创建一个站点,而无需IIS等庞大复杂的工具。
启动后把目录设置到你存放ISO启动镜像所在目录就行了



IPXE_HTTP.rar (410.25 KB, 下载次数: 792)
如何更新IPXE.KRN?
下载http://boot.ipxe.org/ipxe.iso 里面有最新源码编译生成的IPXE.KRN

更新:ipxe内嵌脚本直接启动文件,默认下载根目录的menu.ipxe菜单脚本,也可通过grldr调用: pxe keep && chainloader --raw (pd)/ipxe.0
ipxe.rar (63.41 KB, 下载次数: 676)

IPXE菜单效果图





菜单示例:
  1. #!ipxe
  2.   #set menu-timeout 8000
  3.    set menu-default 0pe
  4.    isset ${ip} || dhcp
  5.    isset ${next-server} || set next-server 192.168.1.3
  6. :start
  7.   menu iPXE Boot Menu
  8.   item --gap --             --------------------------------- PE --------------------------------
  9.   item winre                BOOT Win7 RE (wimboot)
  10.   item 0pe                  BOOT Pseudo 0PE (iso)
  11.   item TangoPE              BOOT Tango PE (iso)
  12.   item --gap --             -------------------------------- TOOL --------------------------------
  13.   item maxdos               Maxdos Tool
  14.   item memtest              Memtest86
  15.   item --gap --             ---------------------------- Advanced options -----------------------
  16.   item --key c config       Configure settings                                   -- c
  17.   item --key p pxelinux     Load PXELinux menu                                   -- p
  18.   item shell                Drop to iPXE shell
  19.   item reboot               Reboot computer
  20.   item --key x exit         Exit iPXE and continue BIOS boot                     -- x
  21.   choose --timeout ${menu-timeout} --default ${menu-default} selected
  22.   goto ${selected}

  23. :shell
  24.   echo Type 'exit' to get the back to the menu
  25.   shell
  26.   goto start

  27. :failed
  28.   echo Booting failed, dropping to shell
  29.   goto shell

  30. :reboot
  31.   reboot

  32. :exit
  33.   exit

  34. :config
  35.   config
  36.   goto start

  37. :pxelinux
  38.   chain http://${next-server}/pxelinux.0 || goto failed
  39.   goto start

  40. :memtest
  41.   chain http://${next-server}/MAXDOS/memtest.bin || goto failed  #http://boot.ipxe.org/memtest.bin
  42.   goto start

  43. :maxdos
  44.   initrd http://${next-server}/MAXDOS/max9.3.ima
  45.   chain http://${next-server}/memdisk || goto failed

  46. :0pe
  47.   initrd http://${next-server}/ISO/0PE.ISO
  48.   chain  http://${next-server}/memdisk iso raw
  49. #chain http://${next-server}/ISO/grub.exe --config-file="map (rd)+1 (0xff);map --hook;chainloader (0xff)"

  50. :TangoPE
  51.   initrd http://${next-server}/ISO/TangoPE_NET.ISO
  52.   chain http://${next-server}/memdisk iso raw

  53. :winre
  54.   kernel http://${next-server}/wimboot                                #http://git.ipxe.org/releases/wimboot/wimboot-latest.zip
  55.   initrd http://${next-server}/ISO/winre/bootmgr     bootmgr
  56.   initrd http://${next-server}/ISO/winre/BCD         BCD
  57.   initrd http://${next-server}/ISO/winre/boot.sdi    boot.sdi
  58.   initrd http://${next-server}/ISO/winre/winre.wim   boot.wim
  59.   boot || goto failed
  60.   goto start
复制代码

点评

谢谢,真的是太需要了!已经百度了好久!!  发表于 2013-7-22 22:47

评分

参与人数 10无忧币 +46 收起 理由
zmeshow + 5
nytc006 + 5 很给力!
cathywife + 5 很给力!
Myptour + 5
july8nd + 1 判断FTP or HTTP 启动方式进行加载,可行?
ddianxing + 5 很给力!
zhanguser + 5 很给力!
fukystone + 5 很给力!
2011cwj6958 + 5 赞一个!
北斗 + 5 谢谢分享!

查看全部评分

推荐
发表于 2013-7-17 23:01:28 | 只看该作者
这个还是有很大的局限性,不能在启动的时候加载扩展

点评

我欲封天 www.wbiquge.com/0_1/  发表于 2014-11-13 17:06
6c8ec 焚天之怒 www.68la.com/read/19/19790/  发表于 2014-8-26 01:58
回复

使用道具 举报

推荐
发表于 2013-7-18 11:05:59 | 只看该作者
楼主的“自用DIY 0PE全自动PXE启动加载及远程控制”感觉很好。
回复

使用道具 举报

4#
发表于 2013-7-17 23:05:59 | 只看该作者
适合其它PE普及http网启
回复

使用道具 举报

5#
发表于 2013-7-18 09:00:52 | 只看该作者
谢谢楼主分享,收藏了
回复

使用道具 举报

6#
 楼主| 发表于 2013-7-18 12:31:36 | 只看该作者
今天测试了两台机都不行,兼容性不理想
直接把ipxe作为启动文件就可以
希望grub能直接支持HTTP,省得调来去

点评

楼主能详细说下兼容性不理想的具体情况吗?  详情 回复 发表于 2013-7-22 20:38
p大的网启我也看了,也是比较方便,直接把可启动ISO改名为0pe.iso就可以了 兼容性也许是pxe参数设置问题,更和网卡有很大关系  详情 回复 发表于 2013-7-18 14:02
回复

使用道具 举报

7#
发表于 2013-7-18 14:02:56 | 只看该作者
ljycslg 发表于 2013-7-18 12:31
今天测试了两台机都不行,兼容性不理想
直接把ipxe作为启动文件就可以
希望grub能直接支持HTTP,省得调来 ...

p大的网启我也看了,也是比较方便,直接把可启动ISO改名为0pe.iso就可以了
兼容性也许是pxe参数设置问题,更和网卡有很大关系
回复

使用道具 举报

8#
发表于 2013-7-22 18:46:25 | 只看该作者
TFTP速度有个时候很蛋疼,特别是TFTPD32那个服务端,速度非常的不稳定,改成HTTP确实要快多了。

点评

TFTP慢的原因很多,服务器的网卡型号、驱动的版本,交换机,双绞线,水晶头,客户机的网卡型号以及PXE BootRom的版本等等都会影响到TFTP的速度,也许还要带上外部的电磁干扰。 一直hanewin+grub+pxe启动的路过。  详情 回复 发表于 2013-7-22 19:49
回复

使用道具 举报

9#
发表于 2013-7-22 19:49:34 | 只看该作者
本帖最后由 北斗 于 2013-7-22 19:51 编辑
switch131 发表于 2013-7-22 18:46
TFTP速度有个时候很蛋疼,特别是TFTPD32那个服务端,速度非常的不稳定,改成HTTP确实要快多了。


TFTP慢的原因很多,服务器的网卡型号、驱动的版本,交换机,双绞线,水晶头,客户机的网卡型号以及PXE BootRom的版本等等都会影响到TFTP的速度,也许还要带上外部的电磁干扰。

根据自己的经验,百兆环境的TFTP速度一般在3MB~5MB/s左右,千兆环境在8MB~11MB/s左右。

一直hanewin+grub+pxe启动的路过。

点评

确实,要找到一种方便部署又效率高的方法比较麻烦.  详情 回复 发表于 2013-12-24 09:32
回复

使用道具 举报

10#
发表于 2013-7-22 19:54:14 | 只看该作者
本帖最后由 ddianxing 于 2013-8-3 11:24 编辑

1、以grldr启动文件,HTTP、FTP协议的在实机和虚拟机上均测试成功!在虚拟机中FTP没有HTTP快,在实机中两者差不多!

2、以ipxe.0为启动文件,实机中和虚拟机中均不成功,虚拟机在可以进入那个蓝色的菜单,但Winre和0PE都无法启动(如下图);实机中加载完启动文件就退出了,菜单都看不到……

回复

使用道具 举报

11#
发表于 2013-7-22 20:26:20 | 只看该作者
谢谢楼主的分享。

刚刚简单测试了一下,客户机百兆网卡的情况下,基本上可以达到网卡传输的极限(10MB+/s),千兆环境下的ISO传输的速度在20~30MB/s左右。单纯就传输速度比较,HTTP方式的速度比TFTP确实快2~3倍,对于体积比较大的ISO来说,是个很好的消息。
回复

使用道具 举报

12#
发表于 2013-7-22 20:38:23 | 只看该作者
ljycslg 发表于 2013-7-18 12:31
今天测试了两台机都不行,兼容性不理想
直接把ipxe作为启动文件就可以
希望grub能直接支持HTTP,省得调来 ...

楼主能详细说下兼容性不理想的具体情况吗?

点评

啥情况都有,主要是老机,新机还好 有的加载完iso提升重启,有的dhcp时获取不到ip,有的直接死机,有的死循环 目前我调用P大的那个64k的内嵌脚本IPXE还没遇到失败的案例 title ipxe pxe keep chainloader --r  详情 回复 发表于 2013-7-22 21:15
回复

使用道具 举报

13#
 楼主| 发表于 2013-7-22 21:15:08 | 只看该作者
北斗 发表于 2013-7-22 20:38
楼主能详细说下兼容性不理想的具体情况吗?

啥情况都有,主要是老机,新机还好
有的加载完iso提升重启,有的dhcp时获取不到ip,有的直接死机,有的死循环
目前我调用P大的那个64k的内嵌脚本IPXE还没遇到失败的案例

title ipxe
pxe keep
chainloader --raw (pd)/ipxe

但是要通过菜单加载其它iso得话就就麻烦了,改名iso不方便,一个iso对应一个ipxe的话要重新编译

点评

我刚刚测试用的一台P3古董机一切正常,你测试的老机的网卡如果是独立的,可以换PCI槽,或者换其它型号的网卡再试试,再有条件可以换PXE BootROM代码,如果主板集成网卡,也可以屏蔽集成网卡,换独立网卡试试。以前我  详情 回复 发表于 2013-7-22 21:51
回复

使用道具 举报

14#
发表于 2013-7-22 21:51:13 | 只看该作者
ljycslg 发表于 2013-7-22 21:15
啥情况都有,主要是老机,新机还好
有的加载完iso提升重启,有的dhcp时获取不到ip,有的直接死机,有的死 ...

我刚刚测试用的一台P3古董机一切正常,你测试的老机的网卡如果是独立的,可以换PCI槽,或者换其它型号的网卡再试试,再有条件可以换PXE BootROM代码,如果主板集成网卡,也可以屏蔽集成网卡,换独立网卡试试。以前我测试PXE启动的时候,也遇到过类似的情况,你可以参考一下。

另外那个64K内嵌脚本的IPXE能不能上传一下,大家一起来研究,谢谢。

点评

换网卡也不是办法,要是遇到笔记本那就不行了 P大的ipxe要用16进制编辑器改成你的服务器Ip,默认加载网启根目录下的0pe.iso  详情 回复 发表于 2013-7-22 22:07
回复

使用道具 举报

15#
 楼主| 发表于 2013-7-22 22:07:09 | 只看该作者
北斗 发表于 2013-7-22 21:51
我刚刚测试用的一台P3古董机一切正常,你测试的老机的网卡如果是独立的,可以换PCI槽,或者换其它型号的网 ...

换网卡也不是办法,要是遇到笔记本那就不行了
P大的ipxe要用16进制编辑器改成你的服务器Ip,默认加载网启根目录下的0pe.iso
ipxe.rar (62.39 KB, 下载次数: 150)

点评

好的,谢谢! 等我有时间再找其它的比较老的机器测试一下,有结果了再来反馈  详情 回复 发表于 2013-7-22 22:11
回复

使用道具 举报

16#
发表于 2013-7-22 22:11:53 | 只看该作者
ljycslg 发表于 2013-7-22 22:07
换网卡也不是办法,要是遇到笔记本那就不行了
P大的ipxe要用16进制编辑器改成你的服务器Ip,默认加载网启 ...

好的,谢谢!

等我有时间再找其它的比较老的机器测试一下,有结果了再来反馈
回复

使用道具 举报

17#
发表于 2013-7-23 09:34:14 | 只看该作者
谢谢楼主分享,收藏了
回复

使用道具 举报

18#
发表于 2013-7-23 12:39:12 | 只看该作者
老机测试结果小结一下:
主板平台:VIA 694X、Intel 845、nVidia 6150、VIA PT880、Intel P45、AMD 780G。
网卡型号:Intel 82559、82540;瑞昱8169、8139、8111;VIA 6015、6102;BCM 5721。
iPXE版本:楼主顶楼最先提供的iPXE


测试的结果是:绝大部分都能正常(HTTP高速)加载ISO并引导PE,只有瑞昱的8169这个网卡稍微有点问题。瑞昱8169以HTTP方式加载ISO正常,但之后加载grub.exe会比较慢,因主板不同而慢的程度不同,总之就是慢。等有时间换个其它版本的BootRom看看能不能好些。

总之iPXE的兼容性我觉得还好,就是客户机PXE启动时,服务器要开两个服务稍嫌麻烦。

点评

原来是我的脚本有问题,顶楼脚本有更新,改进后原来失败的现在成了!  详情 回复 发表于 2013-7-23 13:11
回复

使用道具 举报

19#
 楼主| 发表于 2013-7-23 13:11:51 | 只看该作者
北斗 发表于 2013-7-23 12:39
老机测试结果小结一下:
主板平台:VIA 694X、Intel 845、nVidia 6150、VIA PT880、Intel P45、AMD 780G。 ...

原来是我的脚本有问题,顶楼脚本有更新,改进后原来失败的现在成了!

点评

大家一起来测试和改进它 我测试用的一直都是昨天的脚本,我只把脚本中的${next-server}改成我的服务器IP,ISO名称改为我自己的ISO,其它的都没有改动,测试都正常。 另外提醒一下后来的朋友,引导用到的grldr和  详情 回复 发表于 2013-7-23 13:41
回复

使用道具 举报

20#
发表于 2013-7-23 13:41:42 | 只看该作者
ljycslg 发表于 2013-7-23 13:11
原来是我的脚本有问题,顶楼脚本有更新,改进后原来失败的现在成了!

大家一起来测试和改进它

我测试用的一直都是昨天的脚本,我只把脚本中的${next-server}改成我的服务器IP,ISO名称改为我自己的ISO,其它的都没有改动,测试都正常。

另外提醒一下后来的朋友,引导用到的grldr和grub.exe最好是同一个版本的,不同版本的混用会导致一些问题,比如不能引导PE。
回复

使用道具 举报

21#
发表于 2013-7-23 18:02:42 | 只看该作者
好东西,谢谢教程。
另外,老兄能否把那个WIMBOOT也看看?就是用ipxe引导NT6X的PE……

点评

我试了下只能启动微软原版镜像,各种PE都启动不了,作用不大  详情 回复 发表于 2013-7-23 20:06
回复

使用道具 举报

22#
 楼主| 发表于 2013-7-23 20:06:30 | 只看该作者
fukystone 发表于 2013-7-23 18:02
好东西,谢谢教程。
另外,老兄能否把那个WIMBOOT也看看?就是用ipxe引导NT6X的PE……

我试了下只能启动微软原版镜像,各种PE都启动不了,作用不大
回复

使用道具 举报

23#
发表于 2013-7-23 21:22:34 | 只看该作者
说 了半天 我也不会啊,

点评

懒得DIY的话,可以这样简单实施http网启: 1、从0PE外置工具PXE服务器目录提取一个StartServer.cmd文件 2、准备好要启动的PE的ISO,改名为0PE.ISO,跟StartServer.cmd放在一起 3、运行StartServer.cmd(免配置),  详情 回复 发表于 2013-7-24 20:44
tftp+Grub4DOS+iPXE过程的描述: 1、准备好可以提供TFTP服务的软件、Grub4DOS中的grldr和grub.exe,要启动的PE ISO; 2、配置TFTP服务器,将grldr做为引导文件,同时配置menu.lst,菜单项中指向iPXE,并配置iP  详情 回复 发表于 2013-7-24 18:59
回复

使用道具 举报

24#
发表于 2013-7-24 13:48:03 | 只看该作者
虚拟机中试过,实际还没有,但已经感觉到http的强大了
回复

使用道具 举报

25#
发表于 2013-7-24 18:59:12 | 只看该作者
2012xvx 发表于 2013-7-23 21:22
说 了半天 我也不会啊,

tftp+Grub4DOS+iPXE过程的描述:

1、准备好可以提供TFTP服务的软件、Grub4DOS中的grldr和grub.exe,要启动的PE ISO;

2、配置TFTP服务器,将grldr做为引导文件,同时配置menu.lst,菜单项中指向iPXE,并配置iPXE的配置文件,指定HTTP服务器和要启动的ISO;

3、客户机打开PXE启动选项并设定为第一启动(一般在BIOS中),或者开机按Fx之类的热键呼出PC的PopBBS启动选择菜单也可以,选择PXE启动。

基本就是这个过程。
回复

使用道具 举报

26#
发表于 2013-7-24 20:44:10 | 只看该作者
2012xvx 发表于 2013-7-23 21:22
说 了半天 我也不会啊,

懒得DIY的话,可以这样简单实施http网启:
1、从0PE外置工具PXE服务器目录提取一个StartServer.cmd文件
2、准备好要启动的PE的ISO,改名为0PE.ISO,跟StartServer.cmd放在一起
3、运行StartServer.cmd(免配置),客户机选择从PXE启动
回复

使用道具 举报

27#
发表于 2013-7-25 10:00:44 | 只看该作者
的确很强大!
回复

使用道具 举报

28#
发表于 2013-7-25 14:08:27 | 只看该作者
本帖最后由 zbkh 于 2013-7-25 14:12 编辑

我是从楼主的这个帖子知道ipxe的,我百度了这篇:http://www.ipxe.org/howto/winpe
我的理解是在一台计算机安装iis这个组件,然后把pe的 启动文件放在iis的默认目录,然后在我需要启动pe的计算机用ipxe.iso(下载:http://boot.ipxe.org/ipxe.iso)文件引导计算机进入命令行,
执行dhcp获取ip;
route查看ip配置情况;
然后利用一个命令从iis目录下载启动文件(我猜是boot或者chain命令)
不过我失败了!


请教楼主我的理解哪里有问题呢?
先谢谢了!

点评

http路径不通,可以先用浏览器确认服务器iis部署正确  详情 回复 发表于 2013-7-25 14:31
回复

使用道具 举报

29#
 楼主| 发表于 2013-7-25 14:31:21 | 只看该作者
zbkh 发表于 2013-7-25 14:08
我是从楼主的这个帖子知道ipxe的,我百度了这篇:http://www.ipxe.org/howto/winpe
我的理解是在一台计算机 ...

http路径不通,可以先用浏览器确认服务器iis部署正确

点评

我测试过,好像没有什么问题! 请问我的这种想法是不是正确的?我之前没有搭建ipxe,这是第一次!呵呵!  详情 回复 发表于 2013-7-25 15:08
回复

使用道具 举报

30#
发表于 2013-7-25 15:08:50 | 只看该作者
ljycslg 发表于 2013-7-25 14:31
http路径不通,可以先用浏览器确认服务器iis部署正确

我测试过,好像没有什么问题!


请问我的这种想法是不是正确的?我之前没有搭建ipxe,这是第一次!呵呵!

点评

路径后跟上boot.ipxe能显示内容吗,IIS我是没玩过,不懂怎么配置  详情 回复 发表于 2013-7-25 15:11
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-19 13:52

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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