An Ubuntu MATE Desktop Displayed in an RDP Client on macOS Catalina
It’s Always Greener on the MATE Side

While I was working on my recent post Virtualize Ubuntu Desktop on macOS with QEMU, I came across Canonical’s Multipass utility. Multipass makes it extremely simple to spin up Ubuntu instances on the fly whether your on Linux, macOS, and Windows. While your VM may not be as speedy as with QEMU, I would be remiss for not doing a quick write-up on this tool which makes it so easy to get up and running. The main caveat for Multipass is that it is only intended for running Ubuntu and neither other Linux distributions nor other operating systems. By default on macOS, Multipass uses Hyperkit behind the scenes.[1]

Tutorial

Setting up a desktop with Multipass is briefly described here. This tutorial, in contrast, provides a complete set of instructions for configuring and running a Ubuntu MATE with Multipass on macOS. This tutorial assumes you have some experience with the command-line, virtualization, Ubuntu, and macOS.

Steps
  1. Download the Multipass installer here.

  2. Run the installer and follow the directions to install Multipass.

  3. Create a new VM, allocating 2 CPU’s, 4 Gigabytes of RAM, and 50 Gigabytes of disk space.

    $ multipass launch -c 2 -m 4G -d 50G
    Launched: nurturing-eagle
  4. Launch a shell in the guest.

    $ multipass shell nurturing-eagle
    Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-47-generic x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    
      System information as of Sun Sep 13 15:57:52 CDT 2020
    
      System load:  0.45              Processes:               136
      Usage of /:   2.6% of 48.29GB   Users logged in:         0
      Memory usage: 5%                IPv4 address for enp0s2: 192.168.64.2
      Swap usage:   0%
    
    
    1 update can be installed immediately.
    0 of these updates are security updates.
    To see these additional updates run: apt list --upgradable
    
    
    To run a command as administrator (user "root"), use "sudo <command>".
    See "man sudo_root" for details.
  5. Sync the package repositories.

    $ sudo apt update
  6. Update any packages if needed.

    $ sudo apt upgrade
  7. Install the Ubuntu MATE package and an RDP server.

    $ sudo apt install ubuntu-mate-desktop xrdp
    To use the default desktop or other Ubuntu flavors, substitute the respective package. For example, substitute ubuntu-mate-desktop with ubuntu-desktop to install the standard Ubuntu desktop.
  8. Set a password for the default ubuntu. This password will be used when making an RDP connection.

    $ sudo passwd ubuntu
    New password:
    Retype new password:
    passwd: password updated successfully
  9. Back on the host, determine the IP address of the guest for the RDP session.

    $ multipass info nurturing-eagle
    Name:           nurturing-eagle
    State:          Running
    IPv4:           192.168.64.2
    Release:        Ubuntu 20.04.1 LTS
    Image hash:     995771784f85 (Ubuntu 20.04 LTS)
    Load:           0.12 0.07 0.15
    Disk usage:     4.3G out of 48.3G
    Memory usage:   204.7M out of 3.8G

    Here the IP address is 192.168.64.2.

  10. Install either Homebrew or MacPorts according to their installation instructions.

  11. Install FreeRDP with Homebrew or MacPorts.

    # Homebrew
    $ brew install xquartz
    $ brew install freerdp
    
    # MacPorts
    $ sudo port install FreeRDP
  12. Connect to the guest with FreeRDP.[2]

    $  xfreerdp /u:ubuntu /p:zorro /v:192.168.64.2 +clipboard

    This command-line simply initiates an RDP connection to the guest at IP 192.168.64.2 using the username ubuntu and the password zorro. The last flag enables a shared clipboard to allow copying and pasting between the host and virtual machine.

Conclusion

You should now be able to create and access a virtualized Ubuntu desktop on macOS with Multipass. What’s more, it should be a piece of cake to transfer this method to running Ubuntu from a Windows or Linux host.