1 在宿主机安装 virsh相关组件
yum install qemu-img
yum install -y libvirt
yum install virt-install
yum install qemu-kvm
yum install qemu-kvm-tools
yum install virt-manager
2 开启libvirt服务
systemctl start libvirtd
systemctl enable libvirtd
3 下载ARM的centos7.6镜像文件,上传到宿主机
wget https://mirrors.aliyun.com/centos-vault/altarch/7.6.1810/isos/aarch64/CentOS-7-aarch64-Minimal-1810.iso?spm=a2c6h.25603864.0.0.21708428Ojgmcf
4 离线安装qemu-system-aarch64 及相关依赖
sudo yum install zlib-devel
sudo yum install glib2-devel
sudo yum install pixman-devel
wget https://download.qemu.org/qemu-2.11.0.tar.xz
tar xvJf qemu-2.11.0.tar.xz
cd qemu-2.11.0
./configure --target-list=aarch64-softmmu --enable-seccomp
make
sudo make install
5 edk2 离线安装 (edk2里面有UEFI固件)
https://support.huaweicloud.com/instg-kunpengcpfs/kunpengkvm_03_0006.html
6 应对 seccomp 的错误
vi /etc/libvirt/qemu.conf
#将seccomp_sandbox置为-1
若仍无法解决,则安装libseccomp补丁
https://cloud.tencent.com/developer/article/1162100
#中途需要一步步的根据问题进行指定组件安装和权限设置
#该连接上的libseccomp需要源码安装,解压后需要yum下载auto make组件
yum install auto make
aclocal
autoconf
autoheader
automake --add-missing
autoreconf -vif
./configure --enable-seccomp
#还需额外安装libtool
yum install libtool
在通过./configure 生成makefile时已经make,也会有几个错误,
--1.安装gperf : yum install gperf
--2.make前开放gperf权限
find / -name arch-gperf-generate
Chmod 777 [gperf]
./configure --enable-seccomp
7 创建磁盘文件
qemu-img create -f qcow2 /mnt/test.img 100G
8 创建xml配置文件,参考如下:
<domain type='kvm'>
<name>etcd01</name>
<uuid>ade35cf4-aace-4d8d-9a7b-2378c059c8a3</uuid>
<memory unit='KiB'>8388608</memory>
<currentMemory unit='KiB'>8388608</currentMemory>
<memoryBacking>
<source type='anonymous'/>
</memoryBacking>
<vcpu placement='static'>4</vcpu>
<os>
<type arch='aarch64' machine='virt-2.11'>hvm</type>
<loader readonly='yes' type='rom'>/usr/share/AAVMF/AAVMF_CODE.fd</loader>
<boot dev='hd'/>
<bootmenu enable='yes'/>
</os>
<features>
<gic version='3'/>
</features>
<cpu mode='host-passthrough' check='none'>
<topology sockets='1' dies='1' cores='4' threads='1'/>
</cpu>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/local/bin/qemu-system-aarch64</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/mnt/sdk/etcd01/cbr-src.img'/>
<target dev='sda' bus='scsi'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/mnt/sdk/CentOS-7-aarch64-Minimal-1810.iso'/>
<target dev='sdb' bus='scsi'/>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='1'/>
</disk>
<controller type='scsi' index='0' model='virtio-scsi'>
<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</controller>
<controller type='usb' index='0' model='qemu-xhci' ports='15'>
<address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
</controller>
<controller type='pci' index='0' model='pcie-root'/>
<controller type='pci' index='1' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='1' port='0x8'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0' multifunction='on'/>
</controller>
<controller type='pci' index='2' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='2' port='0x9'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='pci' index='3' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='3' port='0xa'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='pci' index='4' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='4' port='0xb'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x3'/>
</controller>
<interface type='network'>
<mac address='52:54:00:18:5f:2c'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target type='system-serial' port='0'>
<model name='pl011'/>
</target>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<input type='keyboard' bus='usb'>
<address type='usb' bus='0' port='1'/>
</input>
<input type='mouse' bus='usb'>
<address type='usb' bus='0' port='2'/>
</input>
<input type='tablet' bus='usb'>
<address type='usb' bus='0' port='3'/>
</input>
<video>
<model type='virtio' heads='1' primary='yes'/>
<address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
</video>
<memballoon model='none'/>
</devices>
</domain>
10 拉起虚机
virsh define test.xml
virsh start test
virsh console test