searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

从零搭建ARM架构虚拟机

2023-05-25 07:21:06
238
0

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

 

0条评论
0 / 1000
h****n
2文章数
0粉丝数
h****n
2 文章 | 0 粉丝
h****n
2文章数
0粉丝数
h****n
2 文章 | 0 粉丝
原创

从零搭建ARM架构虚拟机

2023-05-25 07:21:06
238
0

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

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0