无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 34695|回复: 80
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2009-9-23 21:28:46 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
这几天接触PXE网络远程启动PE,参考网上的各位PE中的PXE服务器配置,经多次试验,完全免配!

目前流行的PXE服务器有两种:HaneWin的DHCP,还有一种是TFTPD32
经试验,两种大同小异,都差不多,配置好后远程客户机都 能自动连接,并且可以直接上网,有点区别是:若用TFTPD32作服务器,远程端可以直接上网(稍等一会);而用DHCP作服务器,要手动更新IP后才能上网,两者均不需断开服务器!(网上有些PE网启后不能上网,主要是配置问题)
CMD 如下:
这是DHCP.cmd

@echo off
PUSHD %~dp0
SET TP=%CD%
rem ==========以下此行为启动引导文件,请自行修改=======
set bootfile=PXEgrldr.0
rem ==========================================================

IF NOT EXIST %systemroot%\SYSTEM32\PENETCFG.EXE GOTO END
rem 关闭
if exist DHCP.7z 7z.exe x DHCP.7z -y -aos -o"%WinDir%\System32"

cd /d %systemRoot%\system32
if exist dhcp4nt.exe dhcp4nt.exe -remove
PECMD FIND TFTPD32.EXE,KILL TFTPD32.EXE

set BaseDirectory=
for %%i in (C D E F G H I J K L M N O M P Q R S T U V W) DO IF EXIST %%i:\%bootfile% set BaseDirectory=%%i:\
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
>%WinDir%\System32\DHCPsrv.ini echo.[License]
>>%WinDir%\System32\DHCPsrv.ini echo.Key=BBLZ26803UBBCAT9
>>%WinDir%\System32\DHCPsrv.ini echo.Name=Free User
>>%WinDir%\System32\DHCPsrv.ini echo.[DHCPsrv]
>>%WinDir%\System32\DHCPsrv.ini echo.Profile0=本地连接
>>%WinDir%\System32\DHCPsrv.ini echo.TFTPDirectory=%BaseDirectory%
>>%WinDir%\System32\DHCPsrv.ini echo.Multicast=0
>>%WinDir%\System32\DHCPsrv.ini echo.TFTPEnable=1
>>%WinDir%\System32\DHCPsrv.ini echo.TFTPPort=69
>>%WinDir%\System32\DHCPsrv.ini echo.TFTPMode=0
>>%WinDir%\System32\DHCPsrv.ini echo.Log=0
>>%WinDir%\System32\DHCPsrv.ini echo.TestIP=1
>>%WinDir%\System32\DHCPsrv.ini echo.ChangeIP=1
>>%WinDir%\System32\DHCPsrv.ini echo.EnableMAC=1
>>%WinDir%\System32\DHCPsrv.ini echo.[本地连接]
>>%WinDir%\System32\DHCPsrv.ini echo.SubnetMask=%_mask%
>>%WinDir%\System32\DHCPsrv.ini echo.BaseIP=%IP_Pool%
>>%WinDir%\System32\DHCPsrv.ini echo.Range=101
>>%WinDir%\System32\DHCPsrv.ini echo.BootFile=%bootfile%
>>%WinDir%\System32\DHCPsrv.ini echo.GatewayIP=%_Gateway%
>>%WinDir%\System32\DHCPsrv.ini echo.InterfaceIP=%_myip%
dhcp4nt.exe -install
endlocal


PECMD.EXE LINK !%%DESKTOP%%\HaneWin网启服务端,dhcpsrv.cpl,,dhcp.ico
PECMD.EXE LINK !%%Programs%%\网络启动服务器\开启HaneWin网络启动服务端,dhcp4nt.exe,-install,shell32.dll#96
PECMD.EXE LINK !%%Programs%%\网络启动服务器\关闭HaneWin网络启动服务端,dhcp4nt.exe,-remove,shell32.dll#95
PECMD.EXE LINK !%%Programs%%\网络启动服务器\HaneWin网启服务端,dhcpsrv.cpl,,dhcp.ico

PECMD FILE "%%DESKTOP%%\开启HaneWin网络启动服务端.*"
PECMD FILE "%%DESKTOP%%\TFTPD32网络启动服务端.*"

rem 删除共享名PEroot,建立共享名为Peroot共享资源为%BaseDirectory%
PECMD EXEC CMD /C "net share PEROOT /d"
PECMD EXEC CMD /C "net share PEROOT=%BaseDirectory% /unlimited"
PECMD FIND EXPLORER.EXE,KILL EXPLORER.EXE
start dhcpsrv.cpl

