背景

背景

有没有办法直接从 Ubuntu 的 UEFI 刷新主板?我下载了一个从 HP.com 下载 exe 并运行 Wine 的自解压程序。尝试将其放入 USB 密钥时失败。这是我运行 .exe 并使用 Wine 提取后的目录结构。

sp57762/
├── BiosUpdate
│   ├── CryptRSA32.efi
│   ├── CryptRSA.efi
│   ├── HpBiosUpdate32.efi
│   ├── HpBiosUpdate32.s09
│   ├── HpBiosUpdate32.s12
│   ├── HpBiosUpdate32.sig
│   ├── HpBiosUpdate.efi
│   ├── HpBiosUpdate.s09
│   ├── HpBiosUpdate.s12
│   └── HpBiosUpdate.sig
├── FirmwareUpdate.exe
├── FreeDOS
│   ├── KERNEL.SYS
│   └── kernels.zip
├── hpqFlash.exe
├── HPUSBFW.exe
├── Installer.exe
├── KERNELS.ZIP
├── ROM.CAB
├── Rompaq
│   ├── 68AHH.BIN
│   ├── config.sys
│   ├── EROMPAQ.EXE
│   ├── EROMPAQ.zip
│   ├── gpl2.txt
│   └── KERNEL.SYS
└── WSSP57762.rtf

我只是想知道是否可以将 68AHH.BIN 或 .efi 有意义地扔到底层硬件上并获得更有用的东西。

背景

我有一台 HP 笔记本电脑,闪光说明BIOS 不适用。我的 BIOS 根本就缺少文件 > 闪存系统 ROM就像这个家伙一样我可以从 EFI 启动HpBiosUpdate.efi,但这也不起作用,并且它给出了一个错误,尽管与他得到的错误不同:

系统 BIOS 更新失败

我尝试了多种不同的方法,包括这个

答案1

有一些相对较新的工具和协议旨在解决此问题,但它们需要计算机固件的支持,而这种支持仍然相当少见。您可以通过输入以下内容来查看您的计算机是否支持此功能:

fwupdate -s

不幸的是,该功能的文档记录相当少,所以即使你的电脑支持它,我也不确定它是如何工作的。根据稀少的文档,我思考传递fwupdate固件文件的名称(例如firmware.cap):

sudo fwupdate firmware.cap

思考该工具依赖于匹配的 EFI 程序,fwupx64.efi它会在您重新启动时执行实际的固件更新。

如果您的系统不支持此机制,那么您可能只需要遵循制造商提供的任何说明。我有一台旧的 HP ProBook 6470b,更新起来特别麻烦:我必须在备用硬盘上以 BIOS/CSM/旧模式安装 Windows,然后从那里运行固件更新工具。根据您链接的页面,您的 HP 可能来自类似的时代,可能需要类似的方法——或者一些我从未发现的晦涩难懂的程序。

我见过一些系统在其设置实用程序中提供未记录但显而易见的固件更新选项,这些选项在输入.exe制造商提供的从 DOS 或 Windows 文件中提取的正确文件后即可运行。但我从未在我的 HP 6470b 上发现过这样的选项。

答案2

我不知道直接从 Linux 刷新 HP 消费机器固件的通用方法,但作为次优选择,至少可以在我需要更新的机器(HP Envy 700-060ea)上不使用 Windows(例如,机器上仅安装 Linux)进行更新。

首先我提取了 HP softpaq:

wine Downloads/sp72302.exe /e /f z:hpbios

...然后从自解压 zip exe 中提取文件:

cd hpbios && unzip Kai_8024.exe

我检查了hpbios/Flash.bat提取的文件之一......

批处理文件包含一个命令行,可使用文件更新 Intel ME 固件ME9_1482.BIN。HP 工具包含 Windows ME 刷新工具“FWUpdLcl.exe”,但应该可以使用 Intel 的 EFI 刷新工具 ( FWUpdLcl.efi) 从 UEFI shell 刷新同一个文件。

还可以使用“英特尔 CSME 系统工具”中的 Linux 刷新工具直接从 Linux 更新较新的 ME 版本FWUpdate/LINUX64/FWUpdLcl,但我无法找到 ME 9.x 系统的等效工具。

在这种情况下,主 BIOS 文件被称为KAI_8024.bin- 我将其复制到 efi 启动分区的EFI/HP/BIOS/New/文件夹中,然后我重新启动机器(进入 EFI shell)并EFI/HP/BiosUpdate/HpBiosUpdate.efi从 shell 命令行运行 EFI 二进制文件:。

nb 除了使用 EFI shell,您还可以直接从 grub 运行它,使用chainloader带有 HpBiosUpdate.efi 适当路径的命令,然后执行该boot命令。

要获取 EFI shell(TianoCore 项目中包含的开源以及各种分支),您可以使用众多在线教程之一从 grub 安装 EFI shell 启动项,或者创建可启动的 USB 驱动器等。我使用了:https://github.com/tianocore/edk/blob/master/Other/Maintained/Application/UefiShell/bin/x64/Shell_Fu​​ll.efi)。

nb 该EFI/HP/BiosUpdate/目录是工厂安装的,但您可能可以在 HP 支持文件下载中找到合适的副本(例如,请参阅原始问题以获取可能的来源 - 尽管我不知道HpBiosUpdate.efi不同机器类型是否有不同的版本)。

HpBiosUpdate.efi在中查找固件更新文件EFI/HP/BIOS/New/,并在中写出EFI/HP/BiosUpdate/HpBiosUpdate.log包含调试消息的日志文件,并显示一个简单的鼠标驱动的 GUI。刷新完成后,机器电源循环几次,然后在启动 Linux 后,在Linux 下80.24的输出中显示预期的新 BIOS 版本dmidecode(之前80.13已安装)。

该日志文件相当清晰且有用,因此我建议从 Linux 查看该文件,以检查内容是否合理。

答案3

如前所述,Ubuntu 支持多台机器的固件更新。就我而言,我的 Dell XPS 9560 自今年年初以来至少收到过一次 BIOS 固件更新(我运行的是 Gnome Ubuntu 17.04)。

有趣的是,这些更新不是通过正常软件更新流程获取(例如apt-get updateapt-get upgrade)。

相反,我只看到通过详细信息 GUI(应用程序的一部分gnome-control-center)进行的固件更新检查。通过单击“检查更新”按钮,我将看到相关的固件更新。

到目前为止,固件更新一切顺利。

相关内容