Multipassの基本

M1 MacBook ProではVirtualboxのarm非対応問題により、Vagrant が使えない*1ため、Multipassを試している。

Install

インストールは以下。qemuのインストールにはM1版のhomebrewが必要。

$ brew install --cask multipass
$ brew install qemu

Find

インストールできるインスタンスのリストを表示。

$ multipass find
Image                       Aliases           Version          Description
18.04                       bionic            20220615         Ubuntu 18.04 LTS
20.04                       focal,lts         20220615         Ubuntu 20.04 LTS
21.10                       impish            20220616         Ubuntu 21.10
22.04                       jammy             20220616         Ubuntu 22.04 LTS
anbox-cloud-appliance                         latest           Anbox Cloud Appliance
charm-dev                                     latest           A development and testing environment for charmers
docker                                        latest           A Docker environment with Portainer and related tools
minikube                                      latest           minikube is local Kubernetes

Launch

必要に応じて init.ymlファイルに初期設定を記述する。

$ cat init.yml
# cloud-config
repo_update: true
repo_upgrade: all

# install packages
packages:
 - build-essential
 - bison
 - flex
 - binutils
 - libreadline-dev
 - zlib1g
 - zlib1g-dev
 - libssl-dev
 - gdb
 - git

以下のようにインスタンスを生成+起動する。

$ multipass launch 22.04 --name ubuntu22 --mem 4G --disk 20G --cloud-init init.yml

Shell

インスタンスへのアクセスは以下のようにする。

$ multipass shell ubuntu22

List

手元のインスタンスのリストを表示する。

$ multipass list
Name                    State             IPv4             Image
ubuntu22                Stopped           --               Ubuntu 22.04 LTS
ubuntu22dev             Stopped           --               Ubuntu 22.04 LTS

Start & Stop

インスタンスの開始と停止は以下:

$ multipass start ubuntu22

$ multipass stop ubuntu22

Disk領域の拡張

qemu-imgでサイズを変更する。

$ multipass stop ubuntu22
$ sudo su -
$ cd /var/root/Library/Application\ Support/multipassd/qemu/vault/instances/ubuntu22
$ '/Library/Application Support/com.canonical.multipass/bin/qemu-img' resize ubuntu-22.04-server-cloudimg-arm64.img 22G

CPU数とメモリの変更

インスタンスを停止し、以下のコマンドを実行。

$ sudo launchctl unload /Library/LaunchDaemons/com.canonical.multipassd.plist

以下のファイルで、対応するインスタンスのnum_coresとmem_sizeを変更する。

$ sudo vi /var/root/Library/Application Support/multipassd/qemu/multipassd-vm-instances.json

最後に以下を実行。

$ sudo launchctl load /Library/LaunchDaemons/com.canonical.multipassd.plist

 インスタンスのコピー

できるのかな?調査中。

Delete & Purge

インスタンスの削除は以下:

$ multipass delete ubuntu22
$ multipass purge

参考

*1:parallelsなど使えば動くが有償ソフトはなるべく避けたい。