无忧启动论坛

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

作者: 歌理    时间: 2009-9-23 21:28
标题: [严重分享10.9更新PE、windows通用]100%免配的PXE网启服务器CMD(DHCP、TFTPD32)
这几天接触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 编辑 ]
作者: diwu2005    时间: 2009-9-23 21:33
第一时间学习,谢谢了
作者: dvd008    时间: 2009-9-23 21:33
我用的 HaneWin的DHCP,windows版的,好像没这么复杂!
cmd启动的和tfpd32虚拟机测试时速度巨慢,所以都喀嚓了
作者: cnzjwang    时间: 2009-9-23 22:04
第一时间来学习一下,这个有点了解了。
作者: WittyHare    时间: 2009-9-23 22:05
我也用的是HaneWIN的.
作者: coolg    时间: 2009-9-23 22:11
我做的网启版,一键完成网络和服务器加载,也没这么麻烦....

客户端如果不能上网,只要释放IP,再更新一下,就能上网...可关闭服务器
作者: cmdy268    时间: 2009-9-23 22:23
谢谢分享,好好学习下
作者: jarab    时间: 2009-9-23 23:03
不错,可以学习下了.
作者: yaojy    时间: 2009-9-24 10:02
感觉不错。
多谢分享
作者: limonet    时间: 2009-9-24 20:17
两个软件用配置文件就可以了。
作者: bfgxp    时间: 2009-9-24 20:40
说实话,我的水平不是一般的差,没明白
问个问题,普通pe如何与这免配的cmd配合?
作者: 66369    时间: 2009-9-24 22:08
搞的好.来学习下....

11楼的问题.LZ写个教程.功德无量啊.
作者: 歌理    时间: 2009-9-25 09:55
标题: 回复 #11 bfgxp 的帖子
实话实说:我第一次接触PXE网启PE,就是从楼上我心如水大师的2003-这1网启版开始的,对PXE网启,不敢班班门弄斧。
对于PXE原理,请搜索“PXE启动PE原理”等相关帖子,网上一大把。
所以说,主要了解PXE启动原理,上述的免配CMD,可以用于任意PE(DHCP及TFTPD好象不支持基于WIN7的PE)

简单而言,普通PE的启动过程以PXE启动过程对比如下:
(我用GRLDR引导启动,就以此为例)
一、普通PE本地启动
    GRLDR----SETUPLDR.exe----NTDETECT.COM----(wnt.xpe配置文件向winPE.IS_或ewinpe.ISO)----启动winpe.iso完成pE启动

   若用于网启服务,之后还须启动--网络支持--网启服务端(即本贴的CMD)

二、远程网启PE过程
    GRLDR(即本例中的PxeGrldr.0)-----STARTROM.0-----pxesetupldr.exe-------NTDETECT.COM----(wnt.xpe配置文件向winPE.IS_或ewinpe.ISO)----启动winpe.iso完成pE启动

三、综合而言,普通PE要作网启支持:
    一)、需要增加两个不同的文件:STARTROM.0、pxesetupldr.exe,这两个文件普通PE是没有的
    二)、按以下主要区别对普通PE进行必要的手术:
    1、远程网启会根据服务端指定的目录及启动文件,找到PxeGrldr.0,并启动之。
        (PxeGrldr.0与本地GRLDR用法及源文件完全一样,仅启动菜单项不同)
    2、STARTROM.0是远程网启的专用文件,必须由此文件启动引导,这是本地与远程的最主要区别!
    3、pxesetupldr.exe与本地的setupldr.exe结构、作用完全一样,但是不能互相混用!
    4、winpe.is_必须解压成winp.iso,即不能压缩(本地不压缩的ISO也可启动的)
    5、ntdetect.com必须放在与PxeGrldr.0同一目录(即根目录)


  PS:
    1、win7pe由STARTROM.0启动bootMGR.exe,此文件必须放在根目录,之后此文件会自动启动本地的win7PE,不用作任何修改,比起XP/2003PE而言,简直是太简单了!
    2、远程网启仅能读取winPE.iso或BOOT.WIM中的文件,不能读取本地外置程序,所以不少PXE网启PE都打着“全内置”的旗号,即将外置程序放入winpe.iso或BOOT.WIM内,这样做的好处及坏处均是显而易见的。
    我的做法是:ISO内仅放置网络支持,远程机启动网络支持后,映射服务器的外置程序为远程机所用
   3、STARTROM.0可以放在引导文件grldr能找到的任意目录,
   4、pxesetupldr.exe应为8.3格式,可放在任意目录,用winHEX修改STARTROM.0,让STARTROM.0能找到pxesetupldr.exe
    5、用winHEX修改pxesetupldr.exe,主要是其中的wnt.xpe配置文件的位置及文件名,建议与本地同名同地。

