Multipass
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Multipass 🇬🇧 ist eine Virtualisierungslösung von Canonical, mit der sich besonders schnell und einfach virtuelle Instanzen von Ubuntu, Ubuntu Core 🇬🇧, Ubuntu Appliances 🇬🇧 und andere Programme / Lösungen aus dem Ubuntu Umfeld installieren lassen.
Multipass richtet sich in erster Linie an Entwickler und Nutzer, die möglichst einfach ein oder mehrere verschiedene virtuelle Instanzen von Ubuntu benötigten, z.B. zu Test- oder Supportzwecken. Multipass unterstützt nur Ubuntu, es lassen sich damit keine anderen Distributionen virtualisieren. Außerdem wird immer die Basis- / Serverinstallation installiert, d.h. es gibt keine Desktopumgebung. Diese lässt sich zwar nachinstallieren, ist aber nicht direkt in einem Fenster sichtbar (wie z.B. bei VirtualBox), sondern man muss sich per RDP mit dem Desktop verbinden, da die Multipass Instanzen immer im Hintergrund laufen.
Technisch kann Multipass zur Virtualisierung verschiedene Backends wie LXD 🇬🇧, Libvirt 🇬🇧 oder QEMU mit KVM verwenden, Standard und Vorgabe ist QEMU.
Multipass ist mit identischem Funktionsumfang zur Virtualisierung von Ubuntu-Instanzen neben Linux auch für Windows und MacOS verfügbar.
Installation¶
Multipass kann als snap installiert werden, das snap wird direkt von Canonical bereit gestellt:
sudo snap install multipass
Hinweis!
Fremdsoftware kann das System gefährden.
Nutzung¶
Multipass wird grundsätzlich über die Kommandozeile bedient. Der zentrale Befehl heißt multipass
, die allgemeine Syntax lautet[1]:
multipass BEFEHL [OPTIONEN] [INSTANZNAME]
Eine Übersicht über alle Befehle erhält man mit:
multipass -h
Instanzen installieren¶
Um zu sehen, was durch Multipass installierbar ist, dient der Befehl
multipass find
Die Ausgabe sieht dann z.B. so aus:
Image Aliases Version Description snapcraft:core18 18.04 20201111 Snapcraft builder for Core 18 snapcraft:core20 20.04 20210921 Snapcraft builder for Core 20 snapcraft:core22 22.04 20220426 Snapcraft builder for Core 22 snapcraft:devel 20221105 Snapcraft builder for the devel series core core16 20200818 Ubuntu Core 16 core18 20211124 Ubuntu Core 18 18.04 bionic 20221014 Ubuntu 18.04 LTS 20.04 focal 20221018 Ubuntu 20.04 LTS 22.04 jammy,lts 20221101.1 Ubuntu 22.04 LTS 22.10 kinetic 20221101 Ubuntu 22.10 appliance:adguard-home 20200812 Ubuntu AdGuard Home Appliance appliance:mosquitto 20200812 Ubuntu Mosquitto Appliance appliance:nextcloud 20200812 Ubuntu Nextcloud Appliance appliance:openhab 20200812 Ubuntu openHAB Home Appliance appliance:plexmediaserver 20200812 Ubuntu Plex Media Server Appliance 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 jellyfin latest Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. minikube latest minikube is local Kubernetes
Der Befehl
multipass lauch NAME_DES_IMAGE
installiert und startet direkt die Instanz. Die Installation läuft vollautomatisch ohne Interaktion mit dem Nutzer. Der Standardbenutzer ist immer ubuntu
und es wird kein Passwort benötigt.
Statt NAME_DES_IMAGE
kann man beim launch-Befehl auch das Alias
angeben. Also die Befehle
multipass launch jammy multipass launch 22.04
würden jeweils Ubuntu 22.04 LTS installieren.
Jede Instanz bekommt einen einmaligen Namen zugeteilt, der immer aus zwei Worten besteht:
Launched: understood-stonechat
Über diesen Namen kann die Instanz später referenziert werden (siehe Abschnitt Instanzen nutzen). Man kann beliebig viele Instanzen der gleichen Ubuntu-Version installieren. Wenn man also z.B. dreimal den Befehl multipass launch jammy
ausführen würde, würde man drei Instanzen mit jeweils unterschiedlichen Namen von Ubuntu 22.04 LTS haben.
Möchte man selber einen Name für eine neu anzulegende Instanz angeben, dann muss man die --name NAME
Option angeben. Z.B. würde der Befehl
multipass launch 18.04 --name ubuntuusers-test
eine Instanz von Ubuntu 18.04 LTS unter dem Name ubuntuusers-test
installieren.
Standardmäßig bekommen die Instanzen relativ wenig Ressourcen zugewiesen, nämlich eine CPU, 1 GB RAM und 5 GB Speicher auf der virtuellen Festplatten. Je nach dem, was man mit der Instanz vor hat, kann man diese Vorgaben aber über Optionen bei der Installation der Instanz ändern:
Option | Beschreibung |
-m RAM-SPEICHER | Zugewiesener RAM Speicher, kann in K (Kilobyte), M (Megabyte) oder G (Gigabyte) angegeben werden. Standard ist 1G , Minimum sind 128M |
-d FESTPLATTEN-SPEICHER | Zugewiesener Festplatten Speicher, kann in K (Kilobyte), M (Megabyte?) oder G (Gigabyte) angegeben werden. Standard ist 5G , Minimum sind 512M |
-c ANZAHL_DER_CPUS | Anzahl der Prozessorkerne, die die Instanz nutzen darf. Standard ist 1 |
Bei der Installation einer Instanz wird außerdem standardmäßig eine Netzwerkbrücke eingerichtet. Damit ist die Instanz in dem Netzwerk, in dem der Wirt-Rechner läuft, erreichbar. Außerdem kann die Instanz auf das Internet zugreifen, sofern der Wirt-Rechner auf das Internet zugreifen kann. Die Konfiguration des Netzwerks kann bei der Installation der Instanz über die Optionen --network ANGABEN
beeinflusst werden.
Instanzen nutzen¶
Eine Übersicht über die installierten Instanzen kann man sich mit dem Befehl info
verschaffen:
multipass info NAME_DER_INSTANZ
Die Ausgabe sieht z.B. so aus:
Name: ubuntuusers-test State: Running IPv4: 10.110.237.108 Release: Ubuntu 18.04.6 LTS Image hash: 5269cad5bc26 (Ubuntu 18.04 LTS) Load: 0.15 0.03 0.01 Disk usage: 1.3G out of 4.7G Memory usage: 98.1M out of 985.0M Mounts: --
Anstelle NAME_DER_INSTANZ
kann man auch --all
nutzen, um sich Informationen zu allen Instanzen anzeigen zu lassen.
Man kann auf alle laufenden Instanzen zugreifen, und zwar über die Befehle shell
und exec
.
Mittels
multipass shell NAME_DER_INSTANZ #Beispiel, um sich in die Instanz ubuntuusers-test einzuloggen: multipass shell ubuntuusers-test
loggt man sich in der Instanz NAME_DER_INSTANZ
ein und ist in deren Terminal. Dies ist vergleichbar mit einem Login via SSH auf einem entfernten Rechner, nur das bei Multipass weder Benutzername noch Passwort angegeben werden müssen. In den Instanz wird man automatisch als Nutzer ubuntu
eingeloggt, andere Nutzer gibt es nicht. Der Benutzer hat die gleichen Rechte wie der erste angelegte Benutzer einer "normalen" Ubuntu-Installation. Für man einen Befehl mit sudo
aus, wird kein Passwort abgefragt.
Hinweis:
Auch wenn für sudo
kein Passwort abgefragt wird, müssen trotzdem alle Befehle, die unter einer "normalen" Ubuntu-Installation Root-Rechte erfordern, auch in der Multipass Instanz mit Root-Rechten ausgeführt werden. Also würde z.B. der Befehl apt update
genau so zu einer Fehlermeldung führen, da für den Befehl Root-Rechte notwendig sind.
Im Terminal der Instanz kann man dann alle Befehl ausführen, Änderungen an der Konfiguration vornehmen etc., wie bei einem normalen Rechner auch. Man kann z.B. Pakete aus den Paketquellen installieren, Snaps installieren, weitere Paketquellen einbinden, Software auf andere Wege installieren, Units für systemd anlegen, über systemctl neu booten usw. Die Shell der Multipass Instanz verlässt man mit wie üblich mit exit
.
Möchte man nur einen Befehl in einer laufenden Instanz ausführen, ohne sich einzuloggen, dann geschieht das über den Befehl exec
:
multipass exec NAME_DER_INSTANZ AUSZUFÜHRENDER_BEFEHL
Also z.B.:
multipass exec ubuntuusers-test who
würde den Befehl who ausführen, die Ausgabe erfolgt in den Terminal, in dem auch das multipass
Kommando ausgeführt wurde. Benötigt der Befehl Optionen oder besteht aus mehreren Worten, dann sind NAME_DER_INSTANZ
und BEFEHL
durch zwei Minuszeichen --
zu trennen, wie in den folgenden Beispielen:
multipass exec ubuntuusers-test -- uname -a multipass exec ubuntuusers-test -- sudo apt update
Daten austauschen¶
Es gibt zwei Möglichkeiten, mit einer laufenden Multipass Instanz Daten auszutauschen: entweder kann ein (oder mehrere) Verzeichnisse des Wirt-Rechners in das Dateisystem der Instanz einhängen oder einzelne Dateien kopieren.
Mit der Befehl mount
wird ein Verzeichnis des Wirt-Rechners in die Instanz eingebunden. So würde z.B. der Befehl
multipass mount /home/RainerTitan/Bilder ubuntuusers-test
das Verzeichnis des Wirt-Rechners /home/RainerTitan/Bilder in die Instanz ubuntuusers-test
mit dem gleichen Verzeichnis einbinden. Dabei spielt es keine Rolle, dass es das Verzeichnis in der Instanz (noch) nicht gibt. Man kann alternativ auch den Einhängepunkt in der Instanz vorgeben, wie z.B.:
multipass mount /home/RainerTitan/Bilder ubuntuusers-test:/home/ubuntu/Mountpoint
So würde das Verzeichnis /home/RainerTitan/Bilder in der Instanz ubuntuusers-test
im Verzeichnis /home/ubuntu/Mountpoint eingehängt.
Achtung!
Man hat in der Instanz im Einhängepunkt volle Dateirechte, d.h. man kann Datei öffnen, Editieren, Umbenennen und auch Löschen! Von daher sollte man dort mit Bedacht vorgehen.
Um eingehängte Verzeichnisse wieder zu entfernen dient der Befehl umount
. Dabei ist optional der Einhängepunkt anzugeben, der entfernt werden soll:
multipass umount NAME_DER_INSTANZ[:EINHÄNGEPUNKT]
Um den obigen mount
Befehl rückgängig zu machen dient folgender Befehl:
multipass umount ubuntuusers-test:/home/ubuntu/Mountpoint
Der Befehl
multipass umount ubuntuusers-test
würde alle Einhängepunkte in ubuntuusers-test
entfernen.
Zum Einbinden eines Verzeichnisse nutzt Multipass sshfs. In der Dokumentation sind außerdem alternative Wege 🇬🇧 (z.B. via SMB/cifs oder NFS) beschrieben.
Mit dem Befehl transfer
lassen sich einzelne Dateien (oder Verzeichnisse) kopieren. So würde z.B der Befehl
multipass transfer ./demo.py ubuntuusers-test:/home/ubuntu
die Datei demo.py aus dem aktuellen Verzeichnis des Wirt-Rechners in die Instanz ubuntuusers-test
ins Verzeichnis /home/ubuntu kopieren.
Instanzen verwalten¶
Eine Übersicht über die aktuell installierten Instanzen gibt der Befehl
multipass list
Die Ausgabe sieht z.B. so aus:
Name State IPv4 Image primary Running 10.110.237.231 Ubuntu 22.04 LTS consonant-sheepdog Stopped -- Ubuntu 20.04 LTS nourishing-cub Running 10.110.237.250 Ubuntu Nextcloud Appliance
Das Starten und Stoppen einer Instanz erfolgt über die Befehle start
und stop
:
#Stoppen einer Instanz: multipass stop NAME_DER_INSTANZ #Starten einer Instanz: multipass start NAME_DER_INSTANZ
Zu beachten ist, dass laufende Instanzen solange laufen, bis sie explizit gestoppt wird. Wird der Wirt-Rechner ausgeschaltet und neu gestartet oder ein Reboot durchgeführt, dann laufen die Instanzen weiter, d.h. sie werden beim Herunterfahren / Neustart nicht automatisch gestoppt.
Benötigt man eine Instanz nicht mehr, kann man diese deaktivieren mit dem Befehl:
multipass delete NAME_DER_INSTANZ
Dadurch ändert sich der Eintrag in der Spalte "State" auf Deleted
. Die Instanz ist dann aber noch nicht endgültig gelöscht, der Befehl
multipass recover NAME_DER_INSTANZ
würde diese wiederherstellen. Der Befehl
multipass purge
löscht endgültig alle Instanzen, die als deleted
markiert sind.
Eine detaillierte Übersicht über alle Instanzen und deren Konfiguration, die auf dem Rechner installiert, findet man in der Datei /var/snap/multipass/common/data/multipassd/multipassd-vm-instances.json. Der Speicherort der virtuellen Instanzen ist /var/snap/multipass/common/data/multipassd/vault/instances. Es sollte aber weder an der Datei noch am Inhalt des Verzeichnisses manuelle Änderung vorgenommen werden.
Konfiguration¶
Die Konfiguration von Multipass erfolgt ebenfalls auf der Kommandozeile, mit Hilfe der Befehl get
(zum Abfragen von Schlüsseln) und set
zum Setzen von Schlüsseln. Es gibt einige globale Einstellungen für Multipass und einige pro Instanz. Der Befehl
multipass get --keys
listet alle existierenden Schlüssel auf. Die Ausgabe sieht z.B. so aus:
client.gui.autostart client.gui.hotkey client.primary-name local.bridged-network local.ubuntuusers-test.cpus local.ubuntuusers-test.disk local.ubuntuusers-test.memory local.driver local.passphrase local.phenomenal-emperor.cpus local.phenomenal-emperor.disk local.phenomenal-emperor.memory local.privileged-mounts
Um den Wert eines Schlüssel abzufragen, muss der Name des Schlüssels hinter dem get
angegeben werden, wie z.B.
multipass get local.ubuntuusers-test.cpus
Möchte man den Wert eines Schlüssels ändern, nutzt man set
. Der folgende Befehl würde die Anzahl der CPUs für die Instanz ubuntuusers-test
auf 2
setzen:
multipass set local.ubuntuusers-test.cpus=2
Möchte man die GUI deaktivieren, muss man den Schlüssel client.gui.autostart
auf false
setzen:
multipass set client.gui.autostart=false
Multipass GUI¶
Nach der Installation von Multipass ist standardmäßig eine einfache GUI installiert. Diese ist über das Multipass-Icon im Panel erreichbar. Beim einem Mausklick darauf öffnet sich ein kleines Menü. Darin sind alle Instanzen aufgeführt und ob diese Laufen oder gestoppt sind. Man kann Instanzen hierüber auch Stoppen oder Starten und für laufende Instanzen eine Shell öffnen. Mehr Funktionalität bietet die Multipass GUI nicht.
Links¶
Intern¶
Virtualisierung - Übersicht zum Thema Virtualisierung im Wiki
Howto/Multipass Instanz mit GUI - wie man nachträglich eine Desktopumgebung für eine Multipass Instanz installiert
Extern¶
Startseite der Dokumentation 🇬🇧
Linux Tutorial 🇬🇧 für Multipass
Sammlung von Howtos 🇬🇧 für die Nutzung von Multipass
Blogeintrag von Michael Kofler 🇩🇪 zu Multipass, enthält u.a. Tipps zur Nutzung eines "bridged networks" und Hinweise zur Nutzung unter MacOS