tcpip远程启动解秘

上面的boot文件

顶一下…顺便问问ne2000和8139地novell的tcp驱动哪里有…

我今晚再试不用dhcp而用boottp服务的方法.rom-o-matic.net/这里生成的rom好像都是要dhcp服务的…不知道linux下生成的rom是不是也是这样的?再次感谢panhh的回复…

感谢:)。。。。。。这下更明白了。。。。

真多谢panhh,
困扰我多时的问题终于解决了

以前一直用rpl做无盘站的远程启动,但rpl远程启动到了W2K以后就不支持了,虽然有凌心的rplw2k工具,我自己也根据凌心的工具做了一个自己的rplw2k,但一直有网友反映不稳定,经常远程启动服务不启动了。后来又有华教、PXE、3COM、启明星等等都说直接用tcpip协议远程启动,但它们的技术都是保密的,是要卖钱的,所以我一直觉得这技术很神密。网上经常有人问我,有XX破解吗?还有人经常给人发什么信,说你的ftp如何如何,我要告你什么什么。我只是感兴趣也不是做生意就没有多试,所以有人问pxe、华教什么的,我都说只会rpl其它没用过。
寒假没什么事,我就抽点时间玩了玩linux,网上找了点资料做linux的无盘。linux的无盘是用tcpip协议,用两个linux下的工具etherboot和mknbi,linux就是好,都是免费的。方法是先用etherboot做相应网卡的tcpip启动芯片,在服务器上做好dhcp服务和tftp服务,编绎支持无盘启动的linux内核,用mknbi做好linux启动映像文件。启动成功了!!!做完后我就想在W2K上的过程一定也是这样,我就试了一下,结果也成了(时间的问题我只做到dos+w2k终端)。又有一个问题是如果没有linux下的etherboot和mknbi两个工具怎么做。在网上找了一下我还真找到了办法。下面我把具体的办法介绍给大家。
一、做网卡启动芯片。
登陆[url]http://rom-o-matic.net/5.0.5/[/url]
1.Choose NIC/ROM type:选你的网卡类型(有rtl8029\rtl8139\dlink530\ne)
2.For custom ROM configuration press:设置选项(具体选项自己看,如果没有特殊要求就不设)
3、Choose ROM output format: 设置代码的格式
.lzdsk 是在做rom前做成启动盘测试代码是否能用。
.lzrom 是用来做ROM的。
后面的我没试过。
4、下载代码文件。download总认得吧。
下面就用下载的代码做启动盘或启动芯片。我只是做试验也没有EPROM写入器所以就用它做磁盘。在linux下用下面的命令。
cat eb-5.0.5-yournic.lzdsk > /dev/fd0
在DOS/windows下,用RAWRITE这个工具,一般linux的套件的安装盘中都有。也可以到网上下载。
准备一张格式化过的空盘,运行RAWRITE,输入代码的文件名,输入A:,插盘确认。(这张盘不是dos格式的,windows下看不到内容。)
用这张盘启动工作站,如果看到寻找dhcp服务器,说明你做成了。如果没有可能是你网卡选错了。

(待续)

续一:dhcp服务设置与tftp服务的安装与设置
1、在W2K上安装DHCP服务,不会装的可以看下面南山网站上的dhcp服务设置
[url]http://www.enanshan.com/win2k/2k-1-3.htm[/url]
安装后在DHCP中设置作用域选项:003路由器、006DNS服务器、015DNS域名等(这些你自己看着办与远程启动无关),再设066启动服务器主机名,如果你没有做dns服务就输服务器的ip地址。067启动文件名:就是下一步做出来的启动映象文件名,我的是bootimg。

2、安装tftp服务。
看看下面这个就行了
[url]http://www.sometips.com/tips/systemmanagement/217.htm[/url]

做好这一步,你再用前面做的软盘启动无盘站,可以看到它不停的在tftp服务器上找bootimg文件。

