.. _arm_kvm_startup: ==================== ARM环境KVM快速起步 ==================== ARM对虚拟化支持最初是从ARMv7-A处理器开始对额,包括Cortex-A15(ARM A系列第一款支持硬件虚拟化), Cortex-A7 和 Cortex-A17。而ARMv8-A 处理器也支持虚拟化。 :ref:`arm_kvm_support` 我的ARM测试环境是 :ref:`raspberry_pi` 的 :ref:`pi_4` ,根据硬件规格,采用的是 4核心Cortex-A72(ARM v8) 64位处理。 安装 ======= Ubuntu for ARM ----------------- - 安装libvirt:: sudo apt install qemu-system-arm libvirt-daemon-system virtinst bridge-utils .. note:: 虽然不安装libvirt也能够直接通过 ``qemu`` 来直接运行虚拟机,但是 :ref:`libvirt` 提供了通用且丰富的管理功能,方便我们维护qemu虚拟化。 对于 x86 平台,安装 ``qemu-kvm`` 代替 ``qemu-system-arm`` .. note:: ``virtinst`` 软件包提供了 ``virt-install`` 命令行维护工具 ``bridge-utils`` 软件包提供了 ``brctl`` 维护bridge的工具 - 安装完成后 ``libvirtd`` 已经自动启动,通过以下命令检查状态:: sudo systemctl status libvirtd - 执行 ``sudo virsh list`` 可以检查是否可以正常访问 libvirt 服务 - 将需要管理虚拟化的用户账号,例如当前账号 ``huatai`` 添加到 ``libvirt`` 组,这样就不需要 ``sudo`` 就可以管理:: sudo adduser $USER libvirt Fedora for ARM ----------------- .. note:: 我暂时没有Fedora环境验证,本段落摘自 `How to Enable KVM Virtualization on Raspberry Pi 4 `_ - 首先更新DNF软件包仓库缓存:: sudo dnf makecache - 安装KVM以及所有相关工具,在Fedora上只需要以group方式安装 ``Virtualizaiont`` :: sudo dnf group install "Virtualization" - 将本登陆用户添加到 ``libvirt`` 组:: sudo usermod -aG libvirt $(whoami) - 重启系统:: sudo reboot CentOS/RHEL for ARM ----------------------- .. note:: 暂未实践,本段落摘自 「Red Hat Enterprise Linux 7 Virtualization Deployment and Administration Guide > B.3 Using KVM Virtualization on ARM」 - 使用以下命令安装ARM虚拟化软件堆栈(注意:需要激活 ``Optional`` 通道):: yum install qemu-kvm-ma libvirt libvirt-client virt-install AAVMF NAT网络 ========== 在 :ref:`pi_4` 上运行 :ref:`kali_linux` 版本libvirt,有可能默认没有激活任何虚拟网络(即 ``default`` 网络,也就是NAT网络)。可以参考 :ref:`libvirt_nat_network` 检查和激活: - 检查libvirt网络:: virsh net-list 输出显示是空白:: Name State Autostart Persistent ---------------------------------------- - 检查所有libvirt网络(包括没有激活的网络):: virsh net-list --all 显示有一个 ``default`` 网络没有激活:: Name State Autostart Persistent ---------------------------------------------- default inactive no yes - 激活 ``default`` 网络并设为默认启动:: virsh net-start default virsh net-autostart default - 然后检查验证:: virsh net-list 显示状态:: Name State Autostart Persistent -------------------------------------------- default active yes yes 安装虚拟机 ================ Ubuntu提供了官方Ubuntu Server ARM版本,可以作为KVM虚拟机运行在 :ref:`pi_4` 上。从 `Ubuntu downloads `_ 下载 `Ubuntu Server for ARM iso镜像 `_ ,我这里下载的是 ``Ubuntu 20.04.2 LTS`` 版本。 下载的iso镜像移动到 ``/var/lib/libvirt/images/`` 目录下 如果你运行的是Linux 桌面版本 for ARM,可以运行一个 Virtual Machine Manager (VMM) 图形化程序来安装运行虚拟机。不过,我比较喜欢命令行操作,所以和 :ref:`create_vm` 采用相同方法创建虚拟机:: virt-install \ --network bridge:virbr0 \ --name ubuntu20.04 \ --ram=2048 \ --vcpus=2 \ --os-type=ubuntu20.04 \ --disk path=/var/lib/libvirt/images/ubuntu20.04.qcow2,format=qcow2,bus=virtio,cache=none,size=16 \ --graphics none \ --cdrom=/var/lib/libvirt/images/ubuntu-20.04.2-live-server-arm64.iso 其他可以安装的ARM虚拟机发行版: - `Fedora ARM发行版 `_ 请下载ARM aarch64架构服务器版本,例如 Fedora Server netinstall iso 或者 Fedora Minimal (raw镜像)。此外,Fedora还发布了 Fedora CoreOS 版本(2020年5月26日起替代了原先基于Gentoo Linux开发的Container Linux),如果希望专注运行容器或Kubernetes容器编排集群,则建议采用 Fedora CoreOS for ARM - `CentOS.org `_ 提供的 CentOS Linux 或 CentOS Stream (滚动发布) 发行版,都提供了 aarch64 的ARM版本 .. note:: Ubuntu Server版本默认启用了snapd提供snap安装支持,如果不需要(例如我主要使用docker容器化),我建议 :ref:`disable_snap` 参考 ====== - `KVM Process support `_ - `How to Enable KVM Virtualization on Raspberry Pi 4 `_ - 使用 Fedora 33 on :ref:`pi_4` 来运行KVM虚拟化 - `Ubuntu wiki arm64/QEMU `_