Dell 远程 BIOS 更新驱动程序 (dell_rbu)

目的

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

范围

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

概述

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

请访问 http://support.dell.com 注册,您可以找到有关 OpenManage 和 Dell 更新软件包 (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。 一旦此文件到达驱动程序,驱动程序就会从文件中提取 packet_size 数据,并将其分散在物理内存中连续的 packet_sized 空间中。

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

在整体更新中,用户只需获取 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

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

此外,将 mono、packet 或 init 回显到 image_type 中将释放驱动程序分配的内存。

如果用户不小心在未执行步骤 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 驱动程序。