续二、最后一步是映象文件制作,先讲dos的制作方法。
原来是用LINUX下的MKNBI工具做的,现在有一位叫苏勇的方法可以在windows下做。
[url]http://home.njenet.net.cn/panhh/mboot.rar[/url]
我对他所说的再解释一下。
1、做一张dos启动盘,把启动后要运行的程序复制上去,使它能启动工作站,能登录win2000,可以做一个有盘的dos登陆win2000服务器,再精简到一张软盘上。)
用hddos.exe装这张盘做成dos.img文件。
在把下载的mboot.dat和这个文件复制到一个目录用
copy mboot.dat /b + dos.img /b bootimg
把生成的bootimg复制到w2k的系统盘(winnt所在的盘)的\tftpdroot下。

插入第一步做的软盘,启动无盘站。成功了!!!

几个用到的文件可以到这里下载:
[url]http://home.njenet.net.cn/panhh/tools.zip[/url]
rawrite.exe是做rom启动芯片模拟盘,在dos下使用注下载.lzdsk长文件最好改成dos下的文件名。
instsrv.exe、tftp.exe和tftpd.exe用来安装tftp服务,注意tftpd.exe才是tftp服务程序,tftp.exe是客户端。

按hero的方法已做好了win2000终端的启动盘。正在做win98。
[url]http://www.suyong.y365.com/download.htm[/url]
那个“tcp终端”就是了。
点右键另存才能下来。不知什么原因?
网卡不同,要改其中的net.cfg、 *.dos文件,还有autoexec.bat
终端服务器设置ip地址不同,服务器的ip要改为192.168.0.111
再用mboot中的方法做成映象。

hero的mboot.dat是在win/dos下做启动映象的好办法,但有个不足。有些情况下的映象文件不能正常用,体现在实际文件占的字节大于一定数量时后面的文件就不能正常使用,只有目录没有内容。
分析hero做的映象文件的构成如下:
1、mknbi-dos做出的文件头,4096字节。就是mboot.dat
2、磁盘映象文件(可以是hddos或winima60做出的*.img或*.ima文件),1474560字节。
所以是1474560+4096=1478656字节。
而用mknbi-dos在linux下做出的是:
1、文件头 4096字节。
2、磁盘映象文件的实际大小的内容。
所以一般比1478656要小。
可以判断映象文件加载时不是按你做的文件大小加载成A盘的,而是按文件头中记录的磁盘映象文件的实际大小加载的,所以大于这个位置的文件就只有目录没有内容了。

修改的办法是改mboot.dat中记录映象文件的大小值。
1、用winhex打开mboot.dat找到
35(16进制)地址 56 12 改成 80 16
存盘,ok!!!

做好的mboot.dat

首先要感谢hero为我们做出的这张盘,有网友问不同情况下的设置与使用,我把我自己使用的情况说一说。

格式化一张系统盘,把解出的文件复制上去(有些文件是隐藏的),做过必要修改后就可以启动w2k终端了。启动成功后可以做成映象文件。

不同设置要修改的说明:

1、autoexec.bat内容及说明。确良
@echo off
xmsdsk 1440 x: /y >nul
set tmp=x:\temp
set temp=x:\temp
lsl >nul

rem rtl8029.com是8029网卡的驱动程序。我的网卡是dlink-220所以我换成de22x.com
rem 不要忘记把磁盘上的rtl8029.com删了,换成网卡驱动盘上的de22x.com
rem 其它网卡驱动,一般是在\nwclient\dos\两个文件net.cfg、???.com
rem ???要自己试了。8139可能是rtlodi.com,ne可能是ne2000.com但一定是nw客户端的文件。

rtl8029 >nul

tcpip >nul
mnovlwp >nul
x:
copy a:\command.com >nul
set comspec=x:\command.com
set winbootdir=
path=a:;x:;
rem 下面三句我也不知道是什么意思,自己看着办吧。
SET RES=640
SET CLR=256
SET LOG=0

rem wf.exe是用arj做的自解包,是icados32设置好win2000终端连接配置后必要的文件打包做成的。
rem 你可以自己做好设置,按同样的文件打包。
rem 你也可以不改这个文件,而改你做的w2k终端服务器的ip地址为192.168.0.111
rem 这个ip数据来自于wf.exe解开后的appsrv.ini的设置内容。

