一位以前的同事有一台 ThinkPad T60,几个月之前在 Ubuntu 下突然不能上网了,而 Windows 上完全正常,而且启动后会出现错误。经历了 Ubuntu 7.04 时代,最近重装Ubuntu 7.10 后,仍然未解决此问题。今天约好见面,帮他解决一下此问题,现特此记录一下。
问题是这样的:
1. 开机后,出现错误如下
Initializing Intel(R) Boot Agent GE v1.2.31
PXE-E05: The LAN adapter’s configuration is corrupted or
has not been initialized. The Boot Agent cannot continue.
等几秒后显示
ERROR
Expansion ROM not initialized – PCI on Motherboard
? Bus:00, Device:00, Function:00
Press to continue
2. 此时笔记本仍然可以进入系统,包括 Windows 和 Ubuntu 。
3. Windows 可以正常上网,但 Ubuntu 坚决不从。
问题分析:
1. 当初装 Ubuntu 7.04 ,开始一段时间上网是没有问题的,排除系统识别硬件的不兼容问题。
2. Windows 可以上网,而 Ubuntu 不能,除去 Ubuntu 对硬件的驱动的问题,可以设想是 Windows 对硬件的兼容性较好,而 Linux 系统相对较差所致。
首先,我们可以来了解一下启动报错开始中的 PXE 是什么意思?
PXE(preboot execute environment) 是由 Intel 公司开发的最新技术,工作于 Client/Server 的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持来自网络的操作系统的启动过程,其启动过程中,终端要求服务器分配IP地址,再用 TFTP(trivial file transfer protocol) 或 MTETP(multicast trivial file transfer protocol) 协议下载一个启动软件包到本机内存中并执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。 ?PXE 可以引导多种操作系统,如: Windows 95/98/2000,linux 等。
PXE 最直接的表现是,在网络环境下工作站可以省去硬盘,但又不是通常所说的无盘站的概念,因为使用该技术的PC在网络方式下的运行速度要比有盘 PC 快 3 倍以上。当然使用 PXE 的 PC 也不是传统意义上的 TERMINAL 终端,因为使用了 PXE 的 PC 并不消耗服务器的 CPU , RAM 等资源,故服务器的硬件要求极低。
由说明来看,PXE 可以解释为一种无盘的启动模式,系统启动时的报错表明网络的配置损坏或者未进行初始化,所以单纯的解决启动报错的问题很简单,可以在 BIOS 里, CONFIG—NETWORK—INTERNAL NETWORK OPTION ROM ,把这个选项的参数改成DISABLE即可解决这个问题。但是解决了启动报错的问题后, Ubuntu 仍然不能上网,没有解决根本上的问题。
上面的努力没有得到根本的解决问题之道,我们再来看看后面报错的信息,“ERROR Expansion ROM not initialized” ,从这句话可以看出,网卡 EEPROM 内容没有初始化,我们可以大胆的预测 EEPROM 已经损坏,才出现的此信息。
EEPROM 是什么?
EEPROM (Electrically Erasable Programmable Read-Only Memory),电可擦可编程只读存储器–一种掉电后数据不丢失的存储芯片。 EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。一般用在即插即用。
EEPROM(电可擦写可编程只读存储器)是可用户更改的只读存储器(ROM),其可通过高于普通电压的作用来擦除和重编程(重写)。不像EPROM芯片,EEPROM不需从计算机中取出即可修改。在一个EEPROM中,当计算机在使用的时候是可频繁地重编程的,EEPROM的寿命是一个很重要的设计考虑参数。EEPROM的一种特殊形式是闪存,其应用通常是个人电脑中的电压来擦写和重编程。
经查, EEPROM 内容的损坏通常发生在正在对网卡 EEPROM 进行编程时,系统突然的复位或者掉电,如果 EEPROM 出现此类问题, PXE ROM 将不能执行引导,所以我们推论 EEPROM 内容已损坏,是能够反推回为什么 PXE 会出错的问题(虽然有点勉强,但在没有解决办法的问题下只能大胆假设了)。
现在的问题是, EEPROM 已损坏,该怎么修复?
首先想到的是刷新最新的 BIOS ,结果让人失望, 刷新 BIOS 无效。
无果后在网上进行大范围的搜索,经过一番搜索,终于找到了解决办法,在老外的一个 Blog 上说,可以下载 Intel? Boot Agent PROBOOT.exe ,在纯 Dos 下执行 “IBAUtil.exe -DEFCFG” 把 EEPROM 重新刷新为出厂设置即可解决此问题。
老外也提供一个 ISO 文件提供下载,地址为:
– CDProBOOT-0.2.iso – FreeDOS boot cd-rom, customized with PROBoot Intel tools and a DOS menu selector.
– md5sum: c12babeec8e1a0e9072e95575f32a69a
但是 Intel 提供的 bootcd 在仅有 NTFS 时有 Dos 路径 bug ,如果上面的 ISO 有问题,还可以下载国内网友修改后的版本,地址为:
– CDProBOOT.iso – FreeDOS boot cd-rom, customized with PROBoot Intel tools and a DOS menu selector.
– md5sum: 63624e964a31802772d3a8fadecb1f3f
下载后将该 ISO 镜像刻录为光盘(比较浪费啊,iso 才3.1M大小),光盘启动后选择 2 ,回车,还没等你反应过来,一切就已经恢复正常了。重新开机后把 BIOS 恢复为 Default ,启动不再出错, Ubuntu 也重归正常。
据网上查找的情况来看,好多 Thinkpad T60 发生过这个故障,这到底是谁的问题呢?Lenovo? Intel ? ?Linux ?