从 Linux 刷新 BIOS

来自 ArchWiki

本文提供了关于使用 Linux 更新系统 BIOS 的信息。通常,制造商提供的更新程序必须在 Windows 下执行。然而,已经发布了各种实用程序和方法,用于在 Linux 下升级系统 BIOS。

警告: 刷新 BIOS 是一项危险的活动,可能会导致您的主板无法操作!
注意
  • HP 用户可以从 HP 网站下载 Windows BIOS 更新程序,解压 *.exe 文件并找到 ISO 镜像以刻录到 CD。使用 CD,可以在 BIOS 菜单中使用“固件升级”进行升级,而无需使用以下工具。有关详细信息,请参阅线程。此外,如果您的当前 HP BIOS 允许,请参阅下面的 #HP 部分,以使用 USB 升级。
  • 对于使用戴尔计算机的用户,戴尔建议 Linux 用户按照此处的信息刷新其 BIOS(简而言之,将 .EXE 放在 USB 驱动器上,并使用 F12 启动菜单访问固件的刷新实用程序)。

除了下面描述的工具外,许多笔记本电脑页面还包括特定型号的个性化说明。这些说明有时涉及定制的实用程序,这些实用程序甚至可能特定于单个型号的升级过程。如果没有特定型号的页面,则查看类似型号的页面可能会很有用,因为有可能为目标型号调整流程。HP ENVY m4-1015dx 页面例如,包括可能适用于各种 HP 型号的说明。

fwupd

fwupd 是一个简单的守护进程,允许会话软件更新本地计算机上的设备固件。

包括戴尔和罗技在内的大型供应商使用这种方式向 Linux 分发固件更新。

fwupd 仅支持在 UEFI 模式下刷新 BIOS 更新。

有关安装和用法的更多信息,请参阅 fwupd

BiosDisk

BiosDisk 简化了在 Linux 下刷新系统 BIOS 的过程。

注意: 这仅在以“传统模式”启动的系统上受支持。在 UEFI 模式下,您将需要使用不同的方法。

安装

安装 biosdisk-gitAUR 软件包。

用法

要使用 biosdisk 实用程序创建 BIOS 刷新镜像,请首先从制造商的网站下载系统的最新原始 BIOS 镜像。但是,请确保始终获取 BIOS 可执行文件,而不是 Windows 可执行文件。然后,您有两种选择之一:创建 ISO 或为您的引导加载程序安装镜像。

  • mkimage 操作将在用户的硬盘驱动器上创建一个 ISO 镜像。用法如下
# biosdisk mkimage [-o option] [-i destination] /path/to/.exe 
  • install 操作将创建 biosdisk 镜像,将镜像文件复制到 /boot,然后使用镜像的条目更新引导加载程序。然后,用户要做的就是启动系统并选择镜像以刷新 BIOS;这将直接从硬盘驱动器加载 biosdisk 镜像并刷新 BIOS。
# biosdisk install [-o option] [--name=] /path/to/.exe

Flashrom

Flashrom[死链接 2025-01-19 ⓘ] 是一个用于识别、读取、写入、验证和擦除闪存芯片的实用程序。它旨在刷新主板、网络/图形/存储控制器卡和各种编程器设备上的 BIOS/EFI/coreboot/固件/optionROM 镜像。

警告: 如果您有笔记本电脑/笔记本/上网本,请不要尝试 flashrom,因为在刷新期间与这些机器上的 EC 的交互可能会使您的机器崩溃。 flashrom 尝试检测机器是否是笔记本电脑,但并非所有笔记本电脑都遵循标准,因此这并非 100% 可靠。[1][死链接 2025-01-19 ⓘ]

安装

安装 flashromflashrom-gitAUR 软件包。

用法

在此网站上查找您的主板和芯片组(内部)是否受 flashrom 支持。支持的硬件[死链接 2025-01-19 ⓘ] 您还可以通过发出以下命令来查找您的硬件是否受支持

# flashrom --programmer internal

上面的命令将告诉您您的主板和芯片组。然后,您可以发出此命令来查找您的主板和芯片组是否受支持

# flashrom --programmer internal -L | grep CHIPNAMEfrompreviouscommand

在现代主板上,您可能会获得多个 rom 芯片列表。您必须选择从上面的命令中获得的芯片名称。然后,您使用 -c 选项来选择哪个 rom 受该命令影响

# flashrom --programmer internal -c "CHIPNAME" -r backup_CHIPNAME.bin