对于PE引导,我一直都用GRLDR,简单!


接触PXE时间不到一个月,理解是否正确,请各位大师指正。


不好意思,说错了,是SETUPLDR.BIN,不是SETUPLDR.EXE

[ 本帖最后由 歌理 于 2009-9-26 02:56 编辑 ]
作者: hwb9091    时间: 2009-9-25 10:31
非常的棒,进来学习学习!
作者: cduser    时间: 2009-9-25 11:15
可是我只会用成品,哎。
作者: switch131    时间: 2009-9-25 11:27
呵呵,昨天改了个PE,从电脑迷的光盘里搞出来的,稍微改了一下,功能极简单,只有改系统密码和PM分区,不支持网络。压缩后不到30M,PXE启动用的是TFTPD32
对无光无软而且BIOS不支持PXE启动,还有个解决方法(前提条件是已经装了2000\XP\2003,而且能启动),装VFLOPY,启动映像用GPXE。
要的请mail:switch131@163.com
我做这个用来重装系统,N多工控机,研祥的机器,说是支持PXE启动,按键盘没反应,BIOS能改的都改遍了,用了VFLOPY加上U盘拷贝系统安装文件,速度不错。用来备份文件也很方便
作者: zhoubin    时间: 2009-9-25 12:05
好高深哟。。。。
尊敬的楼主:
另外我问一下:SETUPLDR.exe是什么文件,不会是SETUPLDR.bin文件吧?
如果尊敬的楼主方便的话,给个模版,让我学一下,我好多都不懂,也不会,但我却很想学一下。。。。
谢谢,我的邮箱: 519792545@qq.com。。。
作者: 歌理    时间: 2009-9-26 02:59
标题: 回复 #17 zhoubin 的帖子
1、是SETUPLDR.BIN,前面说错了
2、请看我心如水的2003-911网启版,其实本论坛有很多这样的模板的
作者: coolg    时间: 2009-9-26 16:40
原帖由 歌理 于 2009-9-25 09:55 发表
实话实说:我第一次接触PXE网启PE,就是从楼上我心如水大师的2003-这1网启版开始的,对PXE网启,不敢班班门弄斧。
对于PXE原理,请搜索“PXE启动PE原理”等相关帖子,网上一大把。
所以说,主要了解PXE启动原 ...



远程用grub启动,还是有玩的,不知启动速度怎么样,一般的都是用pxelinux,
呵呵,这个要学学,
楼主能不能传上来,大家试用.....
作者: wlue    时间: 2009-9-29 14:06
歌理 上校 能否再编写一个Windows下的免配置网启服务端CMD,如果这样就完美了,期待!
作者: grubfans    时间: 2009-9-29 19:49
期待歌理大侠提供一个Windows下的免配置网启服务端CMD,感谢!
作者: 歌理    时间: 2009-9-29 20:54
原帖由 wlue 于 2009-9-29 14:06 发表
歌理 上校 能否再编写一个Windows下的免配置网启服务端CMD,如果这样就完美了,期待!

