M1 MacでUbuntuの仮想マシンを使うためにMultipassをインストールする

公開日:2022/03/04 更新日:2022/03/04
M1 MacでUbuntuの仮想マシンを使うためにMultipassをインストールするのサムネイル

M1、M1 Pro、M1 MaxなどのApple Siliconを搭載しているMacbookProでの開発環境整備のために、仮想環境を構築できるMultipassをインストールしました。その手順をまとめます。

はじめに

M1、M1 Pro、M1 MaxなどのApple Siliconを搭載しているMacbookProでの開発環境整備のために、Ubuntuの仮想環境を構築できるMultipassをインストールしました。その手順をまとめます。

Multipassとは

Multipassは、Ubuntuの開発元であるCanonical社が開発、提供している仮想マシン管理ツールです。Ubuntuの仮想マシンを簡単に作成、削除でき、Vagrantと同じような使用感で使えます。

Multipass orchestrates virtual Ubuntu instances

環境と前提

以下を前提としています。

  • 使用する端末はM1系(M1、M1 Pro、M1 Mac)搭載のMacbookPro
  • Homebrewはインストール済み

インストール

以下ようにbrewコマンドだけでインストール完了です。

$ brew install --cask multipass

以下が実行結果です。実行すると以下のようにパスワード確認されるので入力してEnterを押下します。

$ brew install --cask multipass
Running `brew update --preinstall`...
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
  https://github.com/Homebrew/brew#donations
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> New Formulae
lua-language-server                                 tsduck
==> Updated Formulae
Updated 53 formulae.
==> Deleted Formulae
sdhash

==> Tapping homebrew/cask
Cloning into '/opt/homebrew/Library/Taps/homebrew/homebrew-cask'...
remote: Enumerating objects: 608626, done.
remote: Counting objects: 100% (51/51), done.
remote: Compressing objects: 100% (51/51), done.
remote: Total 608626 (delta 26), reused 10 (delta 0), pack-reused 608575
Receiving objects: 100% (608626/608626), 273.13 MiB | 4.94 MiB/s, done.
Resolving deltas: 100% (430351/430351), done.
Tapped 3942 casks (4,022 files, 292.6MB).
==> Downloading https://github.com/canonical/multipass/releases/download/v1.8.1/multipass-1.8.1+mac-Dar
==> Downloading from https://objects.githubusercontent.com/github-production-release-asset-2e65be/11412
######################################################################## 100.0%
==> Installing Cask multipass
==> Running installer for multipass; your password may be necessary.
Package installers may write to any location; options such as `--appdir` are ignored.
Password:

パスワード入力したら以下のように表示されてインストール完了。

Password:
installer: Package name is multipass
installer: Installing at base path /
installer: The install was successful.
🍺  multipass was successfully installed!

なお、--caskはGUIアプリをインストールする際に使用するフラグになります。

バージョン確認

以下のようにバージョン確認ができれば正常にインストールできています。

$ multipass version
multipass   1.8.1+mac
multipassd  1.8.1+mac

Ubuntu の仮想マシンを作成する

