ubuntuusers.de

Multipass

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


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_logo.png 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-testauf 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.

Intern

Extern

Diese Revision wurde am 16. Mai 2023 01:39 von noisefloor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Emulation und Virtualisierung