如何更新戴尔笔记本电脑的BIOS?

我在一台Vista笔记本上安装了Ubuntu 11.10,但戴尔目前提供的BIOS更新是以.exe格式提供的。我的BIOS版本是A09,但在驱动程序下载网站上,最新的BIOS版本是A011。
请帮我更新BIOS。
我的笔记本信息:
Libsmbios version:      2.2.28
Product Name:           Studio 1537
Vendor:                 Dell Inc.
BIOS Version:           A09
System ID:              0x029F
Service Tag:            HBVV2BS
Express Service Code:   37723945096

运行sudo update_firmware后,我得到了以下一系列的错误:
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2919-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2919
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2930-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2930
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2929-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2929
E: Unable to locate package pci-firmware-ven-0x1180-dev-0x0832-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x1180-dev-0x0832
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x294a
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2448
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2946
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2940
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2942
E: Unable to locate package pci-firmware-ven-0x1002-dev-0xaa28-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x1002-dev-0xaa28
E: Unable to locate package pci-firmware-ven-0x1002-dev-0x95c4-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x1002-dev-0x95c4
E: Unable to locate package pci-firmware-ven-0x14e4-dev-0x1698-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x14e4-dev-0x1698
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2936-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2936
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2935-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2935
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2934-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2934
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x293a-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x293a
E: Unable to locate package pci-firmware-ven-0x1180-dev-0x0822-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x1180-dev-0x0822
E: Unable to locate package pci-firmware-ven-0x1180-dev-0x0592-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x1180-dev-0x0592
E: Unable to locate package pci-firmware-ven-0x1180-dev-0x0852-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x1180-dev-0x0852
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x4232-subven-0x8086-subdev-0x1321
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x4232
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x293e-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x293e
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2a40-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2a40
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2937-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2937
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2938-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2938
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2939-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2939
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x293c-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x293c
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2a41-subven-0x1028-subdev-0x029f
E: Unable to locate package pci-firmware-ven-0x8086-dev-0x2a41
11个回答

2015年10月编辑

在Windows 7时代过去了之后,这个答案已经没有用了。首先看一下其他的答案。除非你有时间浪费,否则请不要继续阅读。

其他回答可能适用于旧硬件,但我是根据我升级戴尔Inspiron 7520(2012年产)的BIOS的经验来发表这个回答的。在非官方的戴尔支持网站上检查日期表明,这也可能适用于自2010年甚至更早以来的其他戴尔型号。

第一步是获取有关您当前系统的信息。在Ubuntu中,您可以使用以下两个命令检查BIOS版本:

sudo dmidecode -s bios-version
sudo dmidecode -s bios-release-date

当查询制造商的网站时,您需要关于计算机硬件的信息。对于戴尔来说,这通常以服务标签和快速服务代码的形式打印在底部的某个地方。如果这不容易阅读,可以通过以下方式获取信息:

1)安装libsmbios:

sudo apt-get update
sudo apt-get install libsmbios-bin

从系统中获取服务选项卡等内容。
sudo getSystemId

这将产生类似于以下的输出:
Libsmbios version:      2.2.28
Product Name:           Inspiron 7520
Vendor:                 Dell Inc.
BIOS Version:           ANN
System ID:              0xNNNN
Service Tag:            NABCDEFN
Express Service Code:   NNNNNNNNNN
Asset Tag:              
Property Ownership Tag: 

有了BIOS版本、系统ID、服务标签和快速服务代码等关键信息,您可以前往Dell网站下载适用于您特定计算机的相应驱动程序。
到目前为止一切顺利,但您会注意到下载的文件是一个Windows可执行文件。就像它无法在Ubuntu(或任何其他Linux)下运行一样,它也无法在旧版Windows中运行,尤其是MS-DOS或任何MS-DOS的仿真环境。尽管下载页面可能声称与早期Windows版本兼容,但在任何旧的DOS类型环境中,该.exe文件只会运行并打印出一个恼人的消息后退出,而不会执行任何操作。
所以,现在来到有趣的部分:您需要一个Windows 7(或更高版本)的环境才能运行BIOS升级。那么,在单启动的Ubuntu机器上(甚至是运行旧版Windows,如XP的计算机),我们该如何做呢?
关键的要素在这一点上是一个Windows 7修复盘。有几种方法可以获得一个,包括从互联网上购买一个,或者与拥有Windows 7电脑的人交朋友。如果你很幸运,你的计算机制造商可能会在你的包装盒中捆绑一个。我选择在我的Ubuntu机器上制作一个,使用VirtualBox中运行的Windows 7副本,并根据this web site的制作救援盘的说明进行调整。
好消息是,似乎并不重要从哪个版本的Windows 7获得修复盘。由于这是一个BIOS升级,即使你的计算机是64位的,使用32位或64位版本也无关紧要。
一旦你有了一个Windows 7修复盘,剩下的就很容易了。如果你愿意,你可以将它制作成可启动的USB,但如果你的包装盒有光驱,这是不必要的。以下是步骤:
将下载的BIOS升级文件.exe 放入一个普通的USB闪存驱动器中。 从Windows 7修复盘重新启动计算机,在提示时按下空格键。 导航到命令提示符。(使用恢复工具->命令提示符)。 找到USB的正确驱动器号(在命令行上dir a:然后b、c等,直到找到正确的那个)。 在命令行上导航到它(输入带有冒号的驱动器号)。 通过键入其名称来运行该文件(注意,选项卡自动完成可用)。 从那里,只需遵循屏幕上的说明,并确保您的计算机在升级完成时保持通电状态。 请注意,在返回Ubuntu启动屏幕之前有两个自动重新启动。

