IBM Cloud Docs
创建 Linux 定制映像

创建 Linux 定制映像

您可以创建自己的基于 Linux的定制映像以导入到 IBM Cloud® Virtual Private Cloud中。 然后,可以使用定制映像在 IBM Cloud® Virtual Private Cloud 基础结构中部署虚拟服务器或裸机服务器。

您可以从 IBM Cloud 经典基础架构开始使用映像模板。 有关更多信息,请参阅从经典基础架构迁移虚拟服务器。 您是否知道还可以创建在导入时附加到实例的引导卷的定制映像? 有关更多信息,请参阅 关于从卷创建映像

所有自定义图像必须符合以下要求:所有自定义图像必须符合以下要求:所有自定义图像必须符合以下要求:所有自定义图像必须符合以下要求

  • 包含单个文件或卷。
  • 应为 qcow2 或 vhd 格式。
  • 启用云启动或使用 ESXi kickstart 启动。
  • 大小不超过 250 GB。
  • 最小大小为 10 GB。 对于小于 10 GB 的任何映像,大小将向上取整为 10 GB。

要使用 IBM Cloud Object Storage 选项创建基于安全执行的定制映像,请参阅 准备工作负载。 有关创建基于安全执行的映像的更多信息,请参阅 IBM Secure Execution for Linux

对于 Linux 映像,仅当操作系统的 SSH 服务器支持此密钥类型时,才能使用 Ed25519 SSH 密钥类型。 有关更多信息,请参阅 SSH 密钥入门

完成以下步骤以确保您可以在 IBM Cloud VPC 基础架构环境中成功部署自己的 Linux 定制映像。 请记住,不能从非 100 GB 的加密引导卷 (来自卷的映像) 创建映像。 操作已阻塞。

步骤 1-以 qcow2 或 VHD 格式的单个映像文件开始

如果要创建自己的基于 Linux的定制映像,请以 qcow2 或 VHD 格式的单个映像文件开头。 从支持云的供应商映像开始可能很有用。

内核日志在调试引导相关问题时很重要。 要确保将内核日志打印到串行控制台,请使用 console=ttyS0 内核命令行参数。 此外,nomodesetnofb 内核参数用于解决 2021 年中期之前发布的较旧内核的引导过程中与显示相关的问题。 较新的内核在内核中使用视频方式设置。

步骤 2-检查 virtio 驱动程序

  1. 确保在操作系统映像上安装了 virtio 驱动程序以及 virtio 所需的任何代码。 Virtio 网络驱动程序是启用联网所必需的。 通过运行以下命令,检查 virtio 驱动程序是否安装在内核中:

    grep -i virtio /boot/config-$(uname -r)
    

    在输出中查找 VIRTIO_BLKVIRTIO_NET。 如果这些行不存在,那么 virtio 驱动程序不会内置到内核中。

  2. 如果存在 VIRTIO_BLKVIRTIO_NET 行,请通过运行以下命令来验证驱动程序是否存在于临时根文件系统中:

    lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
    

    如果您正在使用 Debian 操作系统,请使用以下命令:

    lsinitramfs /boot/initrd.img-$(uname -r) | grep virtio
    

    验证是否存在 virtio blk 驱动程序及其依赖关系 virtio.kovirtio_pcivirtio_ring。 如果 virtio 依赖关系不存在,那么必须恢复根文件系统。

步骤 3-网络接口设置为自动配置

如果在访客映像中定义了网络接口,请确保至少将一个网络接口设置为自动配置。 无法为手动配置指定所有接口。 通常,接口设置为使用 DHCP。 有关配置 DHCP 的更多信息,请参阅 Linux 分发版的文档。

步骤 4-确保映像已启用 cloud-init

确保映像已启用 cloud-init。 需要 Cloud-init V 0.7.9 或更高版本。

  1. 要确定是否安装了 cloud-init,请运行以下命令: cloud-init --version

    • 在某些情况下,可能会安装 cloud-init,但不会安装在您的环境 PATH 中。
    • 要在 ExecStart, 运行以下命令:systemctl cat cloud-init
  2. 要安装 cloud-init,请使用下列其中一个命令。

    • 对于 Ubuntu 或 Debian,运行以下命令: apt-get install cloud-init
    • 对于 CentOS 或 Red Hat,运行以下命令: yum install cloud-init
  3. 如果 datasources_list 属性存在于 /etc/cloud/cloud.cfg中,请验证它是否仅包含 NoCloud 或完全除去 datasources_list 属性。ConfigDrive 不受支持。 有关数据源的更多信息,请参阅 数据源。IBM Cloud 将使用 NoCloud 数据源为环境创建 cloud-init 映像以提供元数据。

    提供了一种块装置。 请参阅以下示例。

    blkid
    /dev/vdb: UUID="2023-03-15-16-50-02-00" LABEL="cidata" TYPE="iso9660"
    

    此块设备由 cloud-init 找到,并包含以下文件。

    • 元数据实例标识 :INSTANCE_ID local-hostname: NAME
    • user-data 创建实例时提供的可选用户数据。 请参阅 用户数据 以获取更多信息。
    • vendor-data 一个 MIME 格式的文件,其中包含从创建实例时提供的 SSH 密钥派生的云配置 SSH 授权以及其他初始化信息。
  4. /etc/cloud/cloud.cfg 文件中,验证 cloud_final_modules 部分是否包含 scripts-vendor 模块以及是否已启用该模块。 缺省情况下,Red Hat Enterprise Linux 和 CentOS 不包含在 IBM Cloud VPC 基础结构中供应实例所需的 scripts-vendor 模块。 您必须启用 scripts-vendor 模块以使用 Linux 定制映像来供应 IBM Cloud VPC 虚拟服务器实例。

    对于 Red Hat Enterprise Linux (RHEL)镜像,以下软件包默认为基础镜像的一部分,是成功运行 cloud-init 所必需的:subscription-managerethtoolrpm。 此外,请确保已启用以下服务: cloud-init-local.servicecloud-init.servicecloud-config.servicecloud-final.service

  5. 确保将映像配置为使用 SSH 登录虚拟服务器。

基于 RHEL 的自定义映像的默认用户是 cloud-user。 有关启用 cloud-init 的更多信息,请参阅 设置 cloud-init

步骤 5-引导磁盘大小

确保映像的引导磁盘大小为 10 到 250 GB。 小于 10 GB 的映像将向上舍入为 10 GB。

如果要定制虚拟服务器以从经典基础架构迁移,请返回到 从经典基础架构迁移虚拟服务器 并继续完成迁移步骤。

步骤 6-将图像上载到 IBM Cloud Object Storage

将映像上传到 IBM Cloud Object Storage。 在 IBM Cloud® Object Storage 桶的对象页面,单击上传。 您可以使用 Aspera 高速传输插件上传大于 200 MB 的图像。 有关上传到 IBM Cloud Object Storage 的更多信息,请参阅上传数据

后续步骤

创建 Linux 定制映像并在 IBM Cloud Object Storage中提供时,您可以 将该定制映像导入到 VPC 中加载 VPC 的虚拟服务器映像。 确保 已授予对 IBM Cloud Object Storage 的访问权以导入映像

如果计划使用专用目录来管理定制映像,那么必须首先将该映像导入到 IBM Cloud VPC中,然后将虚拟服务器映像加载到专用目录中。

导入定制映像后,可以使用该定制映像在 IBM Cloud® Virtual Private Cloud 基础结构中部署虚拟服务器。