a:wf.exe -y >nul
cd wfclient
mouse >nul
wfcdos32 win2000 /batch
SHUTDOWN

2、net.cfg的内容和修改

Link Support
Buffers 8 1500
MemPool 4096

;只要根据驱动盘上nw客户端的net.cfg中的驱动名改下面的PCIODI
Link Driver PCIODI
FRAME Ethernet_II

3、msdos.sys
LOGO=0没有启动画面。
LOGO=1有启动画面。(我的机器有启动画面时登录界面不正常)

4、如果你要自己做icados32客户端设置,你可以在有盘dos上安装icados32,设置好连接win2000的配置后按照wf.exe的文件重新做一个wf.exe,注意终端服务器的名最好要用ip地址。

2。For custom ROM configuration press: 中有选择。
NO_DHCP_SUPPORT
Use BOOTP instead of DHCP
RARP_NOT_BOOTP
Use RARP instead of BOOTP/DHCP

我用litenet1.15上传后,把启动盘加了S盘后做成映象文件,就可以启动98了,实用性上我没有条件测试。(我没有100M网,10M一台就很慢了)大家可以一起试试。

rom-o-matic有配置选项:
我写出我试过的几项意思,其它的请E文较好试试。

Make configuration selections and then press to save your changes.

ASK_BOOT: 启动时“Boot from Network or from Local? ”从网络还是本地启动?问题的等待时间,0或-1不等待。
Ask “Boot from Network or from Local? " at startup, timeout after n seconds (0 = no timeout); this can be done in a more generic way by using the IMAGE_MENU, but it requires that the “bootp” server is accessible, even when booting locally. To disable the prompt completely use 0 or -1.
ANS_DEFAULT: ANS_NETWOR KANS_LOCAL 上面问题的默认答案
Assume Network to previous question (alternative: ANS_LOCAL) on timeout or Return key See etherboot.h for prompt and answer strings.
MOTD
Display message of the day; read vendortags.html for further information.
IMAGE_MENU
Allow to interactively chose between different bootimages; read vendortags.html for further information.
PASSWD
enable password protection for boot images; this requires -DIMAGE_MENU
USRPARMS
allow the user to interactively edit parameters that are passed to the booted kernel; you should probably enable -DPASSWD as well; this feature requires -DIMAGE_MENU
ANSIESC
evaluate a subset of common ANSI escape sequences when displaying the message of the day; this probably does not make sense unless you also define -DMOTD or at least -DIMAGE_MENU. It is possible to combine this option with -DCONSOLE_DUAL, but you have to be aware that the boot menu will no longer use ANSI escapes to be compatible with the serial console. Also be careful with your banners, as they may confuse your serial console. Generally you lose most of the ANSIESC functionality.
GFX
support extensions to the ANSI escape sequences for displaying graphics (icons or logos); this requires -DANSIESC. It probably does not make sense to use -DGFX if you have -DCONSOLE_DUAL, as the serial console normally cannot handle the GFX stuff.
SHOW_NUMERIC
Display Menupoints as Numbers
DELIMITERLINES
print a line of = characters at the start and also just before starting an image.
SIZEINDICATOR
update a running total of the amount of code loaded so far, in kilobytes
NO_DHCP_SUPPORT 用BOOTP启动服务
Use BOOTP instead of DHCP
RARP_NOT_BOOTP 用RARP启动服务
Use RARP instead of BOOTP/DHCP
REQUIRE_VCI_ETHERBOOT
Require an encapsulated Vendor Class Identifier of “Etherboot” in the DHCP reply Requires DHCP support.
CONGESTED
turns on packet retransmission. Use it on a congested network, where the normal operation can’t boot the image.
BACKOFF_LIMIT:
sets the maximum RFC951 backoff exponent to n. Do not set this unreasonably low, because on networks with many machines they can saturate the link (the delay corresponding to the exponent is a random time in the range 0…3.52^n seconds). Use 5 for a VERY small network (max. 2 minutes delay), 7 for a medium sized network (max. 7.5 minutes delay) or 10 for a really huge network with many clients, frequent congestions (max. 1 hour delay). On average the delay time will be half the maximum value. If in doubt about the consequences, use a larger value. Also keep in mind that the number of retransmissions is not changed by this setting, so the default of 20 may no longer be appropriate. You might need to set MAX_ARP_RETRIES, MAX_BOOTP_RETRIES, MAX_TFTP_RETRIES and MAX_RPC_RETRIES to a larger value.
CAN_BOOT_DISK
Can boot from floppy/hd if bootimage matches the pattern "/dev/[fh]d
”; if you do not have enough space in the EPROM, then disable this feature and use “mknbi-blkdev” for booting from a local blockdevice.
TRY_FLOPPY_FIRST:
If > 0, tries that many times to read the boot sector from a floppy drive before booting from ROM. If successful, does a local boot. It assumes the floppy is bootable. Requires -DCAN_BOOT_DISK.
EMERGENCYDISKBOOT
if no BOOTP server can be found, then boot from local disk. The accessibility of the TFTP server has no effect, though! So configure your BOOTP server properly. You should probably reduce MAX_BOOTP_RETRIES to a small number like 3.
TAGGED_IMAGE
Add tagged image kernel boot support (recommended)
AOUT_IMAGE
Add a.out kernel boot support (generic)
ELF_IMAGE
Add generic ELF kernel boot support (recommended)
IMAGE_MULTIBOOT
Add Multiboot image support (currently only for ELF images)
IMAGE_FREEBSD
Add FreeBSD image loading support (requires at least -DAOUT_IMAGE and/or -DELF_IMAGE)
DOWNLOAD_PROTO_TFTP 用tftp服务下载映象文件
If defined, boots by tftp (recommended).
DOWNLOAD_PROTO_NFS 用nfs启动映象
if defined, boots from a NFS mount and disables tftp loading. Default is DOWNLOAD_PROTO_TFTP if neither is defined.
CONSOLE_CRT
set for CRT console (default if nothing else is set)
CONSOLE_SERIAL
set for serial console.
CONSOLE_DUAL
set for CRT and serial console, see comment at -DANSIESC and -DGFX
COMCONSOLE:
set port, e.g. 0x3F8
CONSPEED:
set speed, e.g. 57600
COMPARM:
set Line Control Register value for data bits, stop bits and parity. See a National Semiconditor 8250/ 16450/16550 data sheet for bit meanings. If undefined, defaults to 0x03 = 8N1.
NO_DELAYED_INT
Take control as soon as BIOS detects the ROM. Normally hooks onto INT18H or INT19H. Use only if you have a very non-conformant BIOS as it bypasses BIOS initialisation of devices. This only works for legacy ROMs, i.e. PCI_PNP_HEADER not defined. This option was formerly called NOINT19H.
BOOT_INT18H
Etherboot normally hooks onto INT19H for legacy ROMs. You can choose to hook onto INT18H (Basic interpreter entry point) instead. This entry point is used when all boot devices have been exhausted. This option must be added to LCONFIG.
CONFIG_PCI_DIRECT
define this for PCI BIOSes that do not implement BIOS32 or not correctly
T503_AUI
Use AUI by default on 3c503 cards.
MOVEROM
if your motherboard does not cache adapter memory space, then this option can speed up loading of compressed BOOT-Prom images. It has no affect on uncompressed images. Unless you are very tight on free space, you will usually want to define this option. This option must be added to LCONFIG! (recommended).
USE_LOWMEM_BUFFER
Define to put some buffers below 0x10000 may interfere with other programs (not recommended).
FREEBSD_KERNEL_ENV
Pass in FreeBSD kernel environment
BAR_PROGRESS
Use rotating bar instead of sequential dots to indicate a packet transmitted.
CONFIG_TSC_CURRTICKS
Uses the processor time stamp counter instead of reading the BIOS time counter. This allows Etherboot to work even without a BIOS. This only works on late model 486s and above.
POWERSAVE
Halt the processor when waiting for keyboard input which saves power while waiting for user interaction. Good for compute clusters and VMware emulation.
BBS_BUT_NOT_PNP_COMPLIANT
Some BIOSes claim to be PNP but they don’t conform to the BBS spec which specifies that ES:DI must point to the string $PnP on entry. This option works around those. This option must be added to LCONFIG.
AOUT_LYNX_KDI
Add Lynx a.out KDI support
PXELOADER_KEEP_UNDI
For implementation later with UNDI.

