无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
123
返回列表 发新帖
楼主: 歌理
打印 上一主题 下一主题

[严重分享10.9更新PE、windows通用]100%免配的PXE网启服务器CMD(DHCP、TFTPD32)

[复制链接]
61#
发表于 2009-12-26 13:52:20 | 只看该作者
谁把PxeGrldr.0 STARTROM.0-pxesetupldr.exe NTDETECT.COM打包提供下
回复

使用道具 举报

62#
发表于 2009-12-27 14:36:41 | 只看该作者
用PE成功引导,但用XP不成功
回复

使用道具 举报

63#
发表于 2009-12-27 16:36:10 | 只看该作者
从用骨头版里的启动文件在xp下引导成功
回复

使用道具 举报

64#
发表于 2010-2-2 23:35:51 | 只看该作者
我使用的是“我心如水 Server 2003 PE v12.00 网启版”,PXE客户端启动的时候获得IP了,但是在TFTP这个环节出问题了。见下图。

网上查了是因为TFTP权限问题导致不能读取启动文件,请教各位大侠这个问题怎么解决。万分感谢。


还有,下面是我使用的CMD文件。红色的部分是我自己更改的。

@echo off
title   WinPE\WINDOWS通用网启服务端
PUSHD %~dp0
SET TP=%CD%
rem ==========以下此行为启动引导文件,请自行修改,启动文件与本cmd同分区即可=======
set bootfile=PXELINUX.0
rem ==========================================================
if not exist %TP%\dhcp4nt.exe echo 当前目录下找不到文件:DHCP4NT.EXE &&pause &&exit
echo 正在自动搜索启动文件,可能需要一些时间,请稍等。。。
set BaseDirectory=
set  bootdrver=%~d0
if exist %bootdrver%\%bootfile% set BaseDirectory=%bootdrver%\&&goto copyfile
for /f "usebackq" %%i in (`dir "%bootdrver%\%bootfile%" /s/b`) do set BaseDirectory=%%~dpi
if %BaseDirectory%.==. echo 在 %bootdrver%盘上 找不到启动文件:%bootfile%  &&pause
:copyfile
copy DHCP*.* %temp% /y >nul
set tp=%temp%
%TP%\dhcp4nt.exe -remove >nul
setlocal
set/a a=-2
for /f "usebackq tokens=2 delims=:" %%i in (`ipconfig`) do (
set b=%%i
call :getip
)
for /f "tokens=1-3,4 delims=." %%i in ("%_myip%") do set IP_Pool=%%i.%%j.%%k.100
>%TP%\DHCPsrv.ini echo.[License]
>>%TP%\DHCPsrv.ini echo.Key=BBLZ26803UBBCAT9
>>%TP%\DHCPsrv.ini echo.Name=Free User
>>%TP%\DHCPsrv.ini echo.[DHCPsrv]
>>%TP%\DHCPsrv.ini echo.Profile0=本地连接
>>%TP%\DHCPsrv.ini echo.TFTPDirectory=%BaseDirectory%
>>%TP%\DHCPsrv.ini echo.Multicast=0
>>%TP%\DHCPsrv.ini echo.TFTPEnable=1
>>%TP%\DHCPsrv.ini echo.TFTPPort=69
>>%TP%\DHCPsrv.ini echo.TFTPMode=0
>>%TP%\DHCPsrv.ini echo.Log=0
>>%TP%\DHCPsrv.ini echo.TestIP=1
>>%TP%\DHCPsrv.ini echo.ChangeIP=1
>>%TP%\DHCPsrv.ini echo.EnableMAC=1
rem 有多个网卡时,如不能确定那个网卡,可以将下面此行去掉
>>%TP%\DHCPsrv.ini echo.Include=%_myip%
>>%TP%\DHCPsrv.ini echo.[本地连接]
>>%TP%\DHCPsrv.ini echo.SubnetMask=%_mask%
>>%TP%\DHCPsrv.ini echo.BaseIP=%IP_Pool%
>>%TP%\DHCPsrv.ini echo.Range=101
>>%TP%\DHCPsrv.ini echo.BootFile=%bootfile%
>>%TP%\DHCPsrv.ini echo.GatewayIP=%_Gateway%
>>%TP%\DHCPsrv.ini echo.InterfaceIP=%_myip%
endlocal
%tp%\dhcp4nt.exe -install >nul
start %tp%\dhcpsrv.cpl
if not exist x:\*.* goto windows
PECMD.EXE LINK !%%DESKTOP%%\HaneWin网启服务端,%tp%\dhcpsrv.cpl,,%tp%\dhcp.ico
PECMD.EXE LINK !%%Programs%%\网络启动服务器\开启HaneWin网络启动服务端,%tp%\dhcp4nt.exe,-install,shell32.dll#96
PECMD.EXE LINK !%%Programs%%\网络启动服务器\关闭HaneWin网络启动服务端,%tp%\dhcp4nt.exe,-remove,shell32.dll#95
PECMD.EXE LINK !%%Programs%%\网络启动服务器\HaneWin网启服务端,%tp%\dhcpsrv.cpl,,%tp%\dhcp.ico
PECMD FILE "%%DESKTOP%%\开启HaneWin网络启动服务端.*"
PECMD FILE "%%DESKTOP%%\TFTPD32网络启动服务端.*"
echo 删除共享名PEroot,建立共享名为Peroot共享资源为%BaseDirectory%
PECMD EXEC CMD /C "net share PEROOT /d"
PECMD EXEC CMD /C "net share PEROOT=%BaseDirectory% /unlimited"
rem PECMD FIND EXPLORER.EXE,KILL EXPLORER.EXE
echo.
echo  已将本机光盘 %BaseDirectory% 共享给远程客户(\\Winpe\PEROOT,用户名:Guest,密码为空)
:windows
echo.
echo.
echo  远程启动网启服务器.启动成功!
pause
EXIT

