You need to enable JavaScript to run this app.
导航
本地制作自定义镜像
最近更新时间:2024.11.26 16:32:45首次发布时间:2024.11.26 16:32:45

本文介绍如何在本地制作一个用于创建边缘裸金属实例的自定义镜像。

当您从本地导入一个自定义镜像时,需要确保镜像满足平台要求和规范。否则,可能导致镜像无法成功导入或者无法使用镜像成功创建出实例。因此,请确保您已了解镜像导入限制并按照文中步骤进行软件、系统、驱动等配置。

背景信息

镜像导入限制:
在制作自定义镜像前,请先了解以下镜像导入限制:

  • 边缘裸金属实例只支持Linux镜像。
  • 对于Linux镜像:只能使用MBR分区和ext3/4文件系统。
  • 对于通过本地镜像方式导入的镜像,镜像文件的格式须是QCOW2。
  • 镜像大小默认不能超过50GB。
  • 镜像引导方式须是UEFI。

适用场景:
本文所述的操作适用于以下场景:您拥有一个ISO格式的镜像,并希望基于该镜像制作一个QCOW2格式的虚拟机镜像,以用于创建边缘裸金属实例。

镜像制作流程:

  1. 在VirtualBox中使用ISO镜像安装操作系统
    下载VirtualBox,在VirtualBox中创建虚拟机,并使用ISO镜像为虚拟机安装操作系统。
  2. 安装Mellanox网卡驱动
    安装Mellanox网卡驱动,否则实例的网卡可能无法正常工作。
  3. 安装cloud-init服务
    安装cloud-init,使实例能够正常初始化。
  4. 更新系统配置
    更新系统配置,以保障基于自定义镜像创建的实例能够正常运行。
  5. 安装必要驱动(仅适用于CentOS操作系统)
    对于CentOS操作系统,需要在initramfs文件中添加必要的驱动,使系统能够正常启动。
  6. 将镜像格式转换为QCOW2
    将镜像格式转换为QCOW2。以本地镜像方式导入的镜像的格式必须是QCOW2。

说明

如果您的镜像的格式为QCOW2,那么您在导入镜像前只需要执行步骤2~步骤5,无需执行步骤6的格式转换。

镜像制作

一、在VirtualBox中使用ISO镜像安装操作系统

本示例中以在VirtualBox 7.1.4版本中创建虚拟机,并使用ISO镜像为虚拟机安装CentOS 7操作系统为例进行说明。对于不同版本的VirtualBox和操作系统,安装步骤可能不同。请您根据实际的安装界面提示进行操作。

步骤一:下载并安装VirtualBox

  1. 访问VirtualBox官网
  2. 下载并安装VirtualBox。

步骤二:创建虚拟机

  1. 打开VirtualBox,点击新建按钮创建虚拟机。
    Image
  2. 按照镜像的操作系统指定名称、文件夹、类型、Subtype和版本,然后单击下一步
    Image
  3. 根据虚拟机配置以及操作系统需求分别设置内存大小和处理器数量,勾选启用EFI,然后单击下一步。该示例中使用默认值。
    Image
  4. 选择不添加虚拟硬盘,然后单击下一步
    此处如果直接创建虚拟磁盘,只能使用默认的磁盘文件格式VDI(不同VirtualBox版本的实现可能有差异)。为了便于镜像格式转换或镜像导入,建议创建VMDK格式的虚拟磁盘。在后续步骤中,会创建一个VMDK格式的虚拟磁盘。
    Image
  5. 确认配置信息,然后单击完成
  6. 确认提示信息,单击继续
  7. 选择创建的虚拟机,单击设置
    Image
  8. 单击存储,然后单击控制器:SATA旁的添加虚拟硬盘按钮。
    Image
  9. 单击创建
    Image
  10. 勾选VMDK(虚拟机磁盘),单击下一步
    Image
  11. 根据提示完成VMDK磁盘创建。该过程中,请注意按照虚拟机配置和操作系统需求设置虚拟硬盘的大小。
  12. 双击VMDK磁盘名称。该VMDK磁盘会展示在控制器:SATA区域。
    Image
  13. 单击页面右下角的确定保存配置。

