如何在只有Ubuntu的情况下进行HP BIOS升级?

我有一台HP Spectre XT笔记本电脑。安装的BIOS版本是F14,他们网站上最新的版本是F26。我想升级,但他们只提供了一个Windows可执行文件。我尝试使用FreeDOS(使用Ultimate Boot CD引导),但该可执行文件无法在DOS中运行,只能在Windows中运行。我不想在任何地方安装Windows(我没有它,我用Ubuntu替换了系统磁盘上的Windows)。那么,在只安装了Ubuntu的系统上如何进行升级呢?我还没有尝试过Wine,它对这个目的有效吗?

1我不会使用Wine升级BIOS,但可能是可行的。但是,如果出了任何问题,你可能会丢掉一台电脑。 - Daniel
1通常情况下这是行不通的,因为Wine无法提供BIOS更新所需的直接硬件访问。即使可以,我认为这很危险,因为许多事情在Wine和Windows上的运行方式不同,而更新程序是针对Windows进行测试的。 - David Foerster
抱歉,我想这样。 - Daniel
1那个Windows可执行文件是一个自解压存档,你不需要Windows来运行它;FreeDOS就足够了。它只包含一个.BIN文件。所以操作步骤是:下载文件,解压缩,将.BIN文件放在FAT32分区上。使用它来进行更新。 - Rinzwind
1这取决于BIOS,一些“现代化”的BIOS可能无法在Windows之外进行升级。在这种情况下,您可能需要自己编写BIOS - 请参阅https://www.bios-mods.com/。 - Panther
@Panther 我曾为ARM嵌入式系统编写过(非常简单的)BIOS,但是我绝对不会碰x86的那种。 - dargaud
6个回答

这种方法在我测试的HP EliteDesk 800 G2 TWR上运行良好。 我猜想这种方法可能不受HP支持,所以我要加上这个警告:如果BIOS升级失败,可能会损坏您的计算机!

要求

  • 操作系统:Ubuntu(以UEFI模式安装)
  • 硬件:HP EliteDesk 800 G2 TWR(L1G77AV)

也许这种方法对其他HP电脑型号也适用?

注意:不需要USB驱动器。

方法

检测计算机信息

这是在Ubuntu 18.10计算机上完成的。

linux@desktop:~$ lsb_release -d
Description:    Ubuntu 18.10
linux@desktop:~$ 

现在大多数计算机都使用UEFI。
linux@desktop:~$ if [ -d /sys/firmware/efi ]; then echo UEFI is active; fi
UEFI is active
linux@desktop:~$ 

检查一下/boot/efi下是否有足够的磁盘空间来存储BIOS二进制文件。
linux@desktop:~$ df -h /boot/efi/
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       1,9G   23M  1,9G   2% /boot/efi
linux@desktop:~$ 

检测HP序列号
linux@desktop:~$ sudo cat /sys/class/dmi/id/product_serial
XXXXXXXXXX
linux@desktop:~$ 

(在此示例中,HP序列号已被替换为XXXXXXXXXX)
检测当前的BIOS版本和日期。
linux@desktop:~$ sudo cat /sys/class/dmi/id/bios_version
N01 Ver. 02.36
linux@desktop:~$ sudo cat /sys/class/dmi/id/bios_date
07/18/2018
linux@desktop:~$ 

下载最新的BIOS

