RPLPXE代码“刷入”BIOS

卢学军 2001.12.8

 

          众所周知,欲实现工作站的无盘启动,一般需在网卡上加一块远程引导芯片(即我们常说的BOOTROM)。

          而根据远程启动方式的不同,BOOTROM的容量、类型也不一样。如有的BOOTROM只能用于NETWARE环境的无盘工作站中(早期的NE2000兼容网卡所配的BOOTROM大都如此);有的BOOTROM同时支持NETWARENTRPL方式的远程启动(当今的网卡所配的BOOTROM基本属于这种情形);有的BOOTROM则同时支持RPLPXE方式的远程引导。

          对于第三种BOOROM,由于是近两年才出现的新东东,所以较难买到。而即便能够买到,价格却比以前的BOOTROM要高许多。

         于是有“好事者”产生了将BOOTROM的内容“刷入”BIOS的想法,这样网卡上不再安装BOOTROM也能实现无盘WIN9X或无盘WIN2000的启动。

         实现这一技术有两个前提条件:一是您的BIOS能支持升级(例如能被CIH光顾),二是BIOSROM中有足够的剩余空间。我曾在一款DTK 2A5LEG3DC主板(BIOS类型:Award Modular BIOS v4.51PGBIOS日期:06/16/99)上尝试此技术,当“刷”到百分之六十点三时就中断了,报告没有足够空间。

         凭我个人的经验,如果主板中集成有网卡,或没有集成网卡但在COMS中有“On board LAN ”选项,则对这类主板的BIOS施以“刷”术,一般都不会因“空间”不够而失败。

RPLPXE代码“刷入”BIOS的基本思路为:先用BIOS刷新工具(如AWARDAWDFLASH.EXE)将BIOS内容读出来(为一个二进制文件),再用相应的工具将RPLPXE代码(一般是由网卡厂商提供的扩展名为LOM的文件)“整合”进读出的这个文件中,最后再用BIOS刷新工具将包含有RPLPXE代码的新文件“刷”回BIOS中。

由此可知全过程包含了升级BIOS的所有操作,是干一件很“危险”的事。所以如果您对升级BIOS还不太熟悉的话,强烈建议您在对BIOS“开刷”前,读一读今年的《电脑报》48期上有关BIOS的专题文章,以防不测。

         整个过程用到的三个文件分别是:AWDFLASH.EXE(读出BIOS信息或将信息写入BIOS的工具,仅对AWARD BIOS起作用);CBROM606.EXE(修改BIOS工具,这里用来将RPLPXE代码文件“整合”进BIOS信息文件中);RTSROM_M.LOMRealtek RTL8139兼容网卡专用的RPLPXE代码文件)。这些文件可从相关网站或我的主页HTTP://BOOTROM.YEAH.NET上下载。

         下面以Realtek RTL8139(A/B/C)网卡、精英P6STP-FL主板(BIOS类型:Award Modular BIOS v6.00PGBIOS日期:04/25/2001)为例来说明操作过程。

1.在硬盘中建一目录如C:\DIY,将上面提到的三个文件拷入该目录中(不知何故,几乎所有介绍升级BIOS的文章都建议在软盘中进行文件操作,我认为那样既不可靠又影响速度,因为软盘给人的感觉实在太不安全了),然后启动电脑于纯DOS状态下(即未执行CONFIG.SYSAUTOEXEC.BAT和其它任何应用程序)。

2.进入DIY目录,运行AWDFLASH  /sy  /pn  bios.bin (参数“/sy”的意思是读出BIOS信息将其以文件的方式保存到磁盘中,此处将读出的BIOS信息文件命名为BIOS.BIN;参数“/pn”的意思是不实施BIOS刷新,即此时不将新的信息写入BIOS中),该命令执行的结果是在DIY目录下产生了一个包含有BIOS信息的文件BIOS.BIN,建议将此文件复制一份于质量有保证的空白软盘中,以备需要恢复原BIOS时用。