没明白什么意思,能说说你的要求或想法吗?
是指硬盘PE还是在WINDOWS下直接做网启服务器?
若是后者,好像不行吧?
作者: wlue    时间: 2009-9-29 22:12
原帖由 歌理 于 2009-9-29 20:54 发表

没明白什么意思,能说说你的要求或想法吗?
是指硬盘PE还是在WINDOWS下直接做网启服务器?
若是后者,好像不行吧?

是这样,我的硬盘或优盘上有水先生的PE系统,如果启动到PE系统也可以实现免配置网启。但我是想如果服务端是在Windows系统下,不必切换到PE系统下,就可以开启网启功能,目前已经实现,一般人推荐使用haneWIN DHCP Server,但在首次使用的时候,需要作一些网络参数方面的配置,如果在换一台电脑的话就需要重新配置,这样就不太方便。

我想实现的功能就是:1.像在PE系统中那样直接调用系统中的网络参数,而不必手动输入IP地址等网络参数;2.默认将haneWIN DHCP Server所在文件夹作为网启根目录,而不需要随绝对路径的改变而在手动所在网启根目录;

不知表达清除没有?
谢谢歌理大侠!
作者: 歌理    时间: 2009-9-30 00:43
WINDOWS 网启服务器免配CMD

(本人测试在XP、win7下正常)

请测试
请将DHCP所有文件及本CMD放于同一目录即可。
DNS地址未取出,原因是网启一般仅限于局网,与DNS关系不大,启动完毕,系统一般会通过网关自动设置


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

dhcp4nt.exe -remove
set BaseDirectory=%TP%
if not %tp:~-1%==\ set BaseDirectory=%TP%\
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

dhcp4nt.exe -install
start dhcpsrv.cpl
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

[ 本帖最后由 歌理 于 2009-9-30 00:49 编辑 ]
作者: wlue    时间: 2009-9-30 08:30
Windows XP下测试成功了,这样网启就太方便了。谢谢歌理大侠,您可真是出手不凡呀!

得寸进尺,再向您请教几个问题:
1.我的PE和各种工具都在一个minipe文件夹下(这样目录清爽,也便于移植),我将haneWIN DHCP Server的所有相关文件直接放在minipe文件夹下,用你的CMD脚本程序成功实现Windows网启。但我嫌文件太多太乱,想将haneWIN DHCP Server相关文件放入minipe\winDHCP\目录下,这样需要修改你的CMD脚本程序使其设置网启根目录为当前目录的上一级目录,如何修改:
set BaseDirectory=%TP%
if not %tp:~-1%==\ set BaseDirectory=%TP%\
2.你用的编程语言属于什么语言,我想了解一下它的语法,应当看什么资料?
谢谢您!
作者: wwmy1982    时间: 2009-9-30 09:40
@wlue:
  请上传一下你的hanewin dhcp sever服务器文件,谢了,我想下载,我测试不成功。

[ 本帖最后由 wwmy1982 于 2009-9-30 09:42 编辑 ]
作者: vcxzaq1    时间: 2009-9-30 09:52
原帖由 wwmy1982 于 2009-9-30 09:40 发表
@wlue:
  请上传一下你的hanewin dhcp sever服务器文件,谢了,我想下载,我测试不成功。


就这个CMD不成功,如水的网启版是否成功呢
作者: wlue    时间: 2009-9-30 10:29
原帖由 wwmy1982 于 2009-9-30 09:40 发表
@wlue:
  请上传一下你的hanewin dhcp sever服务器文件,谢了,我想下载,我测试不成功。

请将文件解压到你的网启文件夹(根目录)下,如果原来未安装过haneWIN DHCP Server,请先运行一次 绿化.bat ,然后退出,以后网启执行 Windows网启.CMD 这个就是歌理大侠编写的免配置网启文件。

WINDHCP.rar

186.51 KB, 下载次数: 595, 下载积分: 无忧币 -2