在 ROM 芯片上写入并验证新的 BIOS 镜像(专有或 Coreboot)

# flashrom --programmer internal -c "CHIPNAME" -w newbios.bin

如果您想刷新主板上的其他闪存芯片,您将找到所有选项,命令如下

# flashrom
注意: 对于 Linux 内核版本高于 4.4 的情况,新的内核安全措施 CONFIG_IO_STRICT_DEVMEM 可能会导致 flashrom 停止工作;在这种情况下,您可以尝试将 iomem=relaxed 添加到您的内核参数。FAQ[死链接 2025-01-19 ⓘ]

FreeDOS

一些笔记本电脑制造商提供 DOS 兼容的可执行文件来刷新系统固件。FreeDOS,一个免费的 DOS 兼容操作系统,可以胜任这项挑战,无需专有的 DOS 版本。因此,您只需要一个带有 FreeDOS 内核的可引导软盘镜像。

Unetbootin

到目前为止,制作可引导 FreeDOS USB 驱动器的最简单方法是使用 unetbootinAUR

您应该使用 FAT16 格式化 U 盘并将其标记为“boot”(您可以使用带有 gpartedpartitionmanager 的 GUI 来完成此操作)。然后,在挂载闪存驱动器后,在发行版下选择 FreeDOS 和您挂载的驱动器。该应用程序将自动为您下载镜像并将其复制到驱动器。最后,您可以复制您想要刷新的所有内容(BIOS、固件等)。

警告: Unetbootin 在某些联想系统上可能无法正常工作。可能需要在不同的设备上创建可引导驱动器。请参阅此处

dosemu

官方 FreeDOS 镜像的问题是缺少用于保存固件和 BIOS 更新文件和程序的额外空间。在 Linux 下创建任意大小的 DOS 可引导 FAT 驱动器的最简单方法是在 dosemu 下挂载 FAT 驱动器,然后使用 FreeDOS sys 命令使其可引导

对于替代方法,请参阅 Gentoo:BIOS Update#FreeDOS 环境

预构建镜像

另一种简单的解决方案:Christian Taube 提供的 FreeDOS 预构建可引导 USB 闪存驱动器镜像。说明可以在 此处 找到。

在 Linux 上使用 FreeDOS 提供的磁盘镜像 + USB 驱动器

