nova 是否支持 pxe 启动?

Tie*_*Dad 3 pxe-boot openstack

我正在研究一个基于 OpenStack 的项目。现在我们需要一个虚拟机从 PXE 启动。我找不到任何关于此的文件。nova 是否支持 PXE 启动?如果是,我如何创建一个 KVM 映像,该映像等效于从 PXE 启动的裸机?

lar*_*sks 5

您可以将ipxe安装到磁盘上并使用 syslinux(或其他引导程序)加载它;这将使您的行为与通过 PXE BIOS 启动的系统完全一样。iPXE 发行版包括用于构建可引导 ISO 映像的工具,您可以使用这些工具在 OpenStack 中引导系统,或者您可以使用非常相似的设置来构建硬盘映像。

  1. 创建磁盘映像:

    $ dd if=/dev/zero of=/tmp/boot.img bs=1M count=4
    
    Run Code Online (Sandbox Code Playgroud)
  2. 对图像进行分区:

    $ fdisk /tmp/boot.img
    
    Run Code Online (Sandbox Code Playgroud)
  3. 您将需要设置气缸数

  4. 使用类型创建单个分区b并使其可启动(n创建、a切换启动标志)。

  5. 将图像连接到环回设备。

    # losetup -fP /tmp/boot.img
    
    Run Code Online (Sandbox Code Playgroud)
  6. 创建 msdos 文件系统。

    # mkdosfs -I /dev/loop0p1
    
    Run Code Online (Sandbox Code Playgroud)
  7. 挂载文件系统。

    # mount /dev/loop0p1 /mnt
    
    Run Code Online (Sandbox Code Playgroud)
  8. 安装 syslinux。

    # syslinux --install /dev/loop0p1
    
    Run Code Online (Sandbox Code Playgroud)
  9. 复制ipxe.krn到设备上(从某个地方...要么是您自己构建的,要么是从 ipxe ISO 复制的)。

  10. 创建适当的 syslinux 配置,例如:

    DEFAULT ipxe
    LABEL ipxe
      KERNEL ipxe.krn
    
    Run Code Online (Sandbox Code Playgroud)

通过在本地 KVM 实例上启动它来测试它。将其上传到 openstack 并使用它启动。请注意,在此示例中,我们创建了一个非常小的 (4M) 磁盘映像,但您也可以创建一个大磁盘映像,然后在其上放置一个小分区。这一切都取决于您要实现的目标。