从 [启动、虚拟媒体] ISO 运行 EFI 文件/脚本

从 [启动、虚拟媒体] ISO 运行 EFI 文件/脚本

大多数供应商最近仅以EFI文件集的形式提供服务器固件更新(例子)。但是他们的服务器内部(以及任何外部)IP-KVM 只能连接ISO图像作为启动虚拟媒体。使用该虚拟媒体远程固件刷新是不可能的。

服务器大部分时间都是远程的,没有人可以物理访问它来插入USB闪存固件更新。固件更新也应是远程的,以加快整个过程。问题是我如何启动EFI文件,例如这些从可启动ISO到闪存固件更新?

最有可能的是,没有现成的解决方案。所以我想自己构建。但我在谷歌上没有找到任何关于启动的信息。需要指向一些启动手册或类似的东西。是否有办法以ISO某种方式安排这些文件,以便EFIshell 能够访问并启动它?

我想要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 位操作系统上使用以下工具解决问题。

  1. imdisk_toolkit_64_bit 虚拟磁盘模拟器。下载并安装这里
  2. 电源 ISO(试用版应该可以,因为相关文件小于 300MB)

脚步

在您的 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 之外,还有其他解决方案,尽管构建它们需要一些工作。选择的解决方案在很大程度上取决于远程计算机的性质,包括制造商和操作系统。

对于来自同一制造商的计算机,大多数大型制造商都提供旨在管理数据中心的产品,这些产品大多是免费的。如果您的情况如此,以下是一些链接:

在 Windows 上,可以使用 PowerShell 来更新 BIOS。必须先将必要的文件推送到远程计算机。此类脚本的示例如下:

每一个解决方案都需要研究和测试,没有一个是容易的或绝对保证的。

相关内容