:getip
set /a a=%a%+1
if %a%==1 set _myip=%b%
if %a%==2 set _mask=%b%
if %a%==3 set _Gateway=%b%
goto :eof

[ 本帖最后由 pp12416 于 2010-2-2 23:38 编辑 ]

pxe.JPG (36.68 KB, 下载次数: 93)

pxe.JPG
回复

使用道具 举报

65#
发表于 2010-5-3 02:18:03 | 只看该作者
收下了!谢谢....
回复

使用道具 举报

66#
发表于 2010-5-8 20:55:05 | 只看该作者
我的故障和64#的一样
回复

使用道具 举报

67#
发表于 2010-5-8 20:55:55 | 只看该作者
但是用DHCP很成功
回复

使用道具 举报

68#
发表于 2011-3-25 01:26:53 | 只看该作者
最近在研究 PXE 和 U启,看到了楼主的帖子,进来学习学习。

楼主没有提供相关文件下载,所以,研究了半天才搞明白,一开始根本没有头绪,先是在百度搜索“PXE 启动 PE”的相关文章,然后下载了相关的文件,后来根据楼主提供的方法修改文件名,可是搞了半天,还是没弄明白。

不知道楼主的 PxeGrldr.0 从何而来,内容如何,按照楼主的“GRLDR(即本例中的PxeGrldr.0)-----STARTROM.0-----pxesetupldr.exe-------NTDETECT.COM----(wnt.xpe配置文件向winPE.IS_或ewinpe.ISO)----启动winpe.iso完成pE启动”这个思路来做,还是一头雾水。

后来开始啃读楼主的批处理,终于把批处理看明白了,可是还是不知道 PxeGrldr.0 该怎么搞,没办法,就是启动不成功。

无奈,继续百度找资料,找到了 Climbing 大侠的文章“PXE服务器架设指南及PXE启动WinPE解决方案小结”,地址如下:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=106538

终于让我看懂了,原来 PXE 的启动并不复杂,只要指定好了正确的启动文件就OK了,只要“符合pxe启动规范”的文件就是正确的启动文件,startrom.n12 刚好就是这样的文件,楼主的 PxeGrldr.0 属于 grub4dos 的启动文件,然后调用  NTLDR 的启动文件,这样绕了一个弯,把我绕迷糊了。

引用 Climbing 大侠的文章内容:
startrom.n12:这个文件从Windows 2003 SP1/SP2光盘中来,这个文件实际上也是一个符合pxe启动规范的启动文件,可以直接作为pxe服务器的启动文件来直接运行,当然,它也可以通过pxelinux的kernel命令来运行,我不知道grub4dos是否识别它的文件格式,如果能够识别,原理上它也可以使用grub4dos的kernel命令来执行,否则就使用chainloader --force命令来执行。


所以 PXE 的启动可以从 startrom.n12 开始:
startrom.n12 -> ntldr(setupldr.exe) -> NTDETECT.COM -> winnt.sif-> WINPE.ISO -> 完成PE启动