步骤三:安装操作系统

  1. 选择创建的虚拟机,单击设置
    Image
  2. 单击存储。单击控制器:IDE区域的没有盘片,单击分配光驱旁的光驱图标,然后选择Choose a Disk File。
    Image
  3. 选择用于安装操作系统的ISO镜像文件,然后单击确定保存配置。
  4. 选择虚拟机,单击启动
    Image
  5. 按照安装向导安装操作系统。

二、安装Mellanox网卡驱动

您需要在镜像中提前安装Mellanox网卡驱动,否则实例的网卡可能无法正常工作。建议您安装5.4版本的Mellanox网卡。

步骤一:下载Mellanox网卡驱动

以下内容以下载CentOS 7.6 x86_64位镜像为例进行说明。实际操作中,请下载与您的操作系统匹配的驱动安装包。

说明

该驱动的提供者为第三方厂商。驱动下载页面上的内容可能会发生变化,请您以实际的页面内容为准。

  1. 访问官方网站

  2. MLNX_EN Download Center区域的Archive Versions页签下按实际情况选择驱动版本。本示例中,配置如下:

    • Version:5.4-3.6.8.1
    • OS Distribution:RHEL/CentOS/Rocky
    • OS Distribution Version:RHEL/CentOS 7.6
    • Architecture:x86_64
      Image
  3. 右键单击 mlnx-en-5.4-3.6.8.1-rhel7.6-x86_64.tgz 并单击复制链接地址
    Image

  4. 在虚拟机中,运行以下命令下载驱动的.tgz文件:

    wget <复制的链接地址>
    

    示例:

    wget https://www.mellanox.com/downloads/ofed/MLNX_EN-5.4-3.6.8.1/mlnx-en-5.4-3.6.8.1-rhel7.6-x86_64.tgz
    

步骤二:安装Mellanox网卡驱动

  1. 运行以下命令解压缩.tgz文件并安装驱动:

    tar zxvf <.tgz文件名称>
    <.tgz文件名称>/install
    

    示例:

    tar zxvf mlnx-en-5.4-3.6.8.1-rhel7.6-x86_64.tgz
    mlnx-en-5.4-3.6.8.1-rhel7.6-x86_64/install
    

说明

官方文档中提供了不同的驱动安装方法。以上内容仅体现其中一种方法:解压安装包并执行安装包内的install 脚本来安装驱动。其他安装方法,详见官方文档

三、安装cloud-init

边缘裸金属实例启动时,实例的网络配置需要通过cloud-init工具注入。因此,您需要在镜像中提前安装cloud-init工具。如果导入的镜像没有安装cloud-init,基于该镜像创建的实例将无法被正常初始化。

步骤一:根据操作系统版本安装软件包

Centos 7/8系列

  1. 配置软件源
    CentOS的软件源配置文件为 /etc/yum.repos.d/CentOS-Base.repo,请先备份软件源配置文件后再执行相应操作。

    • 对于CentOS 7系列,运行以下命令:

      wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.volces.com/repo/Centos-7.repo
      

      或执行:

      curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.volces.com/repo/Centos-7.repo
      
    • 对于CentOS 8系列,将CentOS-Base.repo文件修改为以下内容:

      [base]
      name=CentOS-8.5.2111 - Base
      baseurl=http://mirrors.volces.com/centos/8.5.2111/BaseOS/$basearch/os/
      gpgcheck=1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
      #additional packages that may be useful
      [extras]
      name=CentOS-8.5.2111 - Extras
      baseurl=http://mirrors.volces.com/centos/8.5.2111/extras/$basearch/os/
      gpgcheck=1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
      #additional packages that extend functionality of existing packages
      [centosplus]
      name=CentOS-8.5.2111 - Plus
      baseurl=http://mirrors.volces.com/centos/8.5.2111/centosplus/$basearch/os/
      gpgcheck=1
      enabled=0
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
      [AppStream]
      name=CentOS-8.5.2111 - AppStream
      failovermethod=priority
      baseurl=http://mirrors.volces.com/centos/8.5.2111/AppStream/$basearch/os/
      gpgcheck=1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
      
  2. 运行以下命令安装软件包:

    yum update
    yum install cloud-utils-growpart gdisk
    