3很棒的答案,请注意刚才发生了什么:你的问题被关闭,因为它是一个重复的问题,你发布在你的帖子上的答案被转移到了这个问题上,我对这个问题添加了一个悬赏,原因是“过时的答案”,如果没有人找到其他方法来解决这个问题而不需要Windows7救援光盘,那么这个悬赏很可能就是属于你的。 - Bruno Pereira
1谢谢 @Bruno,我不确定如何处理过时的答案,所以冒险重复提问,你的合并解决方案非常出色。 - Bobble
增加了关于下载过程和升级过程的更多细节,并在进行新的 BIOS 升级(A09)后再次操作。我确认,尽管戴尔下载站“说”该文件适用于传统的 Windows/DOS 系统,但事实并非如此。到目前为止,我只成功地使用 Windows 7 修复盘运行了下载文件。(Windows 7 安装盘毫无用处)。 - Bobble
我能够使用Windows 98启动盘映像来完成这个任务。我将Dell OptiPlex 760系统BIOS A16(2008, 2014)和附加在Ubuntu论坛帖子中的映像一起加载到一个USB闪存驱动器上。请确保您的USB驱动器已卸载。例如,如果它位于/dev/sdc,使用以下命令将Win98映像复制到USB驱动器:sudo dd if=./win98usb.img of=/dev/sdc conv=notrunc 然后复制BIOS更新文件。 - Michael McGinnis
@MichaelMcGinnis 这是个好消息。两年前我写答案时,我试过的DOS/Windows镜像除了Win7以外都无法运行。我包括了FreeDOS、XP和Vista,但我必须说我找不到方便的Win'98副本。 - Bobble
2@Boble - 我试了你的方法 - 当我执行BIOS文件(6430SA15.exe)时,我收到错误消息:“不支持图像类型所需的子系统不存在”。看起来这是32/64位的问题 :( - 有什么想法吗? - xhudik
1戴尔很可能重新编译了他们的exe文件,现在它们在DOS模式下运行(没有win64,就像我在上面的评论中提到的那样)- 也就是说,这个答案已经不再有帮助了。RAOF的答案(在USB上使用FreeDos)帮助了我。 - xhudik
1@xhudik 我预计在Win7时代之后,戴尔已经意识到他们需要一些更具未来性的东西。敢问这是不是Windows 10带来的好处呢?鉴于你的评论,我会编辑我的回答,以免让人们被现在已成历史的奇闻异事所分心。 - Bobble

你不需要Windows来安装他们网站上的任何固件更新,只需按照这里发布的说明进行操作。
从戴尔网站上获取的信息:
  1. 从dell.com下载与您的硬件相对应的Windows/DOS BIOS安装程序
  2. 下载最新的SystemRescueCD并将其刻录到空白CD上或安装到USB闪存驱动器上。
  3. 将Windows/DOS BIOS安装程序复制到格式为FAT的USB闪存驱动器上,或者复制到您安装SystemRescueCD的那个驱动器上。
  4. 从CD或闪存驱动器启动计算机。
  5. 在软盘映像菜单中选择从FreeDOS启动。
  6. 确保不要加载HIMEM和EMM386内存管理器。
  7. 切换到USB闪存驱动器(如果您的硬盘上没有任何FAT分区,则通常为C:)。
  8. 运行安装程序。

在运行E7240机器的A14更新时的示例。

enter image description here


1这个方法非常好用,我真的不明白为什么这不是第一种答案!我下载了最新的SystemRescueCD(4.2),并在他们的主页上非常简单地创建了一个LiveUSB。在这个fat32盘的根目录下,只需创建一个目录(例如media)并将.exe文件放入其中。然后从U盘启动,选择“A)运行..软盘..” → FREEDOS以获得此新版本。然后我选择了选项2)“XMGR和UIDE..”,遵循上面的建议6)。对于那些不熟悉(WIN)DOS世界的人:使用c:更改驱动器并在此示例中运行cd media[updatename] .exe。(Vostro 3460) - elf12
起初我以为这不会起作用,因为BIOS更新工具是为Windows设计的,但事实证明它也可以在FreeDOS中运行。太酷了! - gertvdijk
天哪...经过几天的努力尝试,终于成功了!!! - dorien
这对我来说非常顺利,成功将我的Dell D630升级到A19版本。这里没有提到的一些事情,我不得不自己摸索出来:我选择了选项0,即无内存管理器,并且在重新启动时必须插入带有.exe文件的USB键,否则它无法被识别。 - Brian
这在 Dell XPS 13 L321X 上从 A02 升级到 A08 时失败。它声称系统将因为 "胶囊更新" 而关闭,但实际上只是简单地关机而没有执行任何操作。 - Jeff Burdges
1也许我有些迟钝,但是使用SRCD 6.0.2启动时没有显示软盘映像菜单和FreeDOS选择。这个在后续版本中被移除了吗?我应该尝试FreeDOS启动软盘吗? - Joel DeWitt
第一个链接失效了。 - Bogdan Lataianu

