👉点击这里申请火山引擎VIP帐号,立即体验火山引擎产品>>>
操作场景
前提条件
CentOS 7.x 系列
CentOS 8.x 系列
Ubuntu 系列
Debian 系列
第一步:宿主机环境准备(可选)
配置宿主机。
准备一台物理服务器作为镜像制作服务器(即宿主机)。
宿主机操作系统的发行版无硬性要求,本文宿主机为X86架构并安装图形化界面(GUI)的CentOS 7.9操作系统。
登录宿主机。
执行如下命令,确认宿主机已开启虚拟化能力。
egrep '(vmx|svm)' /proc/cpuinfo

执行如下命令,确认宿主机内核高于3.10版本。
uname -r

安装虚拟化软件。
执行如下命令,安装KVM与相关软件包。
yum install -y qemu-kvm libvirt libvirt-python libvirt-client
执行如下命令,启动libvirtd服务。
systemctl start libvirtdsystemctl enable libvirtd # 执行本命令可配置libvirtd服务开机自启动
执行如下命令,确认libvirtd服务是否启动成功。
systemctl status libvirtd

执行如下命令,安装virt-manager。
yum install -y virt-manager
创建启动模式为UEFI的虚拟机时,还需完成如下配置。
请执行如下命令,安装OVMF。
若您的宿主机操作系统源中没有edk2-ovmf,请执行wget --no-check-certificate http://www.kraxel.org/repos/firmware.repo -O /etc/yum.repos.d/firmware.repo命令,安装firmware源。
本文宿主机与创建的虚拟机均为X86_64架构,若您创建其他架构虚拟机,请安装相应架构的OVMF。
yum install -y edk2.git-ovmf-x64.noarch
配置libvirtd以启用UEFI。
执行如下命令,并按i键进入编辑模式。
vim /etc/libvirt/qemu.conf
在配置文件中插入如下内容,将OVMF和运行时变量模板添加到libvirt配置中。
请将nvram参数中路径替换为您安装OVMF的实际路径。
nvram = ["/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd:/usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd"]
按ecs键,并输入:wq按回车键,保存并退出。
执行如下命令,重启libvirtd服务。
systemctl restart libvirtd
开启宿主机ip_forward功能。
执行如下命令,配置ip_forward功能。
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
执行如下命令,使配置生效。
sysctl -p
第二步:在宿主机上创建虚拟机
在宿主机中准备基础镜像,请使用文件系统为EXT3、EXT4的单分区镜像,并且不要创建任何分区,否则可能出现自动扩容或启动异常问题。
建议您使用官方镜像。
若您可选的镜像文件包括QCOW2、ISO两种格式,建议选择ISO镜像。
执行如下命令,打开virt-manager。
virt-manager

单击新建图标,开启新建虚拟机向导。

选择“Loca install media(ISO image or CDROM)”选项并单击“Forward”按钮,使用您准备的基础镜像安装虚拟机操作系统.。

单击“Browse...”按钮,打开选择窗口。

单击“Browse Local”按钮打开宿主机存储目录,选择您在宿主机中准备的基础镜像,单击“Open”按钮确认并返回新建虚拟机向导。

取消勾选“Automatically detect operating system based on install media”选项,根据使用的镜像信息自行选择“OS type”(镜像类型)与“Version”(发行版本)。

单击“Forward”按钮,配置虚拟机内存与CPU信息。
您不能分配超过宿主机系统中可用的物理处理器(或超线程)的虚拟CPU,可用的虚拟CPU数量可查看相应配置框下方Up to X available信息。

单击“Forward”按钮,配置创建的磁盘镜像大小。
请考虑虚拟机启用及需要在其中安装的应用程序,为其分配足够的空间。

单击“Forward”按钮,配置虚拟机名称与网络,并勾选“Customize configuration before install”。
虚拟机名称可以包含字母、数字和以下字符:下划线(_)、句号(.)和连字符(-)。
网络配置默认为Virtual network 'default' : NAT',如需更改,请在“Network selection”模块下拉选择。

确认虚拟机配置后,单击“Finish”按钮创建虚拟机。
在个性化定制页面中,可以配置虚拟机启动模式为UEFI或调整虚拟机硬件配置。启动模式调整步骤如下:
在左侧目录树选择“Overview”。
在“Hypervisor Details”模块的“Firmware”选项下拉选择UEFI,单击“Apply”按钮即可配置虚拟机启动模式为UEFI。

跟随安装指引进入虚拟机配置页面时,需要您进入网络配置页面开启网络连接。
单击“NETWORK & HOST NAME”按钮,进入网络配置页面。

单击开启选项,确认开启网络连接后,单击左上角“Done”按钮,保存并回到个性化配置页面。

完成其他个性化配置后,单击“Continue”按钮,跟随指引完成虚拟机安装。
第三步:修改虚拟机文件
修改/etc/fstab文件
执行如下命令,打开/etc/fstab文件。
vi /etc/fstab
按i键进入编辑模式,并注释或删除数据盘目录信息。
按ESC键输入:wq按回车键,保存并退出编辑。
修改启动引导文件(可选)
第四步:在虚拟机上安装Cloud-init
依次执行以下命令,安装Python3版本和cloud-init依赖。
请选择Python3.6以上版本进行安装,否则会出现Python3和部分pip包不兼容的情况,影响cloud-init运行。
建议您从Python官网手动下载安装Python3。
安装并配置Cloud-init。
第五步:在虚拟机上安装驱动
安装Virtio驱动
步骤一:确认内核是否支持Virtio驱动
grep -i virtio /boot/config-$(uname -r)