作者: lmle    时间: 2009-9-30 19:54
楼主的批处理太好用了,非常感谢!
另“外置程序”怎么映射?我怎么老是访问不了。
作者: 歌理    时间: 2009-9-30 19:55
WINDOWS 网启服务器免配CMD
说明:1、请将本CMD 与 启动文件%bootfile%  放于同一目录
      2、DHCP4NT服务程序可以放于本CMD目录下的任意子目录,其启动文件名必须是:DHCP4NT.exe


rem WINDOWS网启服务端.CMD
rem 请将本CMD 与 启动文件%bootfile%  放于同一目录!!

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

set BaseDirectory=%tp%
if not %tp:~-1%==\ set BaseDirectory=%tp%\
if not exist %BaseDirectory%%bootfile%  echo 启动文件找不到:%BaseDirectory%%bootfile%  &&pause

for /f "usebackq" %%i in (`dir "%BaseDirectory%DHCP4NT.EXE" /s/b`) do set TP=%%~dpi
set TP=%TP:~0,-1%
%TP%\dhcp4nt.exe -remove

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
%tp%\dhcpsrv.cpl
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

[ 本帖最后由 歌理 于 2009-9-30 19:59 编辑 ]
作者: 歌理    时间: 2009-9-30 20:02
标题: 回复 #25 wlue 的帖子
1、严重声明:本人绝不是什么大侠,充其量是个爱好者
2、这个CMD就是CMD命令,不是什么编程语言
作者: wlue    时间: 2009-9-30 20:38
原帖由 歌理 于 2009-9-30 20:02 发表
1、严重声明:本人绝不是什么大侠,充其量是个爱好者
2、这个CMD就是CMD命令,不是什么编程语言

谢谢歌理大侠,你出手真快,不必谦虚!

你的新CMD真是太好了!
今天等不上你,根据我的情况,我自己在摸索半天,刚才终于也实现了我在25#的要求:

@echo off
PUSHD %~dp0
SET TP=%CD%

SET DP=%TP:~0,-7%
rem ==========以下此行为启动引导文件,请自行修改=======
set bootfile=PXELINUX.0
rem ==========================================================

dhcp4nt.exe -remove
set BaseDirectory=%DP%
rem if not %tp:~-1%==\ set BaseDirectory=%TP%\


我采用笨办法,截取路径字符串,虽然实现了,但方法太笨,现在有你的更专业的方法太好了,我原来的方法可以丢掉了!
另外上边红字的一行到底有什么用,我把它注释掉,好像也不影响使用!

建议将你的免配置脚本放首页,让更多的人分享!(这个比PE下的配置更实用,因为PE系统下多数都由作者配置好了)
作者: jalousie    时间: 2009-9-30 20:40
支持下,暂时没网启需要
作者: wlue    时间: 2009-9-30 22:07
原帖由 歌理 于 2009-9-30 19:55 发表
WINDOWS 网启服务器免配CMD
说明:1、请将本CMD 与 启动文件%bootfile%  放于同一目录
       2、DHCP4NT服务程序可以放于本CMD目录下的任意子目录,其启动文件名必须是:DHCP4NT.exe

........
%tp%\dhcp4nt.exe -install
%tp%\dhcpsrv.cpl
EXIT
.....

反馈一点小问题,这个批处理很好,只是执行完不会自动关闭DOS窗口,在红字这一行前面加上 start %tp%\dhcpsrv.cpl 后问题解决!

作者: 歌理    时间: 2009-9-30 22:41
WINDOWS 网启服务器免配CMD
这个是真正的免配,可任意绿色移植。


rem WINDOWS网启服务端.CMD
@echo off
PUSHD %~dp0
SET TP=%CD%
rem ==========以下此行为启动引导文件,请自行修改,启动文件与本cmd同分区即可=======
set bootfile=PXEgrldr.0
rem ==========================================================

if not exist %TP%\dhcp4nt.exe echo 当前目录下找不到文件:DHCP4NT.EXE &&pause &&exit