Ubuntu系列

  1. 配置软件源
    Ubuntu的软件源配置文件为/etc/apt/sources.list,请先备份软件源配置文件后再将该文件修改为以下内容:

    • Ubuntu 16.04 (Xenial)

      deb http://mirrors.volces.com/ubuntu/ xenial main
      deb-src http://mirrors.volces.com/ubuntu/ xenial main
      deb http://mirrors.volces.com/ubuntu/ xenial-updates main
      deb-src http://mirrors.volces.com/ubuntu/ xenial-updates main
      deb http://mirrors.volces.com/ubuntu/ xenial universe
      deb-src http://mirrors.volces.com/ubuntu/ xenial universe
      deb http://mirrors.volces.com/ubuntu/ xenial-updates universe
      deb-src http://mirrors.volces.com/ubuntu/ xenial-updates universe
      deb http://mirrors.volces.com/ubuntu/ xenial-security main
      deb-src http://mirrors.volces.com/ubuntu/ xenial-security main
      deb http://mirrors.volces.com/ubuntu/ xenial-security universe
      deb-src http://mirrors.volces.com/ubuntu/ xenial-security universe
      
    • Ubuntu 18.04 (Bionic)

      deb http://mirrors.volces.com/ubuntu/ bionic main restricted universe multiverse
      deb-src http://mirrors.volces.com/ubuntu/ bionic main restricted universe multiverse
      deb http://mirrors.volces.com/ubuntu/ bionic-security main restricted universe multiverse
      deb-src http://mirrors.volces.com/ubuntu/ bionic-security main restricted universe multiverse
      deb http://mirrors.volces.com/ubuntu/ bionic-updates main restricted universe multiverse
      deb-src http://mirrors.volces.com/ubuntu/ bionic-updates main restricted universe multiverse
      deb http://mirrors.volces.com/ubuntu/ bionic-proposed main restricted universe multiverse
      deb-src http://mirrors.volces.com/ubuntu/ bionic-proposed main restricted universe multiverse
      deb http://mirrors.volces.com/ubuntu/ bionic-backports main restricted universe multiverse
      deb-src http://mirrors.volces.com/ubuntu/ bionic-backports main restricted universe multiverse
      
    • Ubuntu 20.04 (Focal)

      deb http://mirrors.volces.com/ubuntu/ focal main restricted universe multiverse
      deb-src http://mirrors.volces.com/ubuntu/ focal main restricted universe multiverse
      deb http://mirrors.volces.com/ubuntu/ focal-security main restricted universe multiverse
      deb-src http://mirrors.volces.com/ubuntu/ focal-security main restricted universe multiverse
      deb http://mirrors.volces.com/ubuntu/ focal-updates main restricted universe multiverse
      deb-src http://mirrors.volces.com/ubuntu/ focal-updates main restricted universe multiverse
      deb http://mirrors.volces.com/ubuntu/ focal-proposed main restricted universe multiverse
      deb-src http://mirrors.volces.com/ubuntu/ focal-proposed main restricted universe multiverse
      deb http://mirrors.volces.com/ubuntu/ focal-backports main restricted universe multiverse
      deb-src http://mirrors.volces.com/ubuntu/ focal-backports main restricted universe multiverse
      
  2. 运行以下命令安装软件包:

    apt update
    apt-get install net-tools ethtool
    apt-get install ifupdown resolvconf
    