结果 | 说明 |
参数值为m | 表示该操作系统内核支持Virtio驱动。 请执行步骤二,确认临时文件系统initramfs或initrd中是否包含Virtio驱动。 |
参数值为y | 表示该操作系统内核已经包含了Virtio驱动,您可以请继续安装Virtio1.1驱动。 |
没有这两个参数 | 表示该操作系统内核不支持Virtio驱动。您需要为自行编译安装Virtio驱动。 |
步骤二:确认临时文件系统是否包含Virtio驱动

回显如上图所示,存在Virtio驱动相关信息,表示临时文件系统initramfs已经包含了virtio_blk驱动,及其依赖的virtio.ko、virtio_pci.ko和virtio_ring.ko,请继续安装Virtio1.1驱动。
若回显为空,表示临时文件系统没有包含Virtio驱动,请执行步骤三修复临时文件系统。
步骤三:修复临时文件系统
步骤四:验证修复结果
安装Virtio1.1驱动
系统架构 | 类型 | 实例规格 |
x86计算 | 通用型 |
|
计算型 |
| |
内存型 |
| |
本地SSD型 | 本地SSD型i3s | |
弹性裸金属 | 所有弹性裸金属实例规格 | - |
异构计算 | GPU计算型 | GPU计算型gni3 |
若您在虚拟机中上传的基础镜像是veLinux、CentOS 8.3(及以上版本)、Ubuntu Server 20.xx(及以上版本)及Debian 11(及以上版本)镜像,创建任意规格实例均无需安装Virtio1.1驱动,请跳过此步骤。
安装驱动前:
请为虚拟机安装kernel-headers和kernel-devel,并确保与kernel版本一致,否则可能会出现安装驱动失败的情况(如有升级kernel,请重启后再安装驱动)。您也可以根据驱动源代码进行编译适配,或提交工单获取支持。
确保虚拟机可以访问公网。
安装驱动后,若您在实例内更换了内核版本,需重新安装适配该内核版本的Virtio1.1驱动,否则可能导致实例无法正常使用。
如果您的镜像用于采用LTS-内核的弹性裸金属实例,请参考在虚拟机上安装LTS-内核与Virtio1.1驱动进行操作。
执行如下命令,下载Virtio1.1驱动管理脚本。
wget -O virtio_tool https://virtio11-drivers.tos-cn-beijing.volces.com/virtio_tool_1.1.1
执行如下命令,为脚本文件添加执行权限。
chmod +x ./virtio_tool
在virtio_tool文件所在目录中,执行如下命令,检查Virtio1.1驱动版本是否符合要求。
./virtio_tool -check
若回显如下所示,表示您的虚拟机中已安装符合要求的Virtio1.1驱动,请跳过本节。

若回显如下所示,表示您的虚拟机中未安装符合要求的Virtio1.1驱动,请继续执行本节操作。

通过virtio_tool安装Virtio1.1驱动。
安装LTS-内核与Virtio1.1驱动(可选)
如果您的镜像用于为弹性裸金属实例但不采用LTS-内核的方式,请参考在虚拟机上安装Virtio1.1驱动进行操作。
此操作不可以直接在裸金属实例上执行,需要在火山ECS虚拟机上执行,制作自定义镜像后给裸金属实例使用。
本节仅提供一种裸金属实例使用自定义内核的思路与方法。
整体安装流程:
若存在旧版本的Virtio1.1驱动,需先将其删除。
在火山引擎ECS实例中安装LTS-内核,并重启到指定版本的LTS-内核。
安装LTS-内核版本指定的Virtio1.1驱动包。
更新initramfs/initrd,并重启实例查看是否正常。
执行如下命令,通过公网下载Virtio1.1驱动管理脚本。
wget -O virtio_tool https://virtio11-drivers.tos-cn-beijing.volces.com/virtio_tool_1.1.1
执行如下命令,为脚本文件添加执行权限。
chmod +x ./virtio_tool
在virtio_tool文件所在目录中,执行如下命令,检查虚拟机是否已经安装了Virtio1.1驱动。
./virtio_tool -check
若回显如下所示,表示您的虚拟机中已安装Virtio1.1驱动。

./virtio_tool -uninstall

若回显如下所示,表示您的虚拟机中未安装Virtio1.1驱动,请继续后续操作。

安装内核与驱动。
安装MLNX驱动(可选)
第六步:在虚拟机中安装插件
密码插件
blk-none
云监控插件
第七步:在虚拟机中安装个性化软件(可选)
第八步:检测镜像规范
第九步:导出镜像
在虚拟机界面顶部选择“Virtual Machine > Shut Down > Shut Down”关闭虚拟机。

在宿主机中执行如下命令,打开存放镜像的文件夹,通过虚拟机名称即可查看镜像文件。
xdg-open /var/lib/libvirt/images/