server: win2k + bootpd32 + tftpd32
workstation: 8139 + etherboot rom/hj rom/bootix demodisk

问题一:在工作站端,采用以上的三种rom均能启动。但是只有用到bootix的
demodisk时,工作站才能完完全全的下载镜象文件(在bpshell里生成的
win98.x),并进入到98。

问题二:而etherboot或花椒的rom,工作站在下载镜像文件(镜像文件是用hero
兄的方法生成的)到542k时,工作站马上就重启了。请教各位版主,
tftpd32的为什么会限制工作站下载542k呢?该如何解决呢?真是百思
不得其解!

问题三:用hero兄的方法制成的镜象文件(文件头有55aa)呢,工作站下载到542
K就重启了,而用bootix生成的镜象文件,工作站确显示:非有效的镜
象文件。

一开始有网友说是镜象文件的问题,但是我用了panhh兄修改后的mboot.dat做的
镜象文件,工作站还是下载了542k后,重启。后来我在red head7.2里头,按疯子兄的方法,生成了镜象文件是1.21k,可是工作站还是下载了542k后,重启。

天啊?!?难道就没办法解决了!

不是DOS格式的软件,如何启动WIN98?

转贴一篇:

如何为Windows 2000创建一个tftp service
Author: Adam
Date: 2001-9-22 1:42:37

