.. _intro_lima: =================== Lima简介 =================== 在很久以前,我尝试在 :ref:`macos` 上运行Linux虚拟机,使用的是 :ref:`xhyve` ,其原理是包装和调用 :ref:`macos` 内置的 Hypervisor 来实现虚拟机运行。随着macOS虚拟化技术的发展,涌现出一些对标 :ref:`Windows` 上 ``WSL2`` 的开源项目和商用软件。其中, `lima-vm.io `_ 就是其中的佼佼者,社区发展迅速,不仅成为 ``CNCF沙箱项目`` ,而且也衍生出了很多容器化开源项目: Lima的优点是在启动Linux虚拟机同时会自动实现文件共享(file sharing)和端口转发(port forwarding),这对使用者非常友好,类似于Windows的WSL2。我的使用体验是,几乎无感知地将 :ref:`macos` 的数据目录作为Lima的本地磁盘,能够如同Linux上运行Docker一样以标准化的 :ref:`docker_volume` 挂载到容器内部。 容器环境 =========== 在Lima之上,开源社区有多个容器环境项目: - :ref:`rancher_desktop` - :ref:`colima` : 非常简单配置就能够在macOS上运行Docker和Kubernetes,该项目得到了Thoughtworks技术雷达的 "采纳推荐" (替代 :ref:`docker_desktop`) - `GitHub: Finch `_ 对标 :ref:`moby` 的macOS平台容器镜像构建工具 - `Podman Desktop `_ 使用一个插件来运行Lima虚拟机的Podman Desktop GUI GUI ========= 在 :ref:`macos` 平台,有以下帮助管理虚拟机的软件: - `lima-xbar-plugin `_ 使用 :ref:`xbar` 的管理VM启动、停止、状态等 - `lima-gui `_ 使用Qt开发的Lima管理器 限制和不足 ============ - Lima目前对USB设备共享支持不足(文档中没有关于如何共享Host主机的USB设备到虚拟机,根据issue搜索看来还没有支持): - `[POC] USB sharing with host #1317 `_ 目前还是讨论草稿: - 默认使用的VZ引擎( :ref:`apple_virtualization` ),但没有支持USB设备( `Apple Virtualization / USB Devices `_ 显示底层虚拟框架是支持USB设备的,似乎Lima还没有相关开发) - 如果使用 :ref:`qemu` 引擎,则可以通过 ``qemu-system-x86_64`` 命令参数 ``-device`` 将USB设备连接到虚拟机(启动VM前需要先连接USB设备并获取USB设备id) : 具体方法见 `Can I pass through a usb port via qemu command line `_ .. note:: 如果需要运行纯 ref:`qemu` 虚拟机,那么优先使用 :ref:`utm` (专注qemu虚拟化,交互方便) 如果在Apple Silicon硬件上运行,并且只使用 :ref:`linux` 和 :ref:`macos` 虚拟机,那么使用 :ref:`tart` 较好(完全 :ref:`apple_virtualization` 技术,且只专注Apple Silicon) 参考 ===== - `lima-vm.io `_ 官方文档见 `Lima Documentation `_ - `Lima FAQ: “How does Lima work?” `_ - `GitHub: lima-vm/lima `_