echo 正在自动搜索启动文件,可能需要一些时间,请稍等。。。
set BaseDirectory=
set  bootdrver=%~d0
for /f "usebackq" %%i in (`dir "%bootdrver%\%bootfile%" /s/b`) do set BaseDirectory=%%~dpi
if %BaseDirectory%.==. echo 在 %bootdrver%盘上 找不到启动文件:%bootfile%  &&pause

%TP%\dhcp4nt.exe -remove
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
start %tp%\dhcpsrv.cpl
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

[ 本帖最后由 歌理 于 2009-9-30 22:43 编辑 ]
作者: wlue    时间: 2009-9-30 22:50
强烈支持了,歌理大侠真是精益求精呀!
作者: 歌理    时间: 2009-10-2 12:36
rem winPE\WINDOWS通用免配网启服务端.CMD
特点:1、PE\window通用,可在光盘或硬盘运行
          2、本CMD与DHCP同一目录,方便移植,此目录可放在与启动文件同盘的任意子目录
           3、无需启动PE,也能进行远程网启(安装系统或运行PE)

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


if not exist %TP%\dhcp4nt.exe echo 当前目录下找不到文件:DHCP4NT.EXE &&pause &&exit

echo 正在自动搜索启动文件,可能需要一些时间,请稍等。。。
set BaseDirectory=
set  bootdrver=%~d0
for /f "usebackq" %%i in (`dir "%bootdrver%\%bootfile%" /s/b`) do set BaseDirectory=%%~dpi
if %BaseDirectory%.==. echo 在 %bootdrver%盘上 找不到启动文件:%bootfile%  &&pause

copy *.* %temp% /y
set tp=%temp%

%TP%\dhcp4nt.exe -remove
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
start %tp%\dhcpsrv.cpl
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

[ 本帖最后由 歌理 于 2009-10-2 12:41 编辑 ]
作者: pseudo    时间: 2009-10-2 15:19
标题: 推销理念来了
关于网启服务器,建议做成pe/windows两用、单文件绿色免配置形式,我在此帖提及此形式:

一种U启、网启两用,内置外置自由的部署
楼主的cmd,经过数次改进,已经接近这种形式了。

关于网启pe,建议支持“直接pxe”特性及“自由部署”:
直接PXE
一种U启、网启两用,内置外置自由的部署

关于pe,提倡一种理念:
版本合一,一个顶多个


又,有个地方不大明白:
楼主这样设置
for /f "tokens=1-3,4 delims=." %%i in ("%_myip%") do set IP_Pool=%%i.%%j.%%k.100

>>%TP%\DHCPsrv.ini echo.BaseIP=%IP_Pool%
>>%TP%\DHCPsrv.ini echo.Range=101

当%_myip%包含于ip池时,服务器的ip是否有被分配给客户机而产生冲突的可能?
作者: liya33    时间: 2009-10-2 15:35
提供下软件啊..中文的??
作者: tdq868xin    时间: 2009-10-2 16:03
pseudo大大也在搞这个类似的,呵呵,学习!
作者: pseudo    时间: 2009-10-2 16:26
标题: 回复 #40 tdq868xin 的帖子
楼上的“一拖五"已经集成了0pe的pe/windows两用、单文件绿色免配置的服务器,
不过由于你把pe的文件藏入ud了,服务器显然不能提供pe文件的下载,成为多余的东西。
作者: tdq868xin    时间: 2009-10-2 18:57
原帖由 pseudo 于 2009-10-2 16:26 发表
楼上的“一拖五"已经集成了0pe的pe/windows两用、单文件绿色免配置的服务器,
不过由于你把pe的文件藏入ud了,服务器显然不能提供pe文件的下载,成为多余的东西。

