Preparing VMs

This document describes how to use virt manager to install a VM. Ignore if your VM is prepared.

Installing Dependency Tools

VM installation depends on related tools. The following command is an example for installing the dependency and enabling the libvirtd service. (If a proxy is required, configure the proxy first.)

dnf install virt-install virt-manager libvirt-daemon-qemu edk2-aarch64.noarch virt-viewer
systemctl start libvirtd
systemctl enable libvirtd

Preparing VM Disk Files

dnf install -y qemu-img
virsh pool-define-as vmPool --type dir --target /mnt/vm/images/
virsh pool-build vmPool
virsh pool-start vmPool
virsh pool-autostart  vmPool
virsh vol-create-as --pool vmPool --name master0.img --capacity 200G --allocation 1G --format qcow2
virsh vol-create-as --pool vmPool --name master1.img --capacity 200G --allocation 1G --format qcow2
virsh vol-create-as --pool vmPool --name master2.img --capacity 200G --allocation 1G --format qcow2
virsh vol-create-as --pool vmPool --name node1.img --capacity 300G --allocation 1G --format qcow2
virsh vol-create-as --pool vmPool --name node2.img --capacity 300G --allocation 1G --format qcow2
virsh vol-create-as --pool vmPool --name node3.img --capacity 300G --allocation 1G --format qcow2

Enabling Firewall Ports

Method 1

  1. Query a port.

    netstat -lntup | grep qemu-kvm
  2. Enable the VNC firewall port. For example, if the port number starts from 5900, run the following commands:

    firewall-cmd --zone=public --add-port=5900-6000/tcp

Method 2

Disable the firewall.

systemctl stop firewalld

Preparing the VM Configuration File

A VM configuration file is required for creating a VM. For example, if the configuration file is master.xml and the host name of the VM is k8smaster0, the configuration is as follows:

 cat master.xml

<domain type='kvm'>
    <memory unit='GiB'>8</memory>
 <type arch='aarch64' machine='virt'>hvm</type>
 <loader readonly='yes' type='pflash'>/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw</loader>
 <gic version='3'/>
    <cpu mode='host-passthrough'>
        <topology sockets='2' cores='4' threads='1'/>
    <clock offset='utc'/>
 <disk type='file' device='disk'>
     <driver name='qemu' type='qcow2' iothread="1"/>
     <source file='/mnt/vm/images/master0.img'/>
     <target dev='vda' bus='virtio'/>
     <boot order='1'/>
 <disk type='file' device='cdrom'>
     <driver name='qemu' type='raw'/>
     <source file='/mnt/openEuler-20.03-LTS-SP2-everything-aarch64-dvd.iso'/>
     <target dev='sdb' bus='scsi'/>
     <boot order='2'/>
        <interface type='network'>
           <mac address='52:54:00:00:00:80'/>
           <source network='default'/>
           <model type='virtio'/>
 <console type='pty'/>
           <model type='virtio'/>
        <controller type='scsi' index='0' model='virtio-scsi'/>
 <controller type='usb' model='ehci'/>
 <input type='tablet' bus='usb'/>
 <input type='keyboard' bus='usb'/>
 <graphics type='vnc' listen=''/>
    <seclabel type='dynamic' model='dac' relabel='yes'/>

The VM configuration must be unique. Therefore, you need to modify the following to ensure that the VM is unique:

  • name: host name of the VM. You are advised to use lowercase letters. In this example, the value is k8smaster0.
  • nvram: handle file path of the NVRAM, which must be globally unique. In this example, the value is /var/lib/libvirt/qemu/nvram/k8smaster0.fd.
  • disk source file: VM disk file path. In this example, the value is /mnt/vm/images/master0.img.
  • mac address of the interface: MAC address of the interface. In this example, the value is 52:54:00:00:00:80.

Installing a VM

  1. Create and start a VM.

    virsh define master.xml
    virsh start k8smaster0
  2. Obtain the VNC port number of the VM.

    virsh vncdisplay k8smaster0
  3. Use a VM connection tool, such as VNC Viewer, to remotely connect to the VM and perform configurations as prompted.

  4. Set the host name of the VM, for example, k8smaster0.

    hostnamectl set-hostname k8smaster0




提交类型 issue

● 错别字或拼写错误;标点符号使用错误;

● 链接错误、空单元格、格式错误;

● 英文中包含中文字符;

● 界面和描述不一致,但不影响操作;

● 表述不通顺,但不影响理解;

● 版本号不匹配:如软件包名称、界面版本号;


● 关键步骤错误或缺失,无法指导用户完成任务;

● 缺少必要的前提条件、注意事项等;

● 图形、表格、文字等晦涩难懂;

● 逻辑不清晰,该分类、分项、分步骤的没有给出;


● 技术原理、功能、规格等描述和软件不一致,存在错误;

● 原理图、架构图等存在错误;

● 命令、命令参数等错误;

● 代码片段错误;

● 命令无法完成对应功能;

● 界面错误,无法指导操作;


● 对重要数据或系统存在风险的操作,缺少安全提示;


● 违反法律法规,涉及政治、领土主权等敏感词;

● 内容侵权;