大多数供应商最近仅以EFI
文件集的形式提供服务器固件更新(例子)。但是他们的服务器内部(以及任何外部)IP-KVM 只能连接ISO
图像作为启动虚拟媒体。使用该虚拟媒体远程固件刷新是不可能的。
服务器大部分时间都是远程的,没有人可以物理访问它来插入USB
闪存固件更新。固件更新也应是远程的,以加快整个过程。问题是我如何启动EFI
文件,例如这些从可启动ISO
到闪存固件更新?
最有可能的是,没有现成的解决方案。所以我想自己构建。但我在谷歌上没有找到任何关于启动的信息。需要指向一些启动手册或类似的东西。是否有办法以ISO
某种方式安排这些文件,以便EFI
shell 能够访问并启动它?
我想要Linux
构建的解决方案ISO
。
答案1
以下解决方案是在虚拟机中的 Linux Mint 19 64 上实现的。
所需工具
GParted – 用于管理分区的 GUI 工具。该工具通常在 Live Linux CD/DVD 中提供。如果磁盘末尾没有可用空间,则必须调整大小并创建一个小的 FAT 分区。如果现有分区正在使用中,您可能需要从 Live Linux CD/DVD 调用 GParted 才能使其在您的分区上工作。
genisoimage - 用于管理 ISO 的命令行工具。如果没有,只需安装它。这在 Linux Mint 19 64 位中很容易获得
sudo apt-get install genisoimage
步骤 1 – 使用 GParted(最好从 Live Linux CD/DVD 启动,在本例中我使用了 Live Linux Mint 19 64 位)在磁盘末尾创建一个小型 FAT16 格式的分区。对于这种特殊情况,100MB 就足够了。确保对于如此小的尺寸,格式为 FAT16 而不是 FAT32
步骤 2- 解压并将所需文件复制到此 FAT 格式的分区。您可以简单地使用 Linux 中的默认 GUI 文件资源管理器。无需单独的 gzip 命令
步骤 3 – 创建此分区的映像。此处的命令是
dd if=/dev/sda3 of=/home/test/efi/fat.img
上面的例子/dev/sda3
是保存文件的 FAT 格式的分区,也是/home/test/efi/fat.img
生成的图像文件。
步骤 4 - 现在我们将创建一个 EFI 可启动 ISO。文件本身在这里可能不一定是可启动的。
genisoimage -v -J -r -V "TEST" \
-o /home/test/myiso.iso \
-eltorito-alt-boot \
-e fat.img \
-no-emul-boot \
/home/test/efi
在上面的命令中,我们省略了 BIOS 引导程序,只使用 EFI 引导程序(替代程序)。/home/test/myiso.iso
是正在创建的新 ISO 文件,/home/test/efi
是源文件的位置。因此,其中除了引导程序映像外没有其他内容。
现在,ISO 已在 Linux Box 上创建。将 ISO 安装为 CD 驱动器,并将 UEFI 系统引导至 EFI Shell。现在,引导加载程序部分将映射到 EFI Shell 中的驱动器,并且其中包含文件夹及其内容的映像将可通过 EFI Shell 访问。
答案2
根据我对您的问题的最佳理解,我建议在 Windows 64 位操作系统上使用以下工具解决问题。
脚步
在您的 Windows 操作系统上下载并安装上述软件。
首先使用 imdisk_toolkit 创建一个虚拟磁盘并将其挂载到驱动器号。将磁盘格式化为 FAT 文件系统。大约 50-60 MB 的磁盘足以满足您的需求,因为文件大小几乎不会小于 40MB
将文件内容(包括 EFI 文件、闪存文件和脚本)复制到该虚拟驱动器上。
现在,在同一个应用程序中,创建并保存虚拟驱动器的 .img 文件。
卸载虚拟驱动器。这部分工作已经完成。
现在打开 Power ISO 并创建一个新的空白 ISO 容器。
转到菜单操作-->启动-->添加启动信息
并选择我们之前创建的.IMG 文件。
现在您的 ISO 文件实际上已可启动(它创建一个 FAT 容器作为启动文件,但实际上它无法启动,因为您的文件本身不是启动加载程序)
将文件保存为 .ISO 并将其刻录到 CD/DVD。
此引导加载程序 FAT 容器应可在 EFI Shell 中访问,并应将其自身安装为 EFI Shell 中的可访问驱动器。
我已经在虚拟机上测试过了。希望它在真实硬件上能如预期的那样工作。
答案3
也许您可以将固件更新构建为 PXE 启动映像(尽管需要小心不要陷入重新刷新循环)。大多数带有 EFI 的服务器在需要时也能够回退到 PXE BIOS 启动。
如果您的 IP-KVM 设备允许您连接 USB 磁盘,您可能会发现通过连接这样的东西您就可以简单地启动您的“映像”。
更好的方法可能是从真正完全启动的操作系统刷新服务器(并且一些制造商提供特定于操作系统的实用程序来执行此操作)。
最后,一些服务器供应商会向你收取和额外的钱让您通过网络刷新服务器的 BIOS(例如通过 IPMI) - 您可能会遇到这种情况......
答案4
除了可启动 ISO 之外,还有其他解决方案,尽管构建它们需要一些工作。选择的解决方案在很大程度上取决于远程计算机的性质,包括制造商和操作系统。
对于来自同一制造商的计算机,大多数大型制造商都提供旨在管理数据中心的产品,这些产品大多是免费的。如果您的情况如此,以下是一些链接:
- Dell OpenManage Essentials
- HP 客户端管理解决方案
- 联想PC云管理器
- Windows 服务器更新服务 (WSUS) 例如 本地更新发布者 用于推送包括 BIOS 在内的软件包。
在 Windows 上,可以使用 PowerShell 来更新 BIOS。必须先将必要的文件推送到远程计算机。此类脚本的示例如下:
- 使用 PowerShell 更新 Dell BIOS
- 使用 PowerShell 应用部署工具包部署 BIOS 更新 描述使用 Deploy-Application.ps1 脚本
- 使用 SCCM 动态更新 Think 产品上的 BIOS 使用微软的 SCCM 推送联想的 BIOS 更新。
- 调用-DellBIOSUpdate.ps1 是用于戴尔 BIOS 更新的 PowerShell 脚本。
- 调用-LenovoBIOSUpdate.ps1 是针对联想的同一款剧本的改编。
每一个解决方案都需要研究和测试,没有一个是容易的或绝对保证的。