MacOS下绝佳的Linux虚拟工具 – Lima

做为程序员群体,我们经常需要使用Linux。而且可能会使用各种不同版本的Linux。可能是Ubuntu,也可能是CentOS或其它。

虽然有很多程序员会使用Linux做桌面操作系统,但大多数仍然会使用Windows或MacOS。在Windows及MacOS上,我们就需要方便快速的工具来虚拟Linux,以方便我们测试等使用。

很多程序员可能会考虑或使用开源的VirtualBox或商业的VMware,但这些GUI式的虚拟工具,虚拟一个Linux的过程非常麻烦。

Lima不仅是一个开源的免费的工具,相比较Multipass而言,它还有很多其它优势,比如不只支持Ubuntu, 而且可以基于它轻易的在MacOS取代Docker Desktop For Mac这个笨重,难用的软件。

Lima的官网是:https://lima-vm.io/docs/

Lima

Lima是一款MacOS上的Linux虚拟软件。

通过Lima可以仅通过一个命令就方便的创建并使用一个虚拟的无GUI的Linux。Lima则基本支持所有主流服务Linux系统,包括AlmaLinux, Alpine, Arch Linux, Debian, Fedora, openSUSE, Oracle Linux, Rocky, Ubuntu等。

基本上你会用的Linux,你都能用Lima虚拟出来。而虚拟这些Linux在Lima中简单到只需要一行命令。

# 创建一个debian虚拟机
limactl create --name=debian template://debian

是不是非常简单方便?

安装与使用

在MacOS上安装软件的最方便的方式就是使用Homebrew,安装Lima也不例外。相较于其它安装起来更麻烦的方式,建议使用homebrew来安装

brew install lima

安装完成之后,检验下版本以验证是否安 .装成功

limactl --version
# 会输出limactl version 1.0.7
虚拟一个Linux

Lima是一个纯命令行工具。你需要通过命令来执行所有lima的功能。当然,对于经常使用Linux的程序员来说,这个应该是习以为常的了。

我们先来虚拟一个Linux。基于命令行来虚拟一个Linux其实有很多参数,比如你要什么Linux系统,内存多少,CPU分配多少,硬盘多少等。如果每次创建Linux虚拟机都要一堆参数,这会显著的提高难度。

好在Lima是通过templates来解决这个问题,lima本身内置了很多模板,你也可以定制你自己的模板。然后通过模板,仅一条简单的命令,就可以创建一个虚拟机

# 创建一个debian虚拟机,使用debian 12模板
limactl create --name=debian template://debian-12

那怎么知道它有哪些模板呢。

有两个方式.

其一是到官网的文档中了解,地址是:https://lima-vm.io/docs/templates/。这个页面列出了lima所有内置的模板。

另一个是访问本地目录。输入limactl help命令后, 帮助指引中会告诉你模板的本地目录

  See also template YAMLs: /opt/homebrew/share/lima/templates

这样你就可以到本地目录中,查找这些模板文件。

常用操作

简单列举一些limactl你会用到的常用场景及命令

创建虚拟机

    可以通过模板创建,也可以自定义模板文件,创建时也可以指定诸如内存,硬盘,CPU数等参数

    # 使用默认模板创建虚拟机,默认模板是ubuntu
    limactl create --name=test
    # 指定模板创建虚拟机,模板
    limactl create --name=test template://debian
    # 指定附加参数创建虚拟机
    limactl create --cpus=2 --memory=2 --name=test template://debian-12
    列出所有虚拟机

      列出你本机安装的所有虚拟机及信息

      limactl list
      启动及ssh

        启动一个虚拟机

        # start后加上要启动的虚拟机名称
        limactl start test

        Ssh进入虚拟机

        limactl shell test

        进入后,默认是MacOS当前用户名同名用户,你需要使用sudo来执行一些root权限的工作。sudo不需要任何密码。

        停止,删除及保护虚拟机

          同样,虚拟机不使用时,你可以停止它。如果整个虚拟机都不需要了,删除它。为了避免误删虚拟机,你可以保护一个虚拟机

          # 停止虚拟机
          limactl stop test
          # 删除虚拟机
          limactl delete test
          # 保护一个虚拟机,防止误删除
          limactl protect test
          # 取消对虚拟机的保护,允许删除
          limactl unprotect test
          ssh 连接

          启动虚拟机之后,编辑 ssh配置文件:

          vim /etc/ssh/sshd_config

          定义好端口,修改下面两处参数:

          PermitRootLogin yes
          PasswordAuthentication yes

          重启 ssh 服务:service sshd restart

          然后用 ssh工具连接即可,IP 为 127.0.0.1,端口为上述定义的端口,密码可以在连接之前终端时定义好,设置了密码更安全。

          如果你还在使用类似VirtualBox或Multipass这一类的工具,Lima是你可以考虑的绝佳的更好的替代品。

          Hello World
          Hello World