公式サイト(https://multipass.run/docs/working-with-instances)に記載がある通り、以下のコマンドでUbuntuのVMを作成できます。

$ multipass launch

ただし、上記だけだとVMの名前やスペックはデフォルトのままになります。 仮想マシンの作成についてデフォルトだとどのような割り当てになるかは以下のようにhelp launchコマンドで確認できます。例えばCPUはデフォルトだと1、ディスク容量は5GB、メモリは1GBです。

$ multipass help launch
Usage: multipass launch [options] [[<remote:>]<image> | <url>]
Create and start a new instance.

Options:
  -h, --help           Displays help on commandline options.
  --help-all           Displays help including Qt specific options.
  -v, --verbose        Increase logging verbosity. Repeat the 'v' in the short
                       option for more detail. Maximum verbosity is obtained
                       with 4 (or more) v's, i.e. -vvvv.
  -c, --cpus <cpus>    Number of CPUs to allocate.
                       Minimum: 1, default: 1.
  -d, --disk <disk>    Disk space to allocate. Positive integers, in bytes, or
                       with K, M, G suffix.
                       Minimum: 512M, default: 5G.
  -m, --mem <mem>      Amount of memory to allocate. Positive integers, in
                       bytes, or with K, M, G suffix.
                       Minimum: 128M, default: 1G.
  -n, --name <name>    Name for the instance. If it is 'primary' (the
                       configured primary instance name), the user's home
                       directory is mounted inside the newly launched instance,
                       in 'Home'.
  --cloud-init <file>  Path to a user-data cloud-init configuration, or '-' for
                       stdin
  --network <spec>     Add a network interface to the instance, where <spec> is
                       in the "key=value,key=value" format, with the following
                       keys available:
                        name: the network to connect to (required), use the
                       networks command for a list of possible values, or use
                       'bridged' to use the interface configured via `multipass
                       set local.bridged-network`.
                        mode: auto|manual (default: auto)
                        mac: hardware address (default: random).
                       You can also use a shortcut of "<name>" to mean
                       "name=<name>".
  --bridged            Adds one `--network bridged` network.
  --timeout <timeout>  Maximum time, in seconds, to wait for the command to
                       complete. Note that some background operations may
                       continue beyond that. By default, instance startup and
                       initialization is limited to 5 minutes each.

Arguments:
  image                Optional image to launch. If omitted, then the default
                       Ubuntu LTS will be used.
                       <remote> can be either ‘release’ or ‘daily‘. If <remote>
                       is omitted, ‘release’ will be used.
                       <image> can be a partial image hash or an Ubuntu release
                       version, codename or alias.
                       <url> is a custom image URL that is in http://, https://,
                       or file:// format.

以下を実行すると、CPU数が2、ディスク容量が20GB、メモリが4GM、仮想マシン名がmyvmnameの仮想マシンを作成します。

$ multipass launch --cpus 2 --disk 20G --mem 4G --name myvmname

実行すると以下のように作成が開始されるので待ちます。

$ multipass launch --cpus 2 --disk 20G --mem 4G --name myvmname
Retrieving image: 15%

仮想マシンの作成が完了すると以下のように表示されます。

$ multipass launch --cpus 2 --disk 20G --mem 4G --name myvmname
Launched: myvmname

作成した仮想マシン一覧を確認する

listコマンドを使用すると作成済みの仮想マシン一覧を確認できます。

multipass list
Name                    State             IPv4             Image
myvmname                Running           192.168.64.2     Ubuntu 20.04 LTS

作成した仮想マシンにアクセスする

以下のコマンドで作成した仮想マシンにアクセスできます。ssh接続する形です。

$ multipass shell myvmname
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-91-generic aarch64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Tue Dec  7 23:42:17 JST 2021

  System load:             0.0
  Usage of /:              6.5% of 19.22GB
  Memory usage:            5%
  Swap usage:              0%
  Processes:               121
  Users logged in:         0
  IPv4 address for enp0s1: 192.168.64.2
  IPv6 address for enp0s1: fd16:19b2:f10d:2c06:5054:ff:fe19:bd4b

0 updates can be applied immediately.

The list of available updates is more than a week old.
To check for new updates run: sudo apt update

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

ubuntu@myvmname:~$

あとは普通のUbuntuとして自由に使用できます。

なお、作成した仮想マシンの情報は以下のようにinfoで確認できます。

% multipass info myvmname
Name:           myvmname
State:          Running
IPv4:           192.168.64.2
Release:        Ubuntu 20.04.3 LTS
Image hash:     f83575f6791e (Ubuntu 20.04 LTS)
Load:           0.10 0.25 0.15
Disk usage:     1.8G out of 19.2G
Memory usage:   162.0M out of 3.8G
Mounts:         --

仮想マシンの起動、停止、削除

起動

$ multipass start myvmname

停止

$ multipass stop myvmname

削除

$ multipass delete myvmname

仮想マシンの完全削除

deleteで削除した仮想マシンは完全削除ではなく一時的な削除になります。ファイルをゴミ箱にいれるようなイメージです。deleteで削除した仮想マシンを再度使いたい場合は、recoverによって復活させることができます。

$ multipass recover myvmname

完全に削除したい場合はpurgeを使用します。

$ multipass purge myvmname

ホストマシンのディレクトリをマウントする

以下をホストマシン側(ここではM1 MacbookPro)で実行するとマウントできます。

$ multipass mount ホストマシンのパス 仮想マシンのパス

例えば以下だとホストマシンの/Users/mymac/shareというディレクトリを仮想マシンmyvmname/home/ubuntu/mntにマウントできます。/home/ubuntu/mntは私が勝手に作ったディレクトリですので、各自マウントしたパスに置き換えてください。

$ multipass mount /Users/mymac/share myvmname:/home/ubuntu/mnt

これで仮想マシン側でホストマシン側のファイルにアクセスできます。

参考サイト

Installing Multipass on macOS

まとめ

公式ドキュメントが充実しており簡単に使えると思います。動作も問題なく快適に使用できています。

関連記事