hp.com下载最新的BIOS:

  1. 点击支持
  2. 点击支持与故障排除
  3. 在网页表单中复制并粘贴之前检测到的HP序列号(XXXXXXXXXX)并搜索。
  4. 点击软件和驱动程序
  5. 选择操作系统为Windows
  6. 选择操作系统版本为Windows 10 (64-bit)
  7. 检查最新可用的BIOS版本是否比计算机上已安装的版本更新。
  8. 下载最新的BIOS。(对我来说,BIOS文件名为sp90164.exe

提取BIOS二进制文件

linux@desktop:~$ which 7z
linux@desktop:~$ sudo apt-get install -y p7zip-full
linux@desktop:~$ which 7z
/usr/bin/7z
linux@desktop:~$ mkdir /tmp/test
linux@desktop:~$ cd /tmp/test
linux@desktop:/tmp/test$ 7z e ~/Downloads/sp90164.exe
linux@desktop:/tmp/test$ sudo mkdir -p /boot/efi/EFI/HP/BIOS/New
linux@desktop:/tmp/test$ ls /boot/efi/EFI/HP/BIOS/New | wc -l
0
linux@desktop:/tmp/test$ sudo cp *.bin /boot/efi/EFI/HP/BIOS/New
linux@desktop:/tmp/test$ ls /boot/efi/EFI/HP/BIOS/New | wc -l
1
linux@desktop:/tmp/test$ 

更新BIOS

  1. 重新启动计算机并进入BIOS(通常在计算机启动后不久按下Esc键)。
  2. 选择BIOS设置
  3. 选择更新系统BIOS
  4. 选择使用本地媒体更新BIOS

你还需要按照这个解决方案中所述,复制BIOSUpdate文件夹。感谢Arch Wiki(顺便说一下,我不使用Arch)。 - Sufian
1可以的,除了……如果系统不是使用UEFI引导怎么办?如果系统处于传统模式,还可以在UEFI模式下更新BIOS吗? - dargaud
1在BIOS设置中,没有“更新系统BIOS”的选项。 - dargaud
+1 给 @dargaud,这个选项并不适用于所有惠普笔记本电脑,看起来我们需要为每个型号提供专门的教程... - gordon_freeman
如果我们在BIOS/New目录中已经有了BIOS二进制文件(因为我们之前按照您的步骤操作过),那么我们应该创建一个New2目录还是只需将文件复制到同一目录下或者其他方式呢? - Geronimo
请注意,尽管是最新下载的文件,但文件名仍然相同。 - Geronimo

你可以使用file-roller(在Nautilus中:右键单击>打开方式…>存档管理器)或cabextract来解压HP的BIOS更新包。我刚刚尝试的那个包含两个相同的MS-DOS可执行文件,它们又是自解压存档。它们包含一个.bin文件,这就是你要找的BIOS更新文件。将其放在USB驱动器上,然后你应该能够指示EFI BIOS从该驱动器更新自身。

3我使用 cabextract 提取了 1888F26.exe,但是当我尝试在 FreeDOS 中运行它时,它只显示“Test。”。再次尝试使用 cabextract 提取它不起作用,但是 7z 提取出了一堆文件:01888.bin FlsHook.exe FlsHookDll.dll FWUpdLcl.exe InsydeFlash.exe iscflash.dll iscflash.sys iscflashx64.sys platform.ini xerces-c_2_7.dll,现在我不确定该怎么处理这些文件。目前的 BIOS 没有直接加载 bin 文件的方法。 - dargaud
1请注意,Hewlett-Packward/BIOS/New/文件可能需要重命名才能进行更新:https://h30434.www3.hp.com/t5/Notebook-Hardware-and-Upgrade-Questions/Probook-6560b-BIOS-issue-with-update-from-FLASH-drive/m-p/6329302/highlight/true#M417686 - Ivan Kozik

在我的情况下,对于一台安装有Ubuntu 20.04的HP ProDesk 400 G4 Desktop Mini PC,我需要解压缩.exe文件(7z x spxxx.exe)并将*.bin文件移动到:/boot/efi/EFI/HP/DEVFW/firmware.bin。我还需要将*.bin文件重命名为firmware.bin。重启后,BIOS更新就可以正常工作了。我应该提到,将*.bin文件移动到/boot/efi/EFI/HP/BIOS/New对我来说没有起作用。希望这对某人有所帮助。

是的,我尝试过那种方法,但它不适用于我的型号。没有自动更新BIOS的方式通过提供特定位置的文件来完成。使用完整的HP Bios配置实用程序启动也会失败(错误,不支持该型号)。唯一的方法是重新安装Windows。对于HP来说这真是可惜。我已经放弃了,这应该是我的解答标记。 - dargaud
1这种方法也适用于其他操作系统,如22.04或Debian。惠普必须在BIOS安装程序中写明这一点...非常感谢您的发现。 - Sadaharu Wakisaka

以下是我在运行Ubuntu 20.04 LTS的HP x2 210 G2上更新BIOS所做的步骤。
请注意,这确实需要另一台Windows电脑来打开BIOS升级可执行文件,但无需在目标电脑上安装Windows,也不需要Windows恢复盘或Windows-PE等任何东西。
这个解决方案基于 HP支持答案,以及创建BIOS恢复驱动器的 HP文档,再加上一点试错和祈祷。
  1. 使用一个独立的Windows系统从HP支持网站下载适用于您系统的正确的BIOS更新可执行文件。在我的情况下,该文件名为sp95703.exe(HP Notebook System BIOS Update, version F.35 Rev.A)。

  2. 在Windows系统上运行该可执行文件。不用担心,它不会尝试安装更新,但它会打开一个实用程序,根据HP网站上的说明创建一个BIOS恢复驱动器。按照步骤创建USB恢复驱动器。

  3. 关闭目标系统,在我的情况下是HP X2 210 G2,插入恢复USB驱动器,然后重新启动。

  4. 在我的情况下,设备没有自动从USB启动,所以我在开机后立即按下esc键进入"启动菜单"。在这里选择F9 "Boot Device Options",然后选择"Boot from EFI file"。选择名为HP_TOOLS的文件系统,导航到Hewlett-PackardBIOSUpdate,最后选择HpBiosMgmt.efi

这开始了更新过程。

当我尝试这种方法时,确实会收到一条消息询问我是否要将所有更改应用到此设备。尽管如此,我还是继续进行了,但是失败了。 - undefined

使用USB-C转以太网适配器,并从BIOS菜单中使用内置的网络方法。按F10进入BIOS,然后选择“检查HP.com以获取BIOS更新”。
我在升级BIOS时遇到了很大的困难。我无法让这里的其他答案起作用-许多答案似乎已过时,并且参考了旧版本的BIOS更新软件。网络升级的棘手之处在于我的电脑足够新,只有USB-C而没有以太网接口。我与HP支持部门的多位工作人员交谈时,他们都说由于我的电脑只能直接通过以太网进行网络升级,所以我无法进行网络升级,但他们给出的信息是错误的。使用雷电接口坞站并没有起作用,但我购买了一个USB-C转以太网适配器来尝试BIOS升级,最终取得了成功!

你能在回答中加上你购买USB C转以太网适配器后实际做了什么吗?连接笔记本电脑到家庭网络后,你只是等待吗? - user68186

你需要HP PC诊断工具。链接在哪里?
- 确保电脑插上电源! - 将其安装到USB闪存驱动器上,怎么做? - 开机 - 使用F2或F10进入BIOS - 进入启动选项,将usb key / usb cd boot移至顶部。 - 获取所有系统信息(特定型号的hp支持页面上有所有所需细节) - 插入HP诊断工具USB - 启动 - 进入BIOS - 选择F2(系统诊断),这将运行hp工具。 - 输入两个代码(可以在网上找到),在哪里? - 选择固件管理 → BIOS → 更新 - 选择包含更新.bin文件的驱动器 - 输入系统主板编号, - 其余步骤都是自动进行的,会重新启动您的计算机,并升级BIOS。
第1部分的3合1工具 以下是使用链接的方法 请前往此处检查是否有适用于您的确切型号的更新(必须确切匹配,否则可能会损坏/砖化计算机)
下载最新的BIOS更新,请点击http://support.hp.com/us-en/drivers 这里有三种选择的工具,但我选择了第三种。

http://www8.hp.com/us/en/campaigns/hpsupportassistant/pc-diags.html?jumpid=va_r602_us/en/any/pps/pl_ot_ob_ds_pd/HP_PC_Hardware_Diagnostics_cc/dt

请看下一个回答,因为我每个回答只能有2个链接。
第2部分的3合1工具
以下是如何在Windows之外(或在无法启动的计算机上)使用USB和工具的方法,您需要一台第二台电脑和一个至少4GB的空白USB驱动器。

http://support.hp.com/gb-en/document/c00042629

请查看下一个答案以获取下面的两个链接。 许多关于此主题的讨论在惠普网站的论坛中,但 3 合 1 工具是新的 2015 年推出的。
使用 3 合 1 工具所需的两个数字都在这里供所有人查看。 http://www.tenforums.com/attachments/general-discussion/7223d1413825867-bootup-takes-two-tries-hp-pc-diagnostics-usb-key-user-guide-rev-4-oct-2014-release-english.docx(Office 文档,我用 Wordpad 打开得很好)。
借助谷歌和咖啡,我找到了答案。我不介意添加链接,但希望通过提供工具的名称来引导您在谷歌上找到所需的信息,进而确保您阅读和掌握了惠普撰写的重要信息和警告。
祝您愉快 敬上,Matt :)

1你能提供一个“hp PC诊断工具”的链接吗?还有如何将其安装到USB上? - Pilot6
请更新... - Fabby
抱歉回复晚了,但我必须使用自己的电脑才能回复。 - MATT W
已发布所有所需链接,欢迎您提供反馈,告诉我们进展如何 :) - MATT W
21/ 别喊! 2/ 不要发链接!看看我编辑过的你的回答,然后把它放进去...编辑,不要添加...这个回答还是很糟糕。请查看网站并仔细看看如何撰写回答。 - Fabby
我整个下午都花在这上面了。你的答案让我接近成功,但还差一点。我创建了USB键,当我用它启动时,屏幕上显示按ESC+F2,但是当我按下这个组合键时,我只能看到内存测试、硬盘检查、语言和退出这几个选项。就这些。 - dargaud