Debian系列

  1. 配置软件源
    Debian 的软件源配置文件是 /etc/apt/sources.list,请先备份软件源配置文件后再将该文件修改为以下内容:

    • Debian 9 (Stretch)

      deb http://mirrors.volces.com/debian stretch main contrib non-free
      deb http://mirrors.volces.com/debian stretch-backports main contrib non-free
      deb http://mirrors.volces.com/debian-security stretch/updates main contrib non-free
      #deb-src http://mirrors.volces.com/debian stretch main contrib non-free
      #deb-src http://mirrors.volces.com/debian stretch-backports main contrib non-free
      #deb-src http://mirrors.volces.com/debian-security stretch/updates main contrib non-free
      
    • Debian 10 (Buster)

      deb http://mirrors.volces.com/debian buster main contrib non-free
      deb http://mirrors.volces.com/debian buster-backports main contrib non-free
      deb http://mirrors.volces.com/debian-security buster/updates main contrib non-free
      #deb-src http://mirrors.volces.com/debian buster main contrib non-free
      #deb-src http://mirrors.volces.com/debian buster-backports main contrib non-free
      #deb-src http://mirrors.volces.com/debian-security buster/updates main contrib non-free
      
  2. 运行以下命令安装软件包:

    apt-get update
    apt-get install cloud-guest-utils cloud-utils cloud-initramfs-growroot parted dnsutils
    apt-get install net-tools ethtool tcpdump ifupdown
    

步骤二:安装/更新Python版本

说明

请确保Python版本为3.6.5及以上,版本太低可能导致cloud-init执行失败。根据您的操作系统版本,选择对应的执行步骤。

CentOS 7/8系列

运行以下命令安装/更新Python版本:

#安装python
yum install python3-pip
pip3 install --upgrade pip
#查看python版本
python3 -V

Ubuntu系列

运行以下命令安装/更新Python版本:

#安装python
apt-get install python3-pip
pip3 install --upgrade pip
#查看python版本
python3 -V

Debian系列

运行以下命令安装Python3.9.1版本:

#安装python
apt-get install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev
cd /opt/
wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz
tar zxvf Python-3.9.1.tgz
cd Python-3.9.1
./configure --prefix=/usr/local/python3
make && make install
ln -s /usr/local/python3/bin/python3.9 /usr/local/bin/python3
ln -s /usr/local/python3/bin/python3.9 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
pip3 install --upgrade pip
#查看python版本
python3 -V

步骤三:下载cloud-init源码包

说明

  • 对于Ubuntu系列,您无需下载cloud-init源码包,可直接安装cloud-init组件。
  • 在正常安装的情况下,cloud-init-21.1版本与火山引擎的兼容性较佳,建议选择cloud-init-21.1.tar.gz安装版本。您也可以点此获取其他版本的cloud-init源码包,但不保证实例可以正常运行。本文以cloud-init-21.1版本为例。

运行以下命令,下载cloud-init源码包:

wget https://launchpad.net/cloud-init/trunk/21.1/+download/cloud-init-21.1.tar.gz

步骤四:安装cloud-init组件

Ubuntu系列

运行以下命令。通过该命令可直接完成cloud-init安装以及开机自启动配置。

apt-get install cloud-init -y

