如何仅使用 Ubuntu 执行 HP BIOS 升级?

dar*_*aud 16 bios hp

我有一台 HP Spectre XT 上网本。安装的 BIOS 是 F14,他们网站上的最新版本是 F26。我想做升级,但他们只提供 Windows 可执行文件。我尝试使用 FreeDOS 启动(使用 Ultimate Boot CD),但该可执行文件不能在 DOS 中运行,只能在 Windows 中运行。我不想在任何地方安装 Windows(我没有它,我用 Ubuntu 从系统盘上替换了它)。那么如何仅在系统上安装 Ubuntu 的情况下进行升级?我还没有尝试过 Wine,它可以用于这个目的吗?

Eri*_*und 10

当我测试时,这种方法在HP EliteDesk 800 G2 TWR上运行良好。我猜HP不支持这种方法,所以我添加了这个警告:BIOS升级,如果失败,可能会损坏你的电脑!

要求

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

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

注意:不需要 U 盘。

方法

检测有关您计算机的信息

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

linux@desktop:~$ lsb_release -d
Description:    Ubuntu 18.10
linux@desktop:~$ 
Run Code Online (Sandbox Code Playgroud)

现在大多数计算机都使用 UEFI

linux@desktop:~$ if [ -d /sys/firmware/efi ]; then echo UEFI is active; fi
UEFI is active
linux@desktop:~$ 
Run Code Online (Sandbox Code Playgroud)

检查/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:~$ 
Run Code Online (Sandbox Code Playgroud)

检测惠普序列号

linux@desktop:~$ sudo cat /sys/class/dmi/id/product_serial
XXXXXXXXXX
linux@desktop:~$ 
Run Code Online (Sandbox Code Playgroud)

(在本例中,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:~$ 
Run Code Online (Sandbox Code Playgroud)

下载最新的 BIOS

要从hp.com下载最新的 BIOS :

  1. 点击支持
  2. 单击支持和故障排除
  3. 在 Web 表单中复制并粘贴之前检测到的 HP 序列号 (XXXXXXXXXX) 并进行搜索。
  4. 单击软件和驱动程序
  5. 作为操作系统选择Windows
  6. 操作系统版本选择Window 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$ 
Run Code Online (Sandbox Code Playgroud)

更新 BIOS

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

  • 好的,很好,但是...如果系统不是 UEFI 怎么办?如果系统处于传统模式,您还可以在 UEFI 模式下更新 BIOS 吗? (2认同)

Dav*_*ter 8

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

  • 我用cabextract得到了1888F26.exe,但是当我尝试在FreeDOS中运行它时,它只说“测试”。再次尝试 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 文件 (3认同)

emv*_*idi 5

就我而言,对于HP ProDesk 400 G4 Desktop Mini PCUbuntu 20.04,我必须解压缩 .exe (7z x spxxx.exe) 文件并将 *.bin 移动到: /boot/efi/EFI/HP/DEVFW/firmware.bin。我必须将 *.bin 文件重命名为firmware.bin。重启后BIOS更新生效。我应该提到,将 *.bin 移动到/boot/efi/EFI/HP/BIOS/New对我来说不起作用。希望这对某人有帮助。