从 [boot, virtual media] ISO 运行 EFI 文件/脚本

Dmi*_*yev 6 firmware boot iso-image efi

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

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

最有可能的是,现成的解决方案并不存在。所以我想自己建造。但我一开始没有在谷歌中找到任何东西。需要指出一些启动手册或类似内容。可能有一种方法可以以ISO某种方式排列此文件EFIshell 能够访问并启动它?

我想要Linuxbuild 的解决方案ISO

pat*_*kim 7

以下解决方案在虚拟机中的 Linux Mint 19 64 上实现。

\n\n

需要的工具

\n\n

GParted \xe2\x80\x93 用于管理分区的 GUI 工具。这通常在 Live Linux CD/DVD 中提供。如果磁盘末尾没有可用空间,则必须调整大小并创建一个小的 FAT 分区。如果现有分区正在使用中,您可能需要从 Live Linux CD/DVD 调用 GParted 才能在您的分区上运行。

\n\n

genisoimage - 管理 ISO\xe2\x80\x99s 的命令行工具。如果这不可用,只需安装它。这在 Linux Mint 19 64 位中很容易获得

\n\n
sudo apt-get install genisoimage\n
Run Code Online (Sandbox Code Playgroud)\n\n

步骤 1 \xe2\x80\x93 使用 GParted(最好从 Live Linux CD/DVD 启动,在本例中我使用 Live Linux Mint 19 64 位)在磁盘末尾创建一个小的 FAT16 格式分区。对于这种特殊情况,只需 100MB 就足够了。确保对于如此小的尺寸,格式为 FAT16 而不是 FAT32

\n\n

在此输入图像描述

\n\n

步骤 2 - 解压缩并将所需文件复制到此 FAT 格式的分区。您可以简单地使用 Linux 中默认的 GUI 文件浏览器。不需要单独的 gzip 命令

\n\n

在此输入图像描述

\n\n

在此输入图像描述

\n\n

步骤 3 \xe2\x80\x93 创建该分区的镜像。这里的命令是

\n\n
dd if=/dev/sda3 of=/home/test/efi/fat.img\n
Run Code Online (Sandbox Code Playgroud)\n\n

上例中/dev/sda3是保存文件的 FAT 格式分区,并且/home/test/efi/fat.img 是生成的映像文件。

\n\n

在此输入图像描述

\n\n

第 4 步 - 现在我们将创建一个 EFI 可启动 ISO。文件本身不一定可以在此处启动。

\n\n
genisoimage -v -J -r -V "TEST" \\\n  -o /home/test/myiso.iso \\\n  -eltorito-alt-boot \\\n  -e fat.img \\\n  -no-emul-boot \\\n  /home/test/efi\n
Run Code Online (Sandbox Code Playgroud)\n\n

在此输入图像描述

\n\n

在此输入图像描述

\n\n

在上面的命令中,我们省略了 BIOS 引导加载程序,只使用 EFI 引导加载程序(备用引导加载程序)。/home/test/myiso.iso是正在创建的新 ISO 文件,/home/test/efi是源文件的位置。因此,除了引导加载程序映像之外,\xe2\x80\x99 中什么也没有。

\n\n

现在 ISO 已在 Linux Box 上创建。将 ISO 安装为 CD 驱动器并将 UEFI 系统引导至 EFI Shell。现在,引导加载程序部分应映射到 EFI Shell 中的驱动器,并且其中包含文件夹及其内容的映像应可通过 EFI Shell 访问。

\n\n

在此输入图像描述

\n\n

在此输入图像描述

\n