Debian/CentOS系列

  1. 运行以下命令,解压cloud-init安装包:

    tar -zxvf cloud-init-21.1.tar.gz
    
  2. 运行以下命令,进入已解压的cloud-init安装包目录:

    cd cloud-init-21.1
    
  3. 运行以下命令,安装cloud-init:

    • CentOS 7.2/7.3

      pip3 install MarkupSafe jinja2 oauthlib six configobj pyyaml urllib3 idna certifi charset-normalizer requests jsonpointer jsonpatch attrs pyrsistent zipp typing-extensions importlib-metadata jsonschema -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
      python3 setup.py build
      python3 setup.py install --init-system systemd
      cd ..
      ln -s /usr/local/bin/cloud-init /usr/bin/cloud-init
      ln -s /usr/local/bin/cloud-init-per /usr/bin/cloud-init-per
      ln -s /usr/local/bin/cloud-id /usr/bin/cloud-id
      
    • CentOS 7/8系列(除7.2、7.3外)

      pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
      python3 setup.py build
      python3 setup.py install --init-system systemd
      cd ..
      ln -s /usr/local/bin/cloud-init /usr/bin/cloud-init
      ln -s /usr/local/bin/cloud-init-per /usr/bin/cloud-init-per
      ln -s /usr/local/bin/cloud-id /usr/bin/cloud-id
      
    • Debian系列

      pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
      pip3 install six==1.16.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
      python3 setup.py build
      python3 setup.py install --init-system systemd
      cd ..
      ln -s /usr/local/python3/bin/cloud-init /usr/local/bin/cloud-init
      ln -s /usr/local/python3/bin/cloud-init /usr/bin/cloud-init
      ln -s /usr/local/python3/bin/cloud-init-per /usr/local/bin/cloud-init-per
      ln -s /usr/local/python3/bin/cloud-init-per /usr/bin/cloud-init-per
      ln -s /usr/local/python3/bin/cloud-id /usr/local/bin/cloud-id
      ln -s /usr/local/python3/bin/cloud-id /usr/bin/cloud-id
      
  4. 运行以下命令,使cloud-init开机自启动:

    • CentOS 7/8与Debian系列
      systemctl enable cloud-init-local.service
      systemctl enable cloud-init.service
      systemctl enable cloud-config.service
      systemctl enable cloud-final.service
      
  5. 运行以下命令,查看cloud-init版本,验证是否安装成功:

    cloud-init --version
    
  6. 修改cloud-init配置

根据您的操作系统版本,按需选择对应的执行步骤来修改cloud-init配置,使其符合平台规范。

  • CentOS 7/8系列
    运行以下命令配置cloud-init:

    cat > /etc/cloud/cloud.cfg.d/90_dpkg.cfg << EOF
    datasource_list: [ ConfigDrive, NoCloud, None ]
    EOF
    cat > /etc/cloud/cloud.cfg << EOF
    users:
     - default
    disable_root: 0
    ssh_pwauth:   1
    growpart:
        mode: auto
        devices: ['/']
        ignore_growroot_disabled: false
    mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service', '0', '2']
    resize_rootfs_tmp: /dev
    ssh_deletekeys:   1
    syslog_fix_perms: ~
    disable_vmware_customization: false
    cloud_init_modules:
     - disk_setup
     - migrator
     - bootcmd
     - write-files
     - growpart
     - resizefs
     - set_hostname
     - update_hostname
     - update_etc_hosts
     - rsyslog
     - users-groups
     - ssh
    cloud_config_modules:
     - mounts
     - locale
     - set-passwords
     - rh_subscription
     - yum-add-repo
     - package-update-upgrade-install
     - timezone
     - puppet
     - chef
     - salt-minion
     - mcollective
     - disable-ec2-metadata
     - runcmd
    cloud_final_modules:
     - rightscale_userdata
     - scripts-per-once
     - scripts-per-boot
     - scripts-per-instance
     - scripts-user
     - ssh-authkey-fingerprints
     - keys-to-console
     - phone-home
     - final-message
     - power-state-change
    system_info:
      distro: rhel
      paths:
        cloud_dir: /var/lib/cloud
        templates_dir: /etc/cloud/templates
      ssh_svcname: sshd
    EOF
    
  • Ubuntu系列
    运行以下命令配置cloud-init:

    cat > /etc/cloud/cloud.cfg.d/90_dpkg.cfg << EOF
    datasource_list: [ ConfigDrive, NoCloud, None ]
    EOF
        cat > /etc/cloud/cloud.cfg << EOF
    users:
     - default
    disable_root: 0
    ssh_pwauth:   1
    growpart:
        mode: auto
        devices: ['/']
        ignore_growroot_disabled: false
    mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service', '0', '2']
    resize_rootfs_tmp: /dev
    ssh_deletekeys:   1
    syslog_fix_perms: ~
    disable_vmware_customization: false
    cloud_init_modules:
     - disk_setup
     - migrator
     - bootcmd
     - write-files
     - growpart
     - resizefs
     - set_hostname
     - update_hostname
     - update_etc_hosts
     - rsyslog
     - users-groups
     - ssh
    cloud_config_modules:
     - mounts
     - locale
     - set-passwords
     - rh_subscription
     - yum-add-repo
     - package-update-upgrade-install
     - timezone
     - puppet
     - chef
     - salt-minion
     - mcollective
     - disable-ec2-metadata
     - runcmd
    cloud_final_modules:
     - rightscale_userdata
     - scripts-per-once
     - scripts-per-boot
     - scripts-per-instance
     - scripts-user
     - ssh-authkey-fingerprints
     - keys-to-console
     - phone-home
     - final-message
     - power-state-change
    system_info:
      paths:
        cloud_dir: /var/lib/cloud
        templates_dir: /etc/cloud/templates
      ssh_svcname: sshd
    EOF
    
  • Debian系列
    运行以下命令配置cloud-init:

    cat > /etc/cloud/cloud.cfg.d/90_dpkg.cfg << EOF
    datasource_list: [ ConfigDrive, NoCloud, None ]
    EOF
    cat > /etc/cloud/cloud.cfg << EOF
    users:
     - default
    disable_root: true
    ssh_pwauth:   1
    growpart:
        mode: auto
        devices: ['/']
        ignore_growroot_disabled: false
    mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service', '0', '2']
    resize_rootfs_tmp: /dev
    ssh_deletekeys:   1
    syslog_fix_perms: ~
    disable_vmware_customization: false
    cloud_init_modules:
     - disk_setup
     - migrator
     - bootcmd
     - write-files
     - growpart
     - resizefs
     - set_hostname
     - update_hostname
     - update_etc_hosts
     - rsyslog
     - users-groups
     - ssh
    cloud_config_modules:
     - mounts
     - locale
     - set-passwords
     - rh_subscription
     - yum-add-repo
     - package-update-upgrade-install
     - timezone
     - puppet
     - chef
     - salt-minion
     - mcollective
     - disable-ec2-metadata
     - runcmd
    cloud_final_modules:
     - rightscale_userdata
     - scripts-per-once
     - scripts-per-boot
     - scripts-per-instance
     - scripts-user
     - ssh-authkey-fingerprints
     - keys-to-console
     - phone-home
     - final-message
     - power-state-change
    system_info:
      distro: debian
      paths:
        cloud_dir: /var/lib/cloud
        templates_dir: /etc/cloud/templates
      ssh_svcname: sshd
    EOF
    