戴尔公司有一个非常方便的工具,可以下载并应用最新的BIOS到使用Linux操作系统的电脑上。理论上来说,它应该能够在Ubuntu上运行,并且没有任何问题。
请访问他们的网页以获取更多信息,那里有详细的说明: 以下是链接页面上的说明。
sudo wget -q -O - http://linux.dell.com/repo/firmware/bootstrap.cgi | bash
sudo apt-get install firmware-addon-dell
sudo apt-get install $(bootstrap_firmware -a)
sudo update_firmware

请注意:我自己没有测试过这个方法,你可能需要先给戴尔支持发送一封电子邮件,询问他们这种方法是否已经过时或者是否存在任何问题。
注意:根据2020年的情况,这个方法已经过时了。在Ubuntu 20.04中无法使用firmware-addon-dell,并且firmware-addon-dell的github仓库(https://github.com/dell/firmware-addon-dell)最后一次提交是在2011年。

在运行sudo update_firmware时,我遇到了错误。我在我的问题中提到了这个错误。 - gunjan parashar
3这似乎不是最新的。尝试执行第一条指令时,会出现以下消息:固件存储库已过时且未维护。请改用OMSA存储库获取官方更新。当我检查脚本时,该消息出现在第一行执行后,接着是exit 1。话不多说... - Bobble
经过查看OMSA的提供,我发现目前没有Ubuntu的支持,并且对其他发行版的支持也不可靠。我已经尝试了所有公开的方法来解决这个问题,除了重新安装Windows系统,但由于我没有安装光盘(我还清空了安装分区...),所以无法这样做。 - Bobble

最近的戴尔BIOS中有一个内置的升级模块。
  1. 从戴尔网站下载适当的.EXE升级程序。
  2. 将此文件写入USB驱动器。
  3. 插入该USB驱动器并重新启动。 (注意:如果您的计算机以UEFI模式启动,您可以将.EXE放在/boot/efi分区中:它应该会被自动找到)
  4. 当戴尔标志出现时,按F12键进入一次性启动菜单
  5. 在此菜单中,选择Bios Flash Update。如果没有出现此项,则说明您的BIOS没有内置的升级模块。
  6. 在升级模块中,找到USB磁盘上的.EXE升级程序。
  7. 启动升级过程。

我的7个步骤,让我快乐起来,而不使用任何外部驱动器。
最近,我在Linux Mint 17 KDE(即Ubuntu 14.04 LTS Trusty Tahr)下,通过命令行界面将我的Dell Latitude E6500的BIOS从版本A27升级到了A29,并且以下是对我非常有效的操作:
  1. 下载所需的DELL软件 sudo apt-get install firmware-addon-dell smbios-utils wine
  2. 检查您的BIOS版本:sudo dmidecode -s bios-version 我的输出:A27

  3. DELL支持页面下载适用于您特定设备的BiosUpdateFile.exe(在我的情况下为E6500A29.exe)

  4. 切换到包含E6500A29.exe的目录,并使用以下命令从中提取*.hdr文件:wine E6500A29.exe -writehdrfile

  5. 更新BIOS:sudo dellBiosUpdate -u -f E6500A29.hdr

  6. 重新启动:sudo reboot now

  7. 再次检查您的BIOS版本:sudo dmidecode -s bios-version 我的输出:A29


我在一台旧的Dell D630上尝试了这个,但无法成功更新到A19。可能是硬件太老了。当BIOS更新程序运行时,所有安装的内容都显示找不到固件。 - Brian

首先,除非有特定的问题需要通过更新BIOS来解决(比如激活虚拟化技术),否则我不会更新BIOS。
如果BIOS更新出现问题,你的电脑可能会变成一块废铁。
个人而言,我使用FreeDOS,尽管还有其他选择。
我将它放在一个闪存驱动器上,使用unetbootin,并将bios_update.exe添加到闪存驱动器中。
然后,你从USB启动并从DOS命令提示符中运行bios_update.exe。
如果你能够从USB启动,你也可以刻录光盘。
Arch Wiki上有很多关于此的信息和其他选项。
请参考:https://wiki.archlinux.org/index.php/Flashing_BIOS_from_Linux

谢谢,我不会升级,因为我没有遇到这样的问题。 - gunjan parashar

在更新的机器上,我相信是从2015年开始,你只需将.exe更新程序(尽管官方描述只提到了Windows)放入/boot/efi/目录中,重新启动,按F12键并选择刷新BIOS升级。我在XPS 15 9950上尝试过这个方法,效果非常好。还可以参考戴尔BIOS更新

2015年之后,这应该是被接受的答案!我轻松地更新了我的XPS 15 9500。谢谢! - DAB

对于旧的戴尔机器

我有一台旧的戴尔台式机(Dimension E520,约2006年)运行Ubuntu。为了更新BIOS,我从戴尔下载了所需的.exe文件。然后我尝试使用以下方法运行它:

  1. 使用带有FreeDos的USB驱动器。机器无法启动到FreeDos,并显示设备未准备好的错误。

  2. SystemRescueCD - 与上述1)相同的问题。

  3. 使用Windows 7 64位安装光盘,启动到Windows命令提示符环境,但返回一个错误“图像类型不存在”。

  4. 在另一个帖子中,我发现可以使用32位Windows光盘克服3)中的错误。所以我再次尝试了32位。这次exe运行了,点击了提示等等,没有错误消息,但是BIOS没有更新。

