事实上,大多数主板厂商(包括英特尔)都建议不要升级BIOS,除非有特定的问题,可以升级到特定的BIOS来解决。大多数系统管理员也同意“如果没有损坏,不要尝试修复它”。升级BIOS只是为了达到最新的状态,但也可能造成一些以前不存在的问题。
对于Windows用户而言,这一切似乎是简单的。Windows应用程序可以在Windows运行时在计算机上安装BIOS升级,但这显然不是广大Linux程序员的选择。
目标
最近,当我决定升级我的两个较旧的Linux系统时,这一切都开始了……
我已经运行BOINC很多年了,参与过各种分布式计算环境,并且几乎完全将这两台计算机用作计算平台。我决定要为这些任务提供更好的计算能力,并且相比于再买一台电脑而言,我更倾向于更新一些旧的计算机。毕竟,这些电脑曾经都很完美,并可能具有一些未开发的功能。
我最初使用这两个系统时,原始性能都不是问题。几年前,我从本地的Intrex电脑商店购买了英特尔DH61BE主板,支持高达3.5GHz的LGA1155封装中的第三代Core i3,i5和i7处理器。 当时这些都非常接近最先进的技术,但并不是最顶尖的。我安装的Core i3 G620 CPU有2个内核,2.6GHz,没有超线程。
这几天这两个系统都运行BOINC。我使用一个测试Fedora升级和其他新的软件,另一个作为网络的防火墙和路由器。
为了升级,我在3.5GHz处理器上购买了解锁的英特尔17-3770K解决方案,以取代现有的。这已经是目前该主板状态下最新的装备了,我还购买了比CPU封装的冷却能力更高的非标准CPU散热器,具体你的电脑是否可以带得起来,要查看英特尔网站上给出的说明。
问题
在接收到替换处理器之后,我在测试系统中安装了一个处理器,因为它没有执行任何对网络至关重要的任务。在尝试接通电源之后,我收到了主板扬声器三秒钟的重复哔哔声。主板文档 – 是的,我下载并保留它,这意味着系统有内存错误。
在这一点上,我无法进入BIOS进行任何配置,所以我删除了新的CPU,把旧的重新插入。这至少允许系统启动,让我进入BIOS检查BIOS版本级别 ,使用英特尔支持网站,发现在最新版本之后的多个级别。
还有另一种方法,就是从Linux命令行找到BIOS级别,并重新启动到Fedora 25中,并使用dmidecode命令找到当前的BIOS。-t选项指定要显示的类型信息,在这种情况下,类型0是BIOS信息。
# dmidecode -t 0
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 2.6 present.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: Intel Corp.
Version: BEH6110H.86A.0048.2012.1105.1520
Release Date: 11/05/2012
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 1024 kB
Characteristics:
PCI is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
BIOS ROM is socketed
EDD is supported
5.25″/1.2 MB floppy services are supported (int 13h)
3.5″/720 kB floppy services are supported (int 13h)
3.5″/2.88 MB floppy services are supported (int 13h)
Print screen service is supported (int 5h)
8042 keyboard services are supported (int 9h)
Serial services are supported (int 14h)
Printer services are supported (int 17h)
ACPI is supported
USB legacy is supported
BIOS boot specification is supported
Targeted content distribution is supported
▲使用dmidecode命令查找BIOS信息
上面显示的dmidecode命令的输出显示了BEH6110H.86A.0048.2012.1105.1520的BIOS版本。此信息来自于升级BIOS的主机之一。
我们可以通过假设点是字段分隔符来解码此版本号中的大多数字段。 第一个字段是电路板型号,第二个字段可能是工程版本级别。第三个字段,0048是实际的BIOS版本级别,是Intel网页中出现的内容; 字段四是年份,字段五是以发布BIOS的MMDD格式的月份和日期。 我不知道最后一个字段是什么,但我认为这可能是一个24小时格式的时间,以便最后三个字段代表编译BIOS的日期和时间。
原始的BIOS是23版,根据英特尔网站,最新版本是120。请注意,并不是中间所有BIOS的版本号都公开发布。我下载了最新版本,并尝试在引导时使用F7选项来升级BIOS。这意味着,启动时的初始BIOS显示包括一个F7选项,F2进入BIOS配置,F10进入引导选项菜单。我按F7并选择了我放在FAT格式化U盘上的BIOS文件,但还是失败了。
首先,我的BIOS版本在启动时并不支持F7,尽管该选项确实出现在BIOS屏幕上。 第二,不是所有BIOS版本都可以直接安装,有必要按顺序安装多个BIOS修订版本。如果有一个DOS副本,可以使用一个英特尔的其他程序来更新BIOS,iFlash.exe。为了在不花钱的情况下克服这个问题,我执行了一个无效的搜索,发现我没有DOS副本。
FreeDOS
在这之后,我访问了FreeDOS网站,FreeDOS是开放原始代码的软件,并根据GPL授权。
通过大量的谷歌搜索,我发现可以通过创建可引导的FreeDOS U盘来实现升级,将* .BIO文件复制到USB设备。
更新
在创建了FreeDOS可启动U盘后,我将BIOS文件复制到U盘,使用启动菜单从USB设备启动,并按照英特尔网站上的说明运行iflash.exe程序。您真正需要从该页面知道的是使用commandIFLASH2.EXE / PF XXX.BIO,其中XXX是BIOS文件的名称。
在开始实际升级之前,先花费几分钟重新启动一下。然后开始升级,我安装了新的CPU并重新启动。BIOS rev 48也是使用F7选项启用进一步BIOS升级所需的版本。即使还有几个较新的版本可用,但我没有进一步升级。英特尔网站以及大多数系统管理员都建议只有绝对必要时才升级BIOS。 英特尔还建议仅升级到解决现存问题所需的最低版本。
最终的想法
我的Chrome浏览器自动将* .BIO文件重命名为* .BIN,我不知道为什么。一定要确保把它们重命名为* .BIO,否则iflash程序不会识别它们。建议广大程序员提前研究任何要用于升级系统的硬件的兼容性,确保足够了解黑客入侵硬件时可能遇到的问题。如果遇到问题,可以先尝试网络搜索,或许可以得到一个解决办法。
最后,当我发现可以通过开源项目解决升级问题时,真的很兴奋,我认为这是一次不错的尝试,你觉得呢?
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-06/144759.htm