好了,把 PXE 的启动原理搞清楚了,我就开始试着用老毛桃的 PE 搭建一个 PXE 服务器。

将下载下来的文件进行改名:

NTDETECT.COM 不用改
SETUPLDR.EXE 改成 ntldr
STARTROM.N12 不用改
WINNT.SIF 自己创建(文本文件)


然后修改文件:

用 UltraEdit 打开 ntldr 文件,将里面的 I386 全部替换为 WXPE,保存。

然后,我就开始给楼主的批处理加注释,并进行相应的修改,完成了对 PXE 服务器架设的初步研究。修改后的批处理内容如下:
  1. @echo off

  2. rem --- 设置提示文字,方便调试 ----
  3. prompt PXE:

  4. rem --- 设置当前目录 ---
  5. set ThisDir=%~dp0
  6. pushd %ThisDir%

  7. rem --- 设置 PXE 服务器目录 ---
  8. set PXESvrDir=%ThisDir%TFTPD32

  9. rem --- PXE 设置引导文件 ---
  10. set BootFile=STARTROM.N12
  11. if not exist "%PXESvrDir%\TFTPD32.EXE" echo "找不到文件:%PXESvrDir%\TFTPD32.EXE" && pause && exit

  12. echo 正在自动搜索启动文件,可能需要一些时间,请稍等。。。
  13. set BootDir=

  14. rem --- 如果 PXE 启动文件和本程序在同一目录,则直接使用,否则在本目录及其子目录中查找 ---
  15. if exist "%ThisDir%%BootFile%" set BootDir=%ThisDir% && goto :KillServer

  16. rem --- 在当前目录及其子目录中查找 PXE 启动文件,找不到则退出 ---
  17. for /f "usebackq delims==" %%i in (`dir "%ThisDir%%BootFile%" /s/b`) do set BootDir=%%~dpi
  18. if "%BootDir%."=="." echo "在 %BootDir% 中找不到启动文件:%BootFile%"  && pause && exit

  19. rem --- 结束 PXE 服务器进程,避免冲突 ---
  20. :KillServer
  21. PECMD FIND DHCP4NT.EXE,KILL DHCP4NT.EXE
  22. PECMD FIND TFTPD32.EXE,KILL TFTPD32.EXE

  23. rem --- 将数字 -2 存入变量 a 中,用于跳过 ipconfig 命令结果中的前 2 个冒号分隔符 ---
  24. set /a a=-2

  25. rem --- 获取 IP 相关信息,并存入相应的变量中 ---
  26. for /f "usebackq tokens=2 delims=:" %%i in (`ipconfig`) do (

  27. rem --- 去掉开头的空格 ---
  28. for /f "tokens=1" %%a in ("%%i") do set IPNum=%%a

  29. call :SetTempIPVar
  30. )

  31. rem --- 设置 IP 起始地址为 *.*.*.100 ---
  32. for /f "tokens=1-4 delims=." %%i in ("%_myip%") do set _startip=%%i.%%j.%%k.100

  33. rem --- 转换IP地址、网关和掩码 ---
  34. for /f "tokens=1-4 delims=." %%i in ("%_startip%") do set/a IP_Pool=%%l*256*256*256+%%k*256*256+%%j*256+%%i
  35. for /f "tokens=1-4 delims=." %%i in ("%_mask%") do set/a mask=%%l*256*256*256+%%k*256*256+%%j*256+%%i
  36. for /f "tokens=1-4 delims=." %%i in ("%_Gateway%") do set/a Gateway=%%l*256*256*256+%%k*256*256+%%j*256+%%i

  37. rem --- 将收集到的信息写入配置文件,供 PXE 服务器使用 ---
  38. >"%PXESvrDir%\TFTPD32.INI" echo.[TFTPD32]
  39. >>"%PXESvrDir%\TFTPD32.INI" echo.Console Password=tftpd32
  40. >>"%PXESvrDir%\TFTPD32.INI" echo.TftpPort=69
  41. >>"%PXESvrDir%\TFTPD32.INI" echo.Negociate=1
  42. >>"%PXESvrDir%\TFTPD32.INI" echo.ShowProgressBar=1
  43. >>"%PXESvrDir%\TFTPD32.INI" echo.Timeout=3
  44. >>"%PXESvrDir%\TFTPD32.INI" echo.MaxRetransmit=6
  45. >>"%PXESvrDir%\TFTPD32.INI" echo.SecurityLevel=1
  46. >>"%PXESvrDir%\TFTPD32.INI" echo.UnixStrings=1
  47. >>"%PXESvrDir%\TFTPD32.INI" echo.Services=47
  48. >>"%PXESvrDir%\TFTPD32.INI" echo.PersistantLeases=1
  49. >>"%PXESvrDir%\TFTPD32.INI" echo.DHCP Ping=1
  50. >>"%PXESvrDir%\TFTPD32.INI" echo.Max Simultaneous Transfers=100
  51. >>"%PXESvrDir%\TFTPD32.INI" echo.BaseDirectory=%BootDir%
  52. >>"%PXESvrDir%"\TFTPD32.INI echo.[DHCP]
  53. >>"%PXESvrDir%"\TFTPD32.INI echo.IP_Pool=%IP_Pool%
  54. >>"%PXESvrDir%"\TFTPD32.INI echo.PoolSize=100
  55. >>"%PXESvrDir%"\TFTPD32.INI echo.Gateway=%Gateway%
  56. >>"%PXESvrDir%"\TFTPD32.INI echo.Mask=%mask%
  57. rem >>"%PXESvrDir%\TFTPD32.INI" echo.DNS=%Gateway%
  58. >>"%PXESvrDir%\TFTPD32.INI" echo.BootFile=%BootFile%

  59. rem --- 启动 PXE 服务器 ---
  60. PECMD EXEC "%PXESvrDir%\TFTPD32.EXE"

  61. rem --- 如果不存在 X 盘,则进入 Windows 环境的启动过程 ---(这里没有进行系统环境的判断)
  62. rem PECMD LINK !%%DESKTOP%%网络启动服务端,%PXESvrDir%TFTPD32.EXE
  63. rem PECMD LINK !%%Programs%%\网络启动服务器\网络启动服务端,%PXESvrDir%TFTPD32.EXE
  64. rem PECMD FILE "%%DESKTOP%%\开启HaneWin网络启动服务端.*"
  65. rem PECMD FILE "%%DESKTOP%%\开启TFTPD32网络启动服务端.*"

  66. rem --- 共享 PXE 启动目录 ---
  67. rem 删除共享名 PERoot$,建立共享名 PERoot$,共享资源为 %BootDir%
  68. PECMD EXEC !CMD /C net share PEROOT$ /d

  69. rem --- 这样的共享在 Windows 下都看不到共享信息,属于全隐藏共享(研究代码的时候刚发现) ---
  70. PECMD EXEC !CMD /C net share PEROOT$="%BootDir%." /unlimited

  71. echo.
  72. echo  已将本机目录 %BootDir% 共享给远程客户
  73. echo.
  74. echo  访问地址:\\%_myip%\PEROOT$,用户名:Guest,密码为空
  75. echo.
  76. echo.
  77. echo.
  78. echo  远程启动网启服务器.启动成功!
  79. echo.
  80. echo.
  81. echo.
  82. pause

  83. call explorer "\\%_myip%\PEROOT$"
  84. exit

  85. rem --- 设置 IP 相关变量,临时使用 ---
  86. :SetTempIPVar
  87. set /a a=%a%+1
  88. if %a%==1 set _myip=%IPNum%
  89. if %a%==2 set _mask=%IPNum%
  90. if %a%==3 set _Gateway=%IPNum%
  91. goto :eof