最后,我在戴尔支持论坛上尝试了这里概述的方法

  1. 下载戴尔诊断分发包(DDDP)

  2. 运行DDDP并按照提示进行操作

  3. 导航到解压后创建的DIAGS文件夹

  4. 从DIAGS文件夹中删除除以下文件之外的所有文件:

    COMMAND.COM、DELLBIO.BIN、DELLRMK.BIN、AUTOEXEC.BAT和CONFIG.SYS

  5. 将BIOS .exe添加到DIAGS文件夹中

  6. 导航到C:\Dell\Drivers\R174621\并运行DDDP .exe。

  7. 选择创建可启动CD选项(也有安装到闪存驱动器选项,但我没有尝试过)。

  8. 将CD加载到计算机中。重新启动,按F12键,从CD启动并运行BIOS .exe。


你是怎么“运行DDDP”的?你一定是启动了Windows,或者……? - Tommy Trussell
是的,是的,是的!尝试使用Windows修复8光盘,但出现了"子系统不支持"等错误... 这个答案在第一次尝试中非常有效,并且非常快速的可启动USB也很方便。@TommyTrussell,我在另一台电脑上运行了DDDP来创建USB闪存。这个答案对于较新的机器也可能非常棒。 - crokusek

这些来自戴尔的指示对我来说非常完美,之前尝试了几次都没有成功。

http://www.dell.com/support/article/us/en/19/SLN171755/en

由以下组成:
  • USB闪存驱动器
  • FreeDOS基础ISO 1.0
  • UNetbootin
我轻松地将我的Dell Latitude E6420从BIOS版本A07更新到A08,然后再更新到A23(在一次性刷新到A23之前需要A08)。
简单而快速。

你看过DellBIOS - Ubuntu Wiki这篇文章吗?它似乎非常详尽,回答了你关于如何的问题。


2欢迎来到Ask Ubuntu!虽然这理论上可以回答问题,但最好还是在这里包含答案的关键部分,并提供链接作为参考。 - Ringtail
1其实,这是我在做这个的时候尝试的第一件事。不,至少对于我的机器来说,它不起作用,因为Dell biosdisk是基于FreeDOS的,而最近(即2010年后)的Dell BIOS升级是为Windows 7版本的DOS设计的。请参阅我在此主题中的其他评论。公平地说,你给出的链接是我获取BIOS信息的一些提示来源,所以那里的信息并非全部过时。 - Bobble