四、更新系统配置

说明

更新系统配置前,须确保已安装cloud-init。

  • CentOS系列
    运行以下命令,修改系统网络配置:

    #!/bin/bash
    sed -i "s/^#UseDNS.*$/UseDNS no/" /etc/ssh/sshd_config
    sed -i 's/NAME="eth0"/DEVICE="eth0"/g' /etc/sysconfig/network-scripts/ifcfg-eth0
    release=$(rpm -E %{rhel})
    if [ $release -eq 6 ]; then
        chkconfig iptables off
    else
        systemctl disable firewalld
    fi
    #update common config
    echo  "net.ipv4.conf.all.rp_filter = 0" >> /etc/sysctl.d/99-sysctl.conf
    cat /etc/centos-release | grep "release 7"
    if [ $? -eq 0 ]; then
        systemctl disable NetworkManager
        systemctl enable network
    fi
    

    说明

    • 以下命令,仅在使用本地导入的镜像创建实例、且实例需使用负载均衡功能时必须执行:

      echo "net.ipv4.conf.all.rp_filter = 0" >> /etc/sysctl.d/99-sysctl.conf

    • 当不存在/etc/sysconfig/network-scripts/ifcfg-eth0文件时,无需运行以下命令:

      sed -i 's/NAME="eth0"/DEVICE="eth0"/g' /etc/sysconfig/network-scripts/ifcfg-eth0

  • Ubuntu系列
    运行以下命令,修改系统网络配置:

    #!/bin/bash
    #update network config
    cat <<EOF > /etc/network/interfaces
    # This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).
    source /etc/network/interfaces.d/*
    EOF
    systemctl disable systemd-resolved.service
    systemctl stop systemd-resolved
    systemctl mask systemd-networkd.service
    systemctl mask systemd-networkd-wait-online.service
    
  • Debian系列
    运行以下命令,修改系统网络配置:

    #!/bin/bash
    #update network
    cat <<EOF > /etc/network/interfaces
    # This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).
    source /etc/network/interfaces.d/*
    EOF
    

五、安装必要驱动(仅适用于CentOS操作系统)

说明

在initramfs文件中添加驱动前,须确保已安装cloud-init。

对于CentOS操作系统,需要在initramfs文件中添加必要的驱动,使系统能够正常启动。
运行以下命令重新制作initramfs文件:

#!/bin/bash
KERNEL_VERSION=`uname -r`
dracut --force --add-drivers "mpt3sas nvme-fcloop nvmet-fc nvmet-rdma nvme-loop nvmet nvme-core nvme-fabrics nvme-fc nvme nvme-rdma i40e megaraid_sas" --kver ${KERNEL_VERSION}        

六、将镜像格式转换为QCOW2

步骤一:获取VMDK格式的镜像文件
查看虚拟磁盘文件(虚拟机镜像文件)在本地的存储位置,然后将该文件传输到支持qemu-img工具的Linux操作系统中。例如,本示例中创建的虚拟机使用的是支持qemu-img工具的Linux操作系统,可以将文件直接传输到该操作系统中。
文件传输方式有多种。以下内容描述使用scp命令传输文件的一种方式,供您参考。实际运行命令时,请将变量替换为实际的值。

  • 从本地传输文件到远程服务器

    scp /path/to/local/file username@remote_host:/path/to/remote/directory/
    
  • 从远程服务器传输文件到本地

    scp username@remote_host:/path/to/remote/file /path/to/local/directory/
    

    Image

步骤二:转换镜像文件格式

  1. 运行以下命令,确认系统中是否已安装qemu-img工具:

    qemu-img --version
    

    如果系统中安装了qemu-img工具,该命令会输出qemu-img工具的版本信息。如果系统中没有安装qemu-img工具,该命令会提示“command not found”。
    如果系统中没有安装qemu-img工具,运行以下命令安装qemu-img:

    • CentOS系列:

      yum install qemu-img
      
    • Debian/Ubuntu系列:

      apt-get install qemu-utils
      
  2. 运行以下命令将VMDK格式的镜像文件转换为QCOW2格式:

    qemu-img convert -f vmdk -O qcow2 <源虚拟磁盘文件的名称> <目标虚拟磁盘文件的名称>
    

    示例:

    qemu-img convert -f vmdk -O qcow2 centos_1.vmdk centos_1.qcow2
    

后续操作
  1. 导入镜像
    转换镜像文件的格式后,您可以将镜像文件传输到本地,然后导入镜像。
    1. 传输文件
      文件传输方式有多种。以下内容描述使用scp命令传输文件的一种方式,供您参考。实际运行命令时,请将变量替换为实际的值。

      • 从本地传输文件到远程服务器
      scp /path/to/local/file username@remote_host:/path/to/remote/directory/
      
      • 从远程服务器传输文件到本地
      scp username@remote_host:/path/to/remote/file /path/to/local/directory/
      
    2. 导入镜像
      导入镜像的步骤,请参考导入镜像
      导入边缘裸金属实例的镜像时,请关注以下限制:

      • 边缘裸金属只支持Linux镜像。
      • 对于Linux镜像:只能使用MBR分区和ext3/4文件系统。
      • 对于通过本地镜像方式导入的镜像,镜像文件的格式须是QCOW2。
      • 镜像大小默认不能超过50GB。
      • 镜像引导方式须是UEFI。
  2. 创建实例
    关于如何使用自定义镜像创建实例,请参考创建边缘服务。在创建过程中,选择您导入的镜像。