复制代码


然后我又测试了老九的 CMDPE (当然要再次修改 ntldr 和 winnt.sif),可以正常启动,然后,我就发表了这个帖子,希望能对大家有所帮助。

在此谢谢楼主的批处理,写的很棒!还要谢谢 Climbing 大侠的技术文章,精辟!

我已经将修改好的文件打包上传,需要的朋友可以下载研究。(注:这个批处理不能放在光盘上使用,因为它要写 TFTP32.ini ,为了方便研究,我没有将 TFTP32.exe 复制到临时文件夹,此批处理只是为了研究 PXE 的启动原理,如果要搭建自己的免配置 PXE 服务器,可以进一步修改这个批处理。)



附件:
PXE 启动 PE(成功).001.7z (98 KB, 下载次数: 174)
PXE 启动 PE(成功).002.7z (98 KB, 下载次数: 155)
PXE 启动 PE(成功).003.7z (98 KB, 下载次数: 158)
PXE 启动 PE(成功).004.7z (73.95 KB, 下载次数: 152)



说明:
由于无忧对上传附件的限制,无法上传   .001   .002   这样的文件,所以大家下载后,需要将文件改名,然后用 7z 解压缩。可以用下面的批处理来改名:
  1. ren "PXE 启动 PE(成功).001.7z" "PXE 启动 PE(成功).7z.001"
  2. ren "PXE 启动 PE(成功).002.7z" "PXE 启动 PE(成功).7z.002"
  3. ren "PXE 启动 PE(成功).003.7z" "PXE 启动 PE(成功).7z.003"
  4. ren "PXE 启动 PE(成功).004.7z" "PXE 启动 PE(成功).7z.004"
