Multipass 是 Canonical 公司(Ubuntu 背后的公司)推出的一个轻量级虚拟机管理工具。它可以在 Windows、macOS 和 Linux 上快速启动和管理 Ubuntu 虚拟机,特别适合开发环境搭建、本地测试和云环境模拟。

博主博客

第一部分:安装与基础操作

1.1 安装 Multipass

  • Windows/macOS:前往 Multipass 官网 下载安装包。
  • Linux (Ubuntu/Debian)
    sudo snap install multipass
    

1.2 创建虚拟机

安装完成后,可以通过命令行快速创建虚拟机。

1. 创建默认配置虚拟机:

# 创建名为 focal-vm 的 Ubuntu 20.04 虚拟机
multipass launch 20.04 --name focal-vm

2. 创建自定义配置虚拟机(指定 CPU、内存、磁盘):

# 创建 2核CPU、4G内存、20G硬盘的虚拟机
multipass launch 20.04 -n focal-vm -c 2 -m 4G -d 20G

3. 查看虚拟机状态:

multipass list

输出示例:

Name                    State             IPv4             Image
focal-vm                Running           192.168.64.2     Ubuntu 20.04 LTS

1.3 进入与退出虚拟机

  • 进入 Shell 终端:
    multipass shell focal-vm
    
  • 退出虚拟机: 在虚拟机内部输入 exit 或按 Ctrl + D

1.4 停止与删除

# 停止虚拟机
multipass stop focal-vm

# 删除虚拟机(逻辑删除,仍占用空间)
multipass delete focal-vm

# 彻底释放空间(需先 delete 后再执行)
multipass purge

第二部分:文件共享与传输

Multipass 提供了两种主要方式来让宿主机和虚拟机之间交换文件:实时挂载文件传输

2.1 实时文件共享(挂载 Mount)

这是最推荐的方式。挂载后,宿主机和虚拟机可以实时读写同一个文件夹。

1. 挂载本地目录到虚拟机:

# 将宿主机的桌面上的 project 文件夹挂载到虚拟机的 /home/ubuntu/data
multipass mount $HOME/Desktop/project focal-vm:/home/ubuntu/data

2. 高级挂载(解决权限问题):
如果你发现挂载的文件夹在虚拟机内属于 root 用户,导致普通用户无法写入,可以使用 --uid-map--gid-map 映射权限。

# 将宿主机的用户ID(1000)映射为虚拟机内的用户ID(1000)
# 此命令将本地 workspace 挂载,并确保虚拟机内的 ubuntu 用户有读写权限
sudo multipass mount ~/docker/ubuntu/workspace focal-vm:/home/ubuntu/workspace --uid-map 1000:1000 --gid-map 1000:1000

注:在 Linux 宿主机上挂载有时需要 sudo 权限。

3. 卸载挂载:

multipass umount focal-vm

2.2 文件传输(传输 Transfer)

类似于 scp 命令,适合拷贝单个文件或少量文件。

  • 宿主机 -> 虚拟机:
    multipass transfer local-file.txt focal-vm:/home/ubuntu/
    
  • 虚拟机 -> 宿主机:
    multipass transfer focal-vm:/home/ubuntu/remote-file.txt ./local-dir/
    

2.3 常见注意事项

  • 权限问题:挂载的文件如果在虚拟机内显示为 root 用户,可以在虚拟机内执行 sudo chown -R ubuntu:ubuntu /home/ubuntu/data 更改所有者。
  • Windows 路径:在 Windows 的 PowerShell 中使用路径时,建议使用正斜杠 / 或双反斜杠 \\。例如:D:/dataD:\\data
  • 依赖库:如果挂载失败提示需要 sshfs,可以在宿主机和虚拟机中安装:
    sudo snap install multipass-sshfs
    

第三部分:图形化界面配置

Multipass 默认只有命令行界面(CLI)。如果你需要图形化界面(GUI),可以通过安装桌面环境并通过远程桌面(RDP)连接来实现。

3.1 安装桌面环境

# 更新软件源并安装 ubuntu-desktop
multipass exec focal-vm -- sudo apt update
multipass exec focal-vm -- sudo apt install -y ubuntu-desktop

注:安装过程可能较慢,且会占用较多磁盘空间。

3.2 安装并配置 XRDP

XRDP 允许你通过 Windows 自带的“远程桌面连接”工具连接到虚拟机。

# 安装 xrdp 服务
multipass exec focal-vm -- sudo apt install -y xrdp

# 启动并设置开机自启
multipass exec focal-vm -- sudo systemctl enable xrdp
multipass exec focal-vm -- sudo systemctl start xrdp

3.3 设置用户密码

默认情况下,虚拟机中的 ubuntu 用户没有设置密码。你需要设置一个密码以便远程登录。

# 设置 ubuntu 用户的密码(输入时不会显示字符)
multipass exec focal-vm -- sudo passwd ubuntu

3.4 连接图形界面

  1. 获取虚拟机 IP 地址:

    multipass list
    

    记下 focal-vm 对应的 IP 地址(例如 192.168.64.2)。

  2. 使用远程桌面连接:

    • Windows:打开自带的“远程桌面连接”应用。
    • macOS:在 App Store 下载 “Microsoft Remote Desktop”。
    • Linux:使用 RemminaVinagre 等工具。
  3. 输入信息:

    • 计算机:输入虚拟机的 IP 地址。
    • 用户名ubuntu
    • 密码:你在上一步设置的密码。

连接成功后,你将看到 Ubuntu 的图形化桌面。

第四部分:常用命令速查表

操作 命令示例
创建虚拟机 multipass launch 20.04 -n my-vm
列出虚拟机 multipass list
进入虚拟机 multipass shell my-vm
执行单条命令 multipass exec my-vm -- ls -la
挂载目录 multipass mount /local/path my-vm:/vm/path
取消挂载 multipass umount my-vm
传输文件 multipass transfer file.txt my-vm:/home/ubuntu/
停止虚拟机 multipass stop my-vm
删除虚拟机 multipass delete my-vm
彻底清理 multipass purge
查看详情 multipass info my-vm

第五部分:故障排除

  1. 挂载后无法写入文件
    原因:权限不匹配。
    解决:进入虚拟机,执行 sudo chown -R ubuntu:ubuntu /挂载的路径

  2. 图形界面连接黑屏或闪退
    原因:XRDP 配置问题或桌面环境未完全安装。
    解决:尝试重启 xrdp 服务 sudo systemctl restart xrdp,或者确保 ubuntu-desktop 安装完整。

  3. 虚拟机无法启动
    原因:资源不足(如 Hyper-V 冲突,或磁盘空间不足)。
    解决:检查宿主机的虚拟化支持(Windows 需开启 Hyper-V),或使用 multipass delete --purge 彻底删除后重建。

通过以上步骤,你应该可以熟练地使用 Multipass 来管理轻量级的 Ubuntu 虚拟机了。它是一个非常实用的工具,尤其适合需要快速搭建隔离环境进行开发的场景。