3.DIY目录下,运行CBROM606  BIOS.BIN  /PCI  RTSROM_M.LOM,作用是将RPLPXE代码文件里的信息(此处代码文件名为RTSROM_M.LOM,用于Realtek RTL8139网卡的)“整合”进BIOS.BIN(参数“/pci”的意思是“添加PCI网卡BOOTROM里的信息到主板的BIOS中”)

4.将含有RPLPXE代码的新BIOS.BIN回写到BIOS中去。这一步的操作其实类似于升级BIOS,极具破坏性,所以要特别小心。

具体步骤为:进入DIY目录后运行AWDFLASH  /SN (参数“/SN”的意思为刷新BIOS时不需备份原BIOS,因为我们在步骤1中已将原BIOS的备份文件拷入了软盘中,故此时不再需重复备份),此时屏幕显示如画面:

File Name to Program:后输入c:\diy\bios.bin  (目的是把BIOS.BIN文件的内容“刷”入BIOS),然后回车,接着屏幕会出现另一画面,询问是否确定要进行BIOS刷新(Are you sure to program y/n),选择“Y”,其后立即会出现一个进度框显示刷新的进程,一般情况下几秒钟之内就会完成,最后选择“F1”重新启动电脑(若按“F10”则返回DOS提示符)。

如果刷新成功,重启电脑后屏幕应出现“Realtek RTL8139(A/B/C)RTL8130 Boot Agent,Press Shift-F10 to configure …….”字样(当然此时电脑中应安装有相应型号的未带BOOTROM的网卡,我实验用的网卡型号为TP-LINK 8139)。

顺便说一下,如果刷新过程中操作不当或突然停电等,可能会出现重启电脑黑屏的故障。此时需找一台能正常工作的电脑,在其上将步骤2中的软盘做成DOS启动盘,复制BIOS刷新软件AWDFLASH.EXE于该盘中(请查看一下步骤2中复制的BIOS.BIN还在不在软盘中,它是一定不能少的),同时在该盘的根目录下建立AUTOEXEC.BAT文件,内容为:AWDFLASH BIOS.BIN /SN /PY /R(“/SN”的意思为不备份BIOS而直接进行BIOS刷新,参数“/PY”的意思是确定要更新BIOS,参数“/R”的意思为刷新完BIOS后系统自动重启),然后把这张软盘拿到被“刷”坏了的机器上“摸黑”启动电脑,通过观察软驱的“动作”来判断程序的执行情况。若顺利的话,重启电脑后应能消除故障并可将BIOS恢复到刷新前的状态。

常见故障及对策:

1.   在用CBROM606命令将RPLPXE代码植入BIOS信息文件时,系统显示:“WARNING:The BIOS is Not award bios 600 Ver”

解决方法:更换CDROM606文件版本,该文件有多种版本,各有其特点,并非版本越高越好。

2.   在用CBROM606命令将RPLPXE代码植入BIOS信息文件时(假设此处BIOS信息文件名为BIOS.BIN)发生中断,系统显示:“bios.bin have not enough space for adding ROM.”

解决方法:先用CBROM606命令查看BIOS的剩余空间,例如CBROM606 BIOS.BIN /D(实际操作时请把BIOS.BIN换成相关的文件名),系统将列表显示BIOS.BIN的文件组成,一般为9个文件,而屏幕下方有一行会显示“Remain compress code space=×××”(即BIOS剩余空间的字节数),请记住等号后面的字节数,再上网下载一个字节数小于该数的LOM文件(即RPLPXE代码文件,注意应与网卡型号相匹配)。如果BIOS剩余空间实在太少,则这种BIOS难以植入RPLPXE代码。

3.   刷新完BIOS后尝试以PXE方式启动无盘WIN9X时,系统提示:

PXE-EC1Base-code ROM ID structure was not found

PXE-MOF: Exiting PXE ROM.

解决方法:更换LOM文件的版本,我曾在网上下载两个LOM文件,一个名为RTSROM_S.LOM(28672字节),另一个名为RTSROM_M.LOM(53248字节)。使用前者会出现如上错误提示,而使用后者则一切正常。