近日在论坛总是看到有人问怎么启动Win2K下的TFTP服务,其实在默认情况下TFTP服务是没有安装的,只有在使用RIS服务的时候才会安装该服务(国内很少有人用这个玩艺,可能我是井底之蛙吧),现在我给大家示范如何来安装一个tftp服务(如果你有需要的话,阁下是网管还是XX呢?)

我们首先找到系统中的tftpd.exe文件,一般我们可以在%systemroot%\system32\dllcache目录下找到该文件,建议把该文件copy到其他目录。

C:>copy %systemroot%\system32\dllcache\tftpd.exe %systemroot%\system32
已复制 1 个文件。

我们会用Windows 2000下的Resource Kits中的一个工具instsrv创建一个服务,instsrv的用法如下,当然,你也可以用其他的工具来实现(如srvinstw,GUI方式的)。
C:>instsrv
Installs and removes system services from NT

INSTSRV ( | REMOVE)
[-a ] [-p ]

Install service example:

INSTSRV MyService C:\MyDir\DiskService.Exe
-OR-
INSTSRV MyService C:\mailsrv\mailsrv.exe -a MYDOMAIN\joebob -p foo

Remove service example:

INSTSRV MyService REMOVE

[俺的特色:字不够,帮助凑!]

添加一个服务,注意,该服务创建侯为自动启动。
C:>instsrv tftp c:\winnt\system32\tftpd.exe
The service was successfuly added!

Make sure that you go into the Control Panel and use
the Services applet to change the Account Name and
Password that this newly installed service will use
for its Security Context.

启动服务
C:>net start tftp
tftp 服务正在启动 .
tftp 服务已经启动成功。

测试服务是否正常工作
C:>tftp -i 61.135.21.195 PUT sometips.gif sometips.gif
Transfer successful: 4209 bytes in 1 second, 4209 bytes/s

C:>dir tftpdroot
驱动器 C 中的卷是 C
卷的序列号是 1E23-1907

C:\tftpdroot 的目录

2001-09-22 01:14 .
2001-09-22 01:14 …
2001-09-22 01:14 4,209 sometips.gif
1 个文件 4,209 字节
2 个目录 94,113,792 可用字节

注意,如果你上传文件,系统会在%systemdrive%自动创建一个名为tftproot的目录,OK,所有的工作已经完成了!

Enjoy it!

我的转贴就来自这里……