复制代码







`

[ 本帖最后由 stevenldj 于 2011-3-25 01:59 编辑 ]
回复

使用道具 举报

69#
发表于 2011-4-21 16:28:26 | 只看该作者

回复 #68 stevenldj 的帖子

老大为什么我的 就不可以呢? 我的显示的内容是 tftp time out
回复

使用道具 举报

70#
发表于 2011-4-21 17:29:19 | 只看该作者
原帖由 stevenldj 于 2011-3-25 01:26 发表
最近在研究 PXE 和 U启,看到了楼主的帖子,进来学习学习。

楼主没有提供相关文件下载,所以,研究了半天才搞明白,一开始根本没有头绪,先是在百度搜索“PXE 启动 PE”的相关文章,然后下载了相关的文件,后 ...

4个附件下载了,无法合并呀
回复

使用道具 举报

71#
发表于 2011-4-21 20:38:42 | 只看该作者
是个好东西, 但是我这菜鸟根本看不懂写的字符是啥意思,   如果有成品能在XP下直接使用就好了
回复

使用道具 举报

72#
发表于 2011-6-3 18:30:43 | 只看该作者

68楼的作品用RAR打包的

http://u.115.com/file/bhbx11fg#
PXE_启动_PE_(TFTPD32+NTLDR).rar
回复

使用道具 举报

73#
发表于 2011-8-18 14:02:18 | 只看该作者
支持楼主,顶起来。
回复

使用道具 举报

74#
发表于 2011-8-18 17:37:29 | 只看该作者
72楼的文件已经过期了,麻烦哪位再提供一下,谢谢!
回复

使用道具 举报

75#
发表于 2011-9-15 13:44:58 | 只看该作者

72楼的文件已经续期了.

72楼的文件已经续期了.
回复

使用道具 举报

76#
发表于 2012-2-13 19:44:31 | 只看该作者

回复 #1 歌理 的帖子

谢谢分享,好好学习下
回复

使用道具 举报

77#
发表于 2012-2-28 15:08:53 | 只看该作者
谢谢分享,这个不错,搜藏了
回复

使用道具 举报

78#
发表于 2012-3-11 10:53:00 | 只看该作者
希望能用的上啊,感谢!
回复

使用道具 举报

79#
发表于 2012-6-5 11:39:21 | 只看该作者
没过期啊 ,还能下,试试 怎么玩的
回复

使用道具 举报

80#
发表于 2012-6-5 14:23:54 | 只看该作者
[quote]原帖由 shiftzcg 于 2011-6-3 18:30 发表
http://u.115.com/file/bhbx11fg#
PXE_启动_PE_(TFTPD32+NTLDR).rar [/quote
首先感谢各位的热心回复
我是十足的菜鸟,弱弱地问一下:

我用一条交叉线将两台笔记本相连,一台是安装了XP系统能正常使用,一台没系统支持网卡PXE启动。
我将这个软件到下到XP系统那台,想通过交叉线在那台没系统的机器启动PE(这台不支持USB启动,所以才急着学PXE启动)

但我在XP系统那台机器运行了软件后就不知道后续操作,查阅了一些相关贴子,还是没型明白。

请问哪位有空帮忙解答一下,最好说明白些。

谢谢了,只怪自己太菜。
回复

使用道具 举报

81#
发表于 2012-6-5 23:01:42 | 只看该作者
在论坛下载了很多PE,进行U-HDD,U盘量产启动,大多数机器没问题。
但几个个别的,如三星NP-Q470 ,三星13寸超级本SAMSUNG NP530U3B-A04CN(无光驱), 这两台,我试过无数的PE,用U-HDD,U盘量产进行启动,到现在为止还没成功过。
所以才想到用PXE的方式启动类似的这种机器。
无奈本人技浅,搜寻了很多贴子,还是没整明白。
本以为下了楼主的这个软件,再用交叉网线将两台电脑连接,然后在有系统的那台机器运行这个软件来启动另外一台。
但现在还是不会操作。哪位兄弟抽空帮忙解答一下。

先谢谢了。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-15 19:55

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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