P大,我已经下载更新成0923版的了,不过合盘我重新在做,做完之后再上传。
作者: 33445566    时间: 2009-10-2 20:08
歌理兄能否分别上传PE、Windows下的100%免配的PXE服务器DHCP、TFTPD32(里面配置好CMD)
作者: 歌理    时间: 2009-10-2 20:26
原帖由 pseudo 于 2009-10-2 15:19 发表
◆关于网启服务器,建议做成pe/windows两用、单文件绿色免配置形式,我在此帖提及此形式:

一种U启、网启两用,内置外置自由的部署
楼主的cmd,经过数次改进,已经接近这种形式了。


◆关于网启pe,建议 ...



IP池地址否冲突,这么简单的问题任何DHCP自然会考虑到,这个与配置无关!
作者: 歌理    时间: 2009-10-2 20:28
原帖由 33445566 于 2009-10-2 20:08 发表
歌理兄能否分别上传PE、Windows下的100%免配的PXE服务器DHCP、TFTPD32(里面配置好CMD)


不知道是出于什么目的
作者: 0011    时间: 2009-10-2 21:25
原帖由 歌理 于 2009-10-2 20:28 发表


不知道是出于什么目的

呵呵,方便我等菜鸟拿来就用啊
作者: 33445566    时间: 2009-10-3 08:50
PXE启动文件一般是pxelinux.0和grldr,能否在批处理中加入自动查找pxelinux.0、grldr文件,有则配置为启动文件,无则提示输入启动文件名。 
作者: shn    时间: 2009-10-3 09:29
原理不懂,只想要现成的,和0011一样的想法,歌理能否连软件一起给上传了
作者: 歌理    时间: 2009-10-4 17:35
原帖由 shn 于 2009-10-3 09:29 发表
原理不懂,只想要现成的,和0011一样的想法,歌理能否连软件一起给上传了

不是不可以,问题是这个软件本论坛上一大把,你搜索一下就能下载,自己动手一下难道对你会有害吗?
作者: wlue    时间: 2009-10-4 18:46
请歌理大侠最好再编写一个针对TFTPD32(这个软件比haneWIN DHCP Server更简单,绿色版只有两个文件,一个主程序,一个配置文件)的Windows下的免配置好CMD,这样就完美了!
作者: 歌理    时间: 2009-10-9 17:05
你们也是够懒的,稍稍改一下就可以了哐
刚好我也是刚做完,放在PE里,贴给你吧:

TFTPD32for WINDOWS\WINPE通用免配批处理CMD
@echo off
PUSHD %~dp0
SET TP=%CD%
rem ==========以下此行为启动引导文件,请自行修改=======
set bootfile=PXEgrldr.0
rem ==========================================================

if not exist %TP%\TFTPD32.EXE echo 当前目录下找不到文件:TFTPD32.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 TFTPD*.*.* %temp% /y >nul
set TP=%temp%
PECMD FIND DHCP4NT.EXE,KILL DHCP4NT.EXE

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

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

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

start %TP%\TFTPD32.EXE
if not exist x:\*.* goto windows

PECMD.EXE LINK !%%DESKTOP%%\TFTPD32网络启动服务端,%TP%\TFTPD32.EXE
PECMD.EXE LINK !%%Programs%%\网络启动服务器\TFTPD32网络启动服务端,%TP%\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"

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

DHCP4NT for WINDOWS\WINPE通用免配批处理CMD
rem winPE\WINDOWS通用免配网启服务端.CMD
@echo off
PUSHD %~dp0
SET TP=%CD%
rem ==========以下此行为启动引导文件,请自行修改,启动文件与本cmd同分区即可=======
set bootfile=PXEgrldr.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网络启动服务端.*"

rem 删除共享名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


本贴到此为止,保证不再更新!!!!!!!

[ 本帖最后由 歌理 于 2009-10-9 17:11 编辑 ]
作者: zhaohj    时间: 2009-10-9 17:27
一个问题,原来网络上已有DHCP(MS)服务器,怎么配置?
再做一个HANETFTP吧,不要DHCP的。
作者: liya33    时间: 2009-10-11 18:23
有没有详细的教程呀?  随便把这软件上传上来就更好 了
作者: cduser    时间: 2009-10-11 19:00
有成品的ISO下载就好了
作者: coolg    时间: 2009-10-27 18:50
原帖由 歌理 于 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 编辑 ]
作者: 8696648    时间: 2009-10-27 20:45
谢谢歌理上校,学习一下,谢谢提供,辛苦了。
作者: HY    时间: 2009-11-28 11:23
原帖由 coolg 于 2009-10-27 18:50 发表




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

如果能实现coolg说的功能就更好了,不知如何搞?
作者: bgwhw    时间: 2009-11-28 17:55
希望楼主能出一个包括应用程序在内的“成品”,在WINPE、WINDOWS下能直接使用的。
作者: 歌理    时间: 2009-11-30 12:50
标题: 回复 #55 coolg 的帖子
1、将DHCP或TFTPD32文件夹放入分区中,此文件夹除了包含必须的DHCP等文件外,还得有本.CMD
2、将启动文件PXEgrldr.0放入分区根目录!
运行CMD即可。
(仅支持XP,不支持ViSTA\win7)

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



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



作者: 天天来    时间: 2009-12-26 13:52
谁把PxeGrldr.0 STARTROM.0-pxesetupldr.exe NTDETECT.COM打包提供下
作者: frodo75    时间: 2009-12-27 14:36
用PE成功引导,但用XP不成功
作者: 天天来    时间: 2009-12-27 16:36
从用骨头版里的启动文件在xp下引导成功
作者: pp12416    时间: 2010-2-2 23:35
我使用的是“我心如水 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, 下载次数: 130)

pxe.JPG

作者: binghuoxk    时间: 2010-5-3 02:18
收下了!谢谢....
作者: chenbaker    时间: 2010-5-8 20:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: chenbaker    时间: 2010-5-8 20:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: stevenldj    时间: 2011-3-25 01:26
最近在研究 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 编辑 ]
作者: 2010ma2553047    时间: 2011-4-21 16:28
标题: 回复 #68 stevenldj 的帖子
老大为什么我的 就不可以呢? 我的显示的内容是 tftp time out
作者: nnd76543    时间: 2011-4-21 17:29
原帖由 stevenldj 于 2011-3-25 01:26 发表
最近在研究 PXE 和 U启,看到了楼主的帖子,进来学习学习。

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

4个附件下载了,无法合并呀
作者: 2011juan520c    时间: 2011-4-21 20:38
是个好东西, 但是我这菜鸟根本看不懂写的字符是啥意思,   如果有成品能在XP下直接使用就好了
作者: shiftzcg    时间: 2011-6-3 18:30
标题: 68楼的作品用RAR打包的
http://u.115.com/file/bhbx11fg#
PXE_启动_PE_(TFTPD32+NTLDR).rar
作者: yujij    时间: 2011-8-18 14:02
支持楼主,顶起来。
作者: yelinli    时间: 2011-8-18 17:37
72楼的文件已经过期了,麻烦哪位再提供一下,谢谢!
作者: shiftzcg    时间: 2011-9-15 13:44
标题: 72楼的文件已经续期了.
72楼的文件已经续期了.
作者: lvqin    时间: 2012-2-13 19:44
标题: 回复 #1 歌理 的帖子
谢谢分享,好好学习下
作者: 988668    时间: 2012-2-28 15:08
谢谢分享,这个不错,搜藏了
作者: 20123a45a7    时间: 2012-3-11 10:53
希望能用的上啊,感谢!
作者: 2012myfm    时间: 2012-6-5 11:39
没过期啊 ,还能下,试试 怎么玩的
作者: sz88888    时间: 2012-6-5 14:23
[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系统那台机器运行了软件后就不知道后续操作,查阅了一些相关贴子,还是没型明白。

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

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

先谢谢了。




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3