Dell 远程 BIOS 更新驱动 (dell_rbu)

目的

本文档演示如何使用 Dell 远程 BIOS 更新驱动程序来更新 Dell 服务器和台式机上的 BIOS 映像。

范围

本文档仅讨论 rbu 驱动程序的功能。它不涵盖应用程序所需的支持,以使 BIOS 能够使用下载到内存中的映像自行更新。

概述

此驱动程序与 Dell OpenManage 或 Dell Update Packages 一起使用,用于更新 Dell 服务器(从 1999 年以后销售的服务器开始)、台式机和笔记本电脑(从 2005 年销售的笔记本电脑开始)上的 BIOS。

请访问 http://support.dell.com 注册,您可以找到有关 OpenManage 和 Dell Update Packages (DUP) 的信息。

Libsmbios 也可用于更新 Dell 系统上的 BIOS,请访问 https://linux.dell.com/libsmbios/ 了解详情。

Dell_RBU 驱动程序支持使用整体映像和数据包化映像方法进行 BIOS 更新。对于整体映像,驱动程序会分配一个包含 BIOS 映像的连续物理页面块。对于数据包化映像,使用驱动程序的应用程序会将映像分解为固定大小的数据包,驱动程序会将每个数据包放置在连续的物理内存中。驱动程序还维护一个数据包链接列表,以便读回它们。

如果卸载 dell_rbu 驱动程序,则会释放所有已分配的内存。

rbu 驱动程序需要一个应用程序(如上所述),该应用程序将通知 BIOS 在下次系统重新启动时启用更新。

用户在下载 BIOS 映像或更新后不应卸载 rbu 驱动程序。

驱动程序加载会在 /sys 文件系统下创建以下目录

/sys/class/firmware/dell_rbu/loading
/sys/class/firmware/dell_rbu/data
/sys/devices/platform/dell_rbu/image_type
/sys/devices/platform/dell_rbu/data
/sys/devices/platform/dell_rbu/packet_size

驱动程序支持两种类型的更新机制:整体式和数据包式。这些更新机制取决于系统上当前运行的 BIOS。大多数 Dell 系统都支持整体式更新,其中 BIOS 映像被复制到单个连续的物理内存块中。

对于数据包机制,单个内存可以被分解为更小的连续内存块,BIOS 映像分散在这些数据包中。

默认情况下,驱动程序使用整体内存作为更新类型。这可以在驱动程序加载时通过指定加载参数 image_type=packet 来更改为数据包。也可以稍后更改,如下所示

echo packet > /sys/devices/platform/dell_rbu/image_type

在数据包更新模式下,必须先给出数据包大小,然后才能下载任何数据包。 它是这样完成的

echo XXXX > /sys/devices/platform/dell_rbu/packet_size

在数据包更新机制中,用户需要创建一个新文件,其中包含背靠背排列的数据包。 它可以这样做:用户创建数据包头,获取 BIOS 映像块并将其放置在数据包头旁边; 现在,数据包头 + BIOS 映像块加在一起应与指定的数据包大小匹配。 这构成一个数据包,用户需要从整个 BIOS 映像文件中创建更多此类数据包,然后将所有这些数据包背靠背排列到一个文件中。

然后,此文件被复制到 /sys/class/firmware/dell_rbu/data。 一旦此文件到达驱动程序,驱动程序就会从文件中提取数据包大小的数据,并将其分散在连续数据包大小空间的物理内存中。

此方法确保所有数据包都在一次操作中到达驱动程序。

在整体更新中,用户只需获取 BIOS 映像(.hdr 文件),并将其复制到数据文件,而无需对 BIOS 映像本身进行任何更改。

执行以下步骤来下载 BIOS 映像。

  1. echo 1 > /sys/class/firmware/dell_rbu/loading

  2. cp bios_image.hdr /sys/class/firmware/dell_rbu/data

  3. echo 0 > /sys/class/firmware/dell_rbu/loading

/sys/class/firmware/dell_rbu/ 条目将一直保留到完成以下操作。

echo -1 > /sys/class/firmware/dell_rbu/loading

在完成此步骤之前,无法卸载驱动程序。

另外,在 image_type 中回显 mono、packet 或 init 也会释放驱动程序分配的内存。

如果用户不小心在没有执行步骤 2 的情况下执行了上述步骤 1 和 3; 这将导致 /sys/class/firmware/dell_rbu/ 条目消失。

可以通过执行以下操作来重新创建条目

echo init > /sys/devices/platform/dell_rbu/image_type

注意

在 image_type 中回显 init 不会更改其原始值。

此外,驱动程序还提供 /sys/devices/platform/dell_rbu/data 只读文件以读回下载的图像。

注意

更新 BIOS 映像后,用户模式应用程序需要执行代码,该代码将 BIOS 更新请求发送到 BIOS。 因此,在下次重新启动时,BIOS 会知道已下载的新映像,并自行更新。 如果要更新映像,请勿卸载 rbu 驱动程序。