PECMD.EXE MESS 远程启动网启服务器.启动成功!\n\n已将本机光盘 %BaseDirectory% 共享给远程客户(\\Winpe\PEROOT,用户名:Guest,密码为空)\n\n@提示 #ok *50000

if %BaseDirectory%.==. PECMD.EXE MESS 系统无法找到文件 %bootfile% 所在的盘符!\n\n请确认后, 手动配置网络服务器\n\n@提示 #ok *50000
EXIT
:END
PECMD.EXE MESS 先启动网络支持程序.再启动网网络启动服务器!@提示 #ok *30000
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


============================以下是TFTPD32的====================
@echo off
PUSHD %~dp0
SET TP=%CD%
rem ==========以下此行为启动引导文件,请自行修改=======
set bootfile=PXEgrldr.0
rem ==========================================================
IF NOT EXIST %systemroot%\SYSTEM32\PENETCFG.EXE GOTO END
rem 关闭
pecmd file "%TP%\TFTPD32.EXE=>%systemRoot%\system32\"

cd /d %systemRoot%\system32
if exist dhcp4nt.exe dhcp4nt.exe -remove&&pecmd wait 500
PECMD FIND TFTPD32.EXE,KILL TFTPD32.EXE&&pecmd wait 500

set BaseDirectory=
for %%i in (C D E F G H I J K L M N O M P Q R S T U V W) DO IF EXIST %%i:\%bootfile% set BaseDirectory=%%i:\

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/a IP_Pool=100*256*256*256+%%k*256*256+%%j*256+%%i
for /f "tokens=1-3,4 delims=." %%i in ("%_mask%") do set/a mask=%%l*256*256*256+%%k*256*256+%%j*256+%%i
for /f "tokens=1-3,4 delims=." %%i in ("%_Gateway%") do set/a Gateway=%%l*256*256*256+%%k*256*256+%%j*256+%%i

>%WinDir%\System32\TFTPD32.INI echo.[TFTPD32]
>>%WinDir%\System32\TFTPD32.INI echo.
>>%WinDir%\System32\TFTPD32.INI echo.Console Password=tftpd32
>>%WinDir%\System32\TFTPD32.INI echo.TftpPort=69
>>%WinDir%\System32\TFTPD32.INI echo.Negociate=1
>>%WinDir%\System32\TFTPD32.INI echo.ShowProgressBar=1
>>%WinDir%\System32\TFTPD32.INI echo.Timeout=3
>>%WinDir%\System32\TFTPD32.INI echo.MaxRetransmit=6
>>%WinDir%\System32\TFTPD32.INI echo.SecurityLevel=1
>>%WinDir%\System32\TFTPD32.INI echo.UnixStrings=1
>>%WinDir%\System32\TFTPD32.INI echo.Services=47
>>%WinDir%\System32\TFTPD32.INI echo.PersistantLeases=1
>>%WinDir%\System32\TFTPD32.INI echo.DHCP Ping=1
>>%WinDir%\System32\TFTPD32.INI echo.Max Simultaneous Transfers=100
>>%WinDir%\System32\TFTPD32.INI echo.BaseDirectory=%BaseDirectory%

>>%WinDir%\System32\TFTPD32.INI echo.[DHCP]
>>%WinDir%\System32\TFTPD32.INI echo.IP_Pool=%IP_Pool%
>>%WinDir%\System32\TFTPD32.INI echo.PoolSize=100
>>%WinDir%\System32\TFTPD32.INI echo.Gateway=%Gateway%
>>%WinDir%\System32\TFTPD32.INI echo.Mask=%mask%
rem >>%WinDir%\System32\TFTPD32.INI echo.DNS=%Gateway%
>>%WinDir%\System32\TFTPD32.INI echo.BootFile=%bootfile%

PECMD.EXE LINK !%%DESKTOP%%\TFTPD32网络启动服务端,TFTPD32.EXE
PECMD.EXE LINK !%%Programs%%\网络启动服务器\TFTPD32网络启动服务端,TFTPD32.EXE
PECMD FILE "%%DESKTOP%%\开启HaneWin网络启动服务端.*"
PECMD FILE "%%DESKTOP%%\开启TFTPD32网络启动服务端.*"

rem 删除共享名PEroot,建立共享名为Peroot共享资源为%BaseDirectory%
PECMD EXEC CMD /C "net share PEROOT /d"
PECMD EXEC CMD /C "net share PEROOT=%BaseDirectory% /unlimited"
PECMD FIND EXPLORER.EXE,KILL EXPLORER.EXE

start TFTPD32.EXE

PECMD.EXE MESS 远程启动网启服务器.启动成功!\n\n已将本机光盘 %BaseDirectory% 共享给远程客户(\\Winpe\PEROOT,用户名:Guest,密码为空)\n\n@提示 #ok *50000