在编写本文时 (2017-07-11),unetbootinAUR 不支持 1.0 之后版本的 FreeDOS(当前版本为 1.2)。以下过程适用于将 Inspiron 17-3737 升级到 A09 BIOS。(戴尔在其网站上提供了这种可能性 在其网站上

开始之前的一些注意事项

  • 您可以使用 dmidecode 检查您当前的 BIOS 版本。您可能已经是最新的版本。
  • 确保您的硬件供应商已验证此方法有效(使用 FreeDOS 运行 BIOS 更新 .exe
  • 笔记本电脑用户在没有交流电源的情况下不应尝试此操作
  • 这很危险,您需要承担遵循此过程的所有风险。

步骤

  1. FreeDOS 下载页面 获取最新的 USB 安装程序
    • 作者注:使用“完整”版本是怀疑它可能包含更多驱动程序等(纯粹是猜测)
  2. 解压存档,您将获得一个 .img 文件
  3. 确定哪个 /dev/sdX 是您的 USB 驱动器(使用 fdisk -l
  4. 将镜像直接写入块设备
    • dd if=FD12FULL.img of=/dev/sdX status=progress(其中 X 是代表您的 USB 驱动器作为块设备的字母,不要将镜像写入分区)
  5. 仔细检查镜像复制是否成功
    • fdisk -l(您应该在 DOS 磁盘上看到一个带有可引导(“boot”)标志设置的分区)
  6. 挂载分区,并将用于更新固件的 .exe 文件复制到该分区
    • 为了安全起见,将文件名限制为 8 个字符(不带扩展名),大写
    • 确保您已验证硬件供应商提供的任何校验和
  7. 卸载并重启。执行任何从 USB 驱动器启动所需的操作

现在您将进入 FreeDOS 实时安装环境。

  1. 选择您的语言
  2. 系统将提示您安装 FreeDOS
    • 选择“否 - 返回 DOS”
  3. 您应该看到一个提示符 (C:\>)
  4. 运行 dir /w 并验证您的固件升级工具是否存在
  5. 运行可执行文件
    • 作者注:在戴尔工具的情况下,机器显示了一个启动画面,然后重新启动。重新启动后,它自动启动了固件升级,并在风扇全速运转的情况下运行了大约 2 分钟)
  6. 一旦特定于您供应商的过程完成,可以选择通过 BIOS 设置屏幕以及在您返回 Linux 后运行 dmidecode 来验证

在 Windows 上使用 FreeDOS 提供的磁盘镜像 + USB 驱动器

此过程的作者在使用 dd 在 Linux 上使用先前方法挂载 USB 的 FAT 分区类型时遇到了几个问题。此过程旨在概述一种使用 FreeDOS、USB 驱动器和 Windows 上的 Rufus 刷新 BIOS 的方法。

先决条件

  • 下载并安装 Windows 版 Rufus。可以是完整安装版,也可以是便携版。
  • 下载最新的 FreeDOS 完整 USB 安装程序(截至撰写本文时为 v1.2)。
  • 从供应商的网站下载最新的 BIOS 更新
  • 假定系统上已安装 dmidecode

步骤

  1. 解压 FD12FULL.zip 存档的内容,记下 .img 文件
  2. 插入闪存驱动器并使用 Rufus 刷新 FD12FULL.img 文件,保留所有默认选项
    • 本指南未涵盖 Rufus 的详细使用。有关详细用法,请参阅 Rufus 的手册或文档
  3. 使用 Rufus 刷新后,将 BIOS 文件重命名为 8 个大写字符(不包括扩展名),并将其复制到闪存驱动器
  4. 弹出闪存驱动器并将其插入笔记本电脑。
  5. 执行任何必要的步骤以使用 LEGACY BOOT 从 USB 启动
    • 作者注:对于我的戴尔笔记本电脑,我按 F12 键显示启动选项,然后在“传统选项”下选择“USB 存储设备”。我已在 BIOS 中显式启用了传统启动,但如果系统仅配置为使用 UEFI 启动,则此选项可能不存在
  6. 您将看到 FreeDOS 安装环境
    • 选择首选语言
    • 在下一个屏幕上选择“否 - 返回 DOS”
    • 键入 dir 以查看 USB 闪存驱动器的内容
    • 要执行 BIOS 升级文件,只需键入文件名并按 Enter 键
    • 注意:我的升级耗时 <2 分钟,风扇全速运转。系统总共重启 3 次。
  7. 升级完成后,系统重新启动回操作系统,以 root 身份执行 dmidecode | grep -E 'BIOS|Version' 并验证 BIOS 版本是否已升级

对于过大的软盘镜像

如果您的闪存镜像对于软盘来说太大,请转到 FreeDos 启动盘网站,并下载 10Mb 硬盘镜像。此镜像是一个完整的磁盘镜像,包括分区,因此添加您的闪存实用程序会有点棘手

首先找到第一个分区(在撰写本文时,第一个分区从块 63 开始;这意味着分区从偏移量 512 * 63 = 32256 开始)。您可以使用

# file -sk <image-file> | sed -r 's/.*startsector ([0-9]+).*/\1/'
63

# fdisk -l <image-file>
…
Units = sectors of 1 * 512 = 512 bytes
…
      Device  Boot  Start    End  Blocks  Id  System
              *        63  19151   9544+   1  FAT12

现在您可以挂载镜像

# mount -oloop,offset=$((63 * 512)) <image-file> /mnt

然后您可以像往常一样将闪存实用程序复制到文件系统。完成后

# umount /mnt

现在可以将镜像复制到 USB 驱动器以进行启动,或者按照正常说明将其作为 memdisk 启动。

用法

建议使用 OEM 启动盘版本,因为它仅包含 kernelcommand.com,从而为闪存实用程序和新的 BIOS 镜像留下更多空间。下载 FreeDOS 镜像解压缩 它。

将您的 BIOS 刷新实用程序和新的 BIOS 镜像复制到挂载的软盘镜像。加载必要的模块

# modprobe -a vfat loop

/proc/fileystems 显示是否支持所需的文件系统。将软盘镜像“loop mount”到临时路径

$ mount --mkdir -t vfat -o loop FDOEM.144 /tmp/floppy

如果挂载没有错误,请将 BIOS 刷新实用程序和新的 BIOS 镜像复制到挂载的软盘镜像。您可能需要解压缩从主板供应商站点下载的存档,以获取这两个文件。例如

# unzip 775Dual-VSTA\(2.60\).zip
Archive: 775Dual-VSTA(2.60).zip
 inflating: 75DVSTA2.60
 inflating: ASRflash.exe
# cp 75DVSTA2.60 ASRflash.exe /tmp/floppy

检查这两个文件是否对于软盘来说太大

$ df /tmp/floppy
Filesystem           1K-blocks      Used Available Use% Mounted on
/tmp/FDOEM.144            1424       990       434  70% /tmp/floppy

卸载软盘镜像

# umount /tmp/floppy

下一步是将软盘镜像刻录到 CD/DVD-RW 介质中,但要以可以随后启动的方式进行。首先创建一个可引导的 CD 镜像,然后刻录它。

# genisoimage -o bootcd.iso -b FDOEM.144 FDOEM.144
# wodim -v bootcd.iso

或者,您可以将镜像添加到 GRUB 菜单。安装 syslinux 并将 memdisk 和您的镜像复制到 /boot

# cp /usr/lib/syslinux/memdisk /boot
# cp FDOEM.144 /boot/flashbios.img

现在将条目添加到 /boot/grub/menu.lst

/boot/grub/menu.lst
title Flash BIOS
kernel /memdisk
initrd /flashbios.img

或者对于 GRUB2,添加到 /boot/grub/grub.cfg

/boot/grub/grub.cfg
menuentry "Flash BIOS" {
 linux16 /boot/memdisk
 initrd16 /boot/flashbios.img
}

或者对于 syslinux,添加到 /boot/syslinux/syslinux.cfg

/boot/syslinux/syslinux.cfg
LABEL flashbios
	MENU LABEL Flash BIOS
	LINUX ../memdisk
	INITRD ../fdboot.img

最后,重新启动您的计算机,确保 CD 驱动器在启动顺序中排在第一位,并在 CD 启动时运行 BIOS 升级过程。如果使用 GRUB 方法,请在列表中选择新条目,它应该启动进入 FreeDOS。

可引导光盘仿真

脚本 Geteltorito.pl 将提取 El Torito 启动镜像。它已在联想笔记本电脑(如 X1 Carbon、X200、X220、X230、X260、X395、W540、T450、T450s 和 P50)上工作。它也可能适用于其他供应商。

安装

安装 geteltoritoAUR 软件包。

用法

从供应商支持站点获取 bios 更新 iso。运行 geteltorito 镜像提取

$ geteltorito.pl -o <image>.img <image>.iso

将镜像复制到 usb 拇指驱动器

# dd if=<image>.img of=<destination> bs=512K

重新启动并从 USB 驱动器启动,按照供应商说明操作。

注意: 如果您收到消息“Secure Flash Authentication failed!”,则表示某些安全检查不允许进行刷新。转到 BIOS 选项页面Security > UEFI BIOS Update Option 并禁用Secure RollBack Prevention 并启用Flash BIOS Updating by End-Users 可能会有所帮助。您可以在刷新后将它们设置为您想要的任何值。

Windows PE

如果您的制造商仅提供 exe 文件,并且您在遵循之前的建议后未成功,您可以更新您的 bios,方法是创建一个 Windows PE 闪存驱动器,然后从那里像往常一样刷新 bios 更新。

用法

下载 ISO Windows PE 以创建可引导驱动器。

启动 USB 并转到您的制造商网站并下载相应的更新,然后正常执行。

注意: 此方法已在 Acer 笔记本电脑上测试过,您的结果可能会有所不同

厂商特定

HP

警告: 并非所有 HP BIOS 都是相同的。在他们的一个型号中可能有效的方法可能在另一个型号中无效。例如,以下任何一种方法都不能用于 HP T730 瘦客户端。

某些 HP BIOS,尤其是其商业系列中提供的那些 BIOS(ProDesk 600、EliteDesk 800、瘦客户端(T620、T730 等)),具有从 BIOS 内部更新 BIOS 的选项。此选项通常在“文件”菜单下可用,称为“Flash System ROM”。似乎有两种不同的目录结构可以工作。您的 BIOS 可能适用于也可能不适用于任一目录结构。

  1. 将 BIOS *.bin 文件放在 FAT32 格式化的 USB 驱动器的根目录中,没有任何其他目录。您不需要任何其他文件。
  2. 使用此处描述的目录结构

如果以上任何一种目录结构似乎都不起作用,那么如果 HP 为您的 BIOS 版本提供相关的 DOS 可执行文件,则使用 FreeDOS 方法,或者获取 Windows 机器首先创建 HP BIOS Flash Recovery USB,然后使用该 USB 使用相同的 Flash System ROM 选项刷新 BIOS。

步骤

  1. 使用您的序列号并指示 Windows 作为操作系统,从 HP 的支持网站下载 BIOS 可执行文件。
  2. exe 文件是一个存档,可以使用例如 7z 解压缩
  3. 如上所述,在 USB 中创建适当的目录结构。如果一个不起作用,请尝试另一个
  4. 卸载 USB
  5. 将其连接到需要升级 BIOS 的计算机(如果使用不同的计算机创建 USB 驱动器)
  6. 重新启动计算机并使用为您的 BIOS 分配的键(例如 F10)进入 BIOS。
  7. 进入 BIOS 后,找到并选择 Flash System ROM 选项。它可能会为您提供 3 个刷新选项
    • USB
    • 硬盘
    • 网络
  8. 选择适当的选项(在本例中为 USB),它将弹出一个文本框,其中包含您放在 USB 驱动器根目录中的 BIN 文件的文件名。
  9. 按 Enter 键,它应该指示当前 BIOS 版本和要升级到的新版本。
  10. 按照屏幕提示升级 BIOS,最后重新启动。
注意: 如果您按照此处建议将 *.BIN 文件放在文件夹下,则“Flash System ROM”选项仍然可以找到它。但是,当您继续升级 BIOS 时,它会在几分钟后失败,并指示“ROM 与系统不兼容”。如果您收到此消息,请确保 BIN 文件位于 USB 驱动器的根目录中,然后重试。

对于某些型号,尤其是在 2010-2014 年左右,解压缩可执行文件会生成一个以 .fd 结尾的文件,该文件同时包含 BIOS 文件和该文件的 RSA 签名。已经发布了关于如何从 .fd 文件中提取的说明,并且也发布了一些工具。一旦提取这些文件并将其放在 USB 驱动器上,就可以使用它们来执行更新。有时,固件更新用户界面可以导航到这些文件,但有时也可能需要将它们放在具有特定名称的特定目录中。bios 文件通常带有后缀 .bin,签名文件带有后缀 .sig.s12HP ENVY m4-1015dx 页面提供了一个此类型号的具体细节。

ASUS

现代 ASUS 主板不需要 Windows 进行固件更新。您可以使用 Ez-Flash 实用程序从 UEFI 内部进行更新。但是,他们要求您在更新 bios 之前更新 ME。问题是他们没有在存档中包含 Linux 更新工具[2]

即使您的 bios 处于最新版本,您仍然需要更新 ME。这对于避免硬件问题(例如无法从睡眠中唤醒)非常重要。

此处下载系统工具。对于此特定主板,最新版本 (v15) 不起作用(未知 PCH 平台)。正如 此处 推荐的,使用 v11 版本有效。从存档(“CSME System Tools v11 r46/FWUpdate/LINUX64/FWUpdLcl”)中提取 Linux 可执行文件,并将其放置在从 Asus 站点下载的存档(MEUpdateTool_11.8.80.3746v5_S/FW/)中包含固件的文件夹中。使“FWUpdLcl”可执行。

显示用法

$ ./FWUpdLcl
Intel (R) Firmware Update Utility Version: 11.8.92.4222
Copyright (C) 2007 - 2022, Intel Corporation.  All rights reserved.

FWUpdLcl.exe [-H|?] [-VER] [-EXP] [-VERBOSE] [-F] [-Y] [-SAVE] 
             [-FWVER] [-PARTID] [-ALLOWSV] [-FORCERESET] [-OEMID] [-PASS] 
             [-PARTVER] 

-H|?                    Displays help screen. 
-VER                    Displays version information. 
-EXP                    Displays example usage of this tool. 
-VERBOSE<file>          Display the debug information of the tool. 
-F <file>               File used for updating the FW. 
-Y                      Automatically answer Yes to prompts. 
-SAVE <file>            Save the current FW to an update image. 
-FWVER<file>            Display the FW Version of current FW or update image. 
-PARTID<Partition ID>   Provide specific Partition ID to perform partial update. 
-ALLOWSV                Allows same version firmware updates. 
-FORCERESET             Automatically Reboots system after update (if needed). 
-OEMID <UUID>           OEM ID needed to perform firmware update. 
-PASS <pass>            MeBX password. Optional with the '-f' option.  
-PARTVER <Partition ID> Display the Version of specific partition.

显示您当前的 ME 版本

# ./FWUpdLcl -FWVER
Intel (R) Firmware Update Utility Version: 11.8.92.4222
Copyright (C) 2007 - 2022, Intel Corporation.  All rights reserved.

FW Version: 11.8.65.3590

显示下载的存档中文件的 ME 版本

$ ./FWUpdLcl -FWVER ME.bin
Intel (R) Firmware Update Utility Version: 11.8.92.4222
Copyright (C) 2007 - 2022, Intel Corporation.  All rights reserved.

FW Version: 11.8.80.3746

开始刷新

# ./FWUpdLcl -F ME.bin
Intel (R) Firmware Update Utility Version: 11.8.92.4222
Copyright (C) 2007 - 2022, Intel Corporation.  All rights reserved.

Communication Mode: MEI
Checking firmware parameters...

Warning: Do not exit the process or power off the machine before the firmware update process ends.
Sending the update image to FW for verification:  [ COMPLETE ] 

FW Update:  [ 100% (/)]Do not Interrupt
FW Update is completed successfully.

要能够看到新版本,您需要重新启动。现在您可以看到应用的版本

# ./FWUpdLcl -FWVER
Intel (R) Firmware Update Utility Version: 11.8.92.4222
Copyright (C) 2007 - 2022, Intel Corporation.  All rights reserved.

FW Version: 11.8.80.3746
注意: 或者,您可以使用存档中的 FWUpdLcl.efi 通过 UEFI shell 进行更新。

Lenovo

一些固件更新仅以 Windows 可执行文件格式提供。本节以联想 IdeaPad L340-15API 固件为例。如果您尝试将这些步骤应用于另一个系统,您的结果可能会有所不同。联想 IdeaPad L340-15API 仅在联想支持站点上提供 .exe 文件。这不仅使本文中的许多方法无效,而且使所有方法都无效

  • Wine:虽然危险,但提到的 IdeaPad 固件因“TDK 库”错误而失败。有关更多信息,请参见下文。
  • fwupd 单独不起作用,因为固件不在 LVFS 上,即使其他条目可能在,例如 安全启动 禁止签名数据库 (dbx)。
  • BiosDisk 仅适用于“BIOS 可执行文件”,而不适用于我们的可执行文件。它也是由戴尔制造的,因此您在其他供应商处的结果可能会有所不同。
  • Flashrom 带有不建议在笔记本电脑上使用的明确警告。许多系统(包括 IdeaPad)也不在其硬件列表中受支持。
  • 为了使 FreeDOS 工作,固件需要是 DOS 可执行文件。如果您的固件可执行文件与讨论的 IdeaPad 类似,即使现代 Windows 可执行文件以 DOS 标头开头,它也根本无法在 FreeDOS 中运行。
  • geteltorito.pl 仅在您拥有 ISO 时才有效。
  • Windows PE 也可能产生不兼容问题。特别是,安装程序可能无法运行,因为它正在检查操作系统的兼容性。
  1. 安装程序。IdeaPad 的固件下载以安装程序格式提供,特别是 由 Inno Setup 设置。与其通过使用 Wine 之类的东西运行安装程序来提取,不如使用 innoextract 工具
    $ innoextract installer.exe
  2. 我们在内部找到另一个可执行文件。这个内部 IdeaPad 可执行文件在 FreeDOS 或 Windows PE 中也无法工作。但是,请注意之前提到的 TDK 库错误。TDK 指的是 Phoenix Technologies 制造的固件开发套件。在 badcaps 论坛 上提到,可执行文件本身将使用 /ext 参数提取内容。因此,使用 Wine 运行
    $ wine firmware.exe /ext
    或者,据报道使用 7z 也可以工作
    $ 7z x firmware.exe
  3. 我们发现自己在这个 .exe 文件中也有更多 .exe 文件。它们在 FreeDOS 或 Windows PE 中都无法工作。但是,请注意,固件本身采用 UEFI 胶囊更新格式,如 bladecoder 的博客 中建议的那样。
    • 在提取的文件中,查找 .cap 文件。您已经找到了提取的固件。
    • 或者,某些型号使用 .fd 文件。
  4. 有了UEFI capsule文件后,下一步是尝试手动安装。正如该博客中提到的,fwupd 可以帮助完成此操作。fwupdatefwupd 软件包中未提供,但 fwupdtool 可以完成相同的任务。首先,确定固件的设备 ID
    # fwupdtool get-devices
  5. 在设备输出中找到 ID 后,将其用于手动安装
    # fwupdtool install-blob BIOS.ext DEVICE-ID
  6. 当提示时重启。屏幕可能会完全变黑:等待其完成安装。
  7. EFI 启动列表在更新后会被清除。首先,将您的 UEFI 设置更新为之前的设置。
  8. 最后,使用外部启动介质重新安装您的引导加载程序。