交易|基于libvirt 和QEMU在macOS下安装Linux

交易|基于libvirt 和QEMU在macOS下安装Linux

文章图片

交易|基于libvirt 和QEMU在macOS下安装Linux

文章图片



在流行的虚拟架构体系中 , 最重要的技术当然要数libvirt和QEMU了 。 包括Linux虚拟化技术中KVM和xen都使用了QEMU 。 关于Xen和KVM进行虚拟化 , 以及在Window下使用Vmware , VirtualBox和hyper-v构建虚拟机 , 可能大家都有过很多的尝试 。 今天我们来探索一下在macOS的用libvirt和QEMU构建虚拟机的方法 。
概述首先我们概要介绍一下QEMU和libvirt 。
QEMUQEMU由Fabrice Bellard开发的的CPU开源模拟器 , QEMU支持高性能扩平台 , 可以虚拟出不同架构的虚拟机 , 如在x86平台上可以虚拟出Solaris来 。

libvirtlibvirt是当最常用的KVM虚拟机管理的开源工具和API 。 以Libvirtd为守护进程 , 可以被本地或者远程调用 , Libvirtd通过调用qemu-kvm操作虚拟机 。 libvirt由红帽公司开发并用于KVM管理 , 也支持Xen等虚拟架构下的管理 。 libvirt旨在为各种虚拟机架构提供一套通用的编程接口 , 而且支持与Java , Python多种语言的绑定 , 所以涌现了一批基于基libvirt的虚拟机管理工具 , 比如virt-manager(GUI工具) , virsh(命令行工具) 。 其架构示意图如下:

MacOS下的虚拟方案在MacOS支持收费的虚拟机方案 , 比如Parallels Desktop和VMWare Fusion , 也有一个开源的VirtualBox 。 但是 , VirtualBox不支持macOS的Hypervisor.Framework 。
安装libvirt和QEMU首先 , 确保macOS安装了 , 软件包管理器homebrew 。 此后其他包都用它来安装 。
运行一下命令安装qemu和libvirt:
brew install qemu gcc libvirt
如果安装了libvirt6.6.0版本会导致安装失败 , 这时候请在Terminal中运行以下命令:
for f in /usr/local/Cellar/libvirt/6.6.0/lib/libvirt/*/*.bundle; do
ln -s $f ${f%.bundle.so;
done
由于macOS不支持QEMU安全功能 , 因此禁用:
echo 'security_driver = \"none\"' >> /usr/local/etc/libvirt/qemu.conf
echo \"dynamic_ownership = 0\" >> /usr/local/etc/libvirt/qemu.conf
echo \"remember_owner = 0\" >> /usr/local/etc/libvirt/qemu.conf
最后启动libvirt服务:
brew services start libvirt
Ubuntu Server 20.04镜像准备和安装有两种方法可以使用VNC客户端或virt-viewer来 , 查看虚拟机界面 。 推荐RealVNC Viewer 。 VNC客户端响应迅速且安装迅速 , 但是如果有多个VM , 则需要手动管理不同的端口 。 使用virt-viewer , 会弹出一个弹出窗口 , 其中包含当前正在运行的所有VM , 但是它很耗时 , 并且安装需要很长时间 。
在主目录中创建一个文件夹vms , 并生成一个磁盘映像 。 更改50g为首选磁盘的大小:
mkdir ~/vms && cd ~/vms
qemu-img create -f qcow2 ubuntu.qcow2 50g
下载Ubuntu Server 20.04安装包和和libvirt XML配置模板 , 然后将.iso和.xml文件放在同一文件夹中 。
修改ubuntu.xml文件中的以下元素 , 以匹配VM首选项和对应文件路径 。
<domain type='qemu' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
<name>ubuntu</name>
<memory unit='GB'>50</memory>
<vcpu>2</vcpu>
...
<disk type='file' device='disk'>
<source file='qcow2文件绝对路径'/>
...
<disk type='file' device='cdrom'>
<source file='安装ISO截止绝对路径'/>
保存 , 然后运行virsh define ubuntu.xml之后virsh start ubuntu 。
启动RealVNC Viewer并连接到localhost 。 单击Ctrl+Alt+Del按钮重新启动计算机 , 然后快速按Esc进入启动菜单 。 按与Ubuntu Server映像匹配的数字 。

正常安装Ubuntu Server , 确保启用SSH服务器 。 重新启动后 , 可以通过运行从终端连接到VM ssh -p 2222 user@localhost 。
要将关闭VM , 请运行virsh shutdown ubuntu 。
要强制关闭 , 请运行virsh destroy ubuntu 。
要将端口(例如 , 端口443)从VM转发到本地的端口8443 , 请运行以下命令:
ssh -p 2222 -L8443:localhost:443 user@localhost
多个虚拟机支持如果要创建多个VM , 请为每台计算机创建一个具有唯一UUID , VM名称和VNC端口的XML文件 。 由于不支持桥接 , 虚拟不能自动网络 , 所以更改hostfwd参数 , 给每个VM的SSH公开一个不同的端口 , 例如2223代替2222 。
定义所有它们之后 , 可以获得当前正在运行的VM的列表:
【交易|基于libvirt 和QEMU在macOS下安装Linux】virsh list 。


    推荐阅读