if %BaseDirectory%.==. PECMD.EXE MESS 系统无法找到文件 %bootfile% 所在的盘符!\n\n请确认后, 手动配置网络服务器\n\n@提示 #ok *50000
EXIT
:END
PECMD.EXE MESS 先启动网络支持程序.再启动网网络启动服务器!@提示 #ok *30000
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

补充说明:

刚下了个WIn7PE做网启测试,感觉DHCP速度较TFTPD32快,此外,DHCP能远程启动WIN7PE成功,而tFTPD32传送BOOT.WIM文件完后启动失败,提示找不到boot.wim文件!!


===========================================
不用启动PE,WINDOWS下也能开启网启服务器功能:
免配CMD详见:35楼!!!!!!!
使用方法:将支持网启的PE文件放在硬盘即可
===============================
rem winPE\WINDOWS通用免配网启服务端.CMD
特点:1、PE\window通用,可在光盘或硬盘运行
          2、本CMD与DHCP同一目录,方便移植,此目录可放在与启动文件同盘的任意子目录
           3、无需启动PE,也能进行远程网启(安装系统或运行PE)

见 36楼!!!


========10.09最后更新见51楼!!!========

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

先谢谢了。
回复

使用道具 举报

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系统那台机器运行了软件后就不知道后续操作,查阅了一些相关贴子,还是没型明白。

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

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

回复 #1 歌理 的帖子

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

使用道具 举报

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

72楼的文件已经续期了.

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

68楼的作品用RAR打包的

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

使用道具 举报

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

使用道具 举报

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

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

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

使用道具 举报

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

回复 #68 stevenldj 的帖子

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

使用道具 举报

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 编辑 ]
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

60#
发表于 2009-11-30 16:13:58 | 只看该作者
原帖由 歌理 于 2009-11-30 12:50 发表
1、将DHCP或TFTPD32文件夹放入分区中,此文件夹除了包含必须的DHCP等文件外,还得有本.CMD
2、将启动文件PXEgrldr.0放入分区根目录!
运行CMD即可。
(仅支持XP,不支持ViSTA\win7)



谢谢歌理大侠的指点!!!
我用您的配置文件,不用移动文件夹,而是结合别的方法,搞定了任意指定共享目录。。再次表示感谢!!!


回复

使用道具 举报

59#
 楼主| 发表于 2009-11-30 12:50:33 | 只看该作者

回复 #55 coolg 的帖子

1、将DHCP或TFTPD32文件夹放入分区中,此文件夹除了包含必须的DHCP等文件外,还得有本.CMD
2、将启动文件PXEgrldr.0放入分区根目录!
运行CMD即可。
(仅支持XP,不支持ViSTA\win7)

[ 本帖最后由 歌理 于 2009-11-30 12:54 编辑 ]
回复

使用道具 举报

58#
发表于 2009-11-28 17:55:15 | 只看该作者
希望楼主能出一个包括应用程序在内的“成品”,在WINPE、WINDOWS下能直接使用的。
回复

使用道具 举报

57#
发表于 2009-11-28 11:23:13 | 只看该作者
原帖由 coolg 于 2009-10-27 18:50 发表




这个配置文件十分好用...
有一问题:
     我想把其他分区共享给客户端,请教如何设置映射
     (我修改N(n>20)次,也没成功,特来求教!!!)

如果能实现coolg说的功能就更好了,不知如何搞?
回复

使用道具 举报

56#
发表于 2009-10-27 20:45:01 | 只看该作者
谢谢歌理上校,学习一下,谢谢提供,辛苦了。
回复

使用道具 举报

55#
发表于 2009-10-27 18:50:40 | 只看该作者
原帖由 歌理 于 2009-10-9 17:05 发表
你们也是够懒的,稍稍改一下就可以了哐
刚好我也是刚做完,放在PE里,贴给你吧:

TFTPD32for WINDOWS\WINPE通用免配批处理CMD
@echo off
PUSHD %~dp0
SET TP=%CD%
rem ==========以下此行为 ...




这个配置文件十分好用...
有一问题:
     我想把其他分区共享给客户端,请教如何设置映射
     (我修改N(n>20)次,也没成功,特来求教!!!)

[ 本帖最后由 coolg 于 2009-10-27 18:53 编辑 ]
回复

使用道具 举报

54#
发表于 2009-10-11 19:00:08 | 只看该作者
有成品的ISO下载就好了
回复

使用道具 举报

53#
发表于 2009-10-11 18:23:12 | 只看该作者
有没有详细的教程呀?  随便把这软件上传上来就更好 了
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

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

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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