[[Vorlage(Getestet,jammy)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis()]] [[Bild(multipass_logo.png, 72, align=left)]] [https://multipass.run Multipass] {en} ist eine Virtualisierungslösung von Canonical, mit der sich besonders schnell und einfach virtuelle Instanzen von Ubuntu, [https://ubuntu.com/core Ubuntu Core] {en}, [https://ubuntu.com/appliance Ubuntu Appliances] {en} 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 [https://linuxcontainers.org/lxd/introduction/ LXD] {en}, [https://libvirt.org Libvirt] {en} 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: {{{#!vorlage Befehl sudo snap install multipass }}} [[Vorlage(Fremd, Software)]] = Nutzung = Multipass wird grundsätzlich über die Kommandozeile bedient. Der zentrale Befehl heißt `multipass`, die allgemeine Syntax lautet[1]: {{{#!vorlage Befehl multipass BEFEHL [OPTIONEN] [INSTANZNAME] }}} Eine Übersicht über alle Befehle erhält man mit: {{{#!vorlage Befehl multipass -h }}} == Instanzen installieren == Um zu sehen, was durch Multipass installierbar ist, dient der Befehl {{{#!vorlage 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 {{{#!vorlage 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 {{{#!vorlage Befehl 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 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 {{{#!vorlage 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: {{{#!vorlage Tabelle 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: {{{#!vorlage Befehl 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 [#Instanzen-verwalten laufenden Instanzen] zugreifen, und zwar über die Befehle `shell` und `exec`. Mittels {{{#!vorlage Befehl 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. {{{#!vorlage 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, [:systemd/Units: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`: {{{#!vorlage Befehl multipass exec NAME_DER_INSTANZ AUSZUFÜHRENDER_BEFEHL }}} Also z.B.: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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 {{{#!vorlage 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.: {{{#!vorlage Befehl 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. {{{#!vorlage Warnung 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: {{{#!vorlage Befehl multipass umount NAME_DER_INSTANZ[:EINHÄNGEPUNKT] }}} Um den obigen `mount` Befehl rückgängig zu machen dient folgender Befehl: {{{#!vorlage Befehl multipass umount ubuntuusers-test:/home/ubuntu/Mountpoint }}} Der Befehl {{{#!vorlage Befehl multipass umount ubuntuusers-test }}} würde alle Einhängepunkte in `ubuntuusers-test` entfernen. Zum Einbinden eines Verzeichnisse nutzt Multipass [:FUSE/sshfs:sshfs]. In der Dokumentation sind außerdem [https://multipass.run/docs/improve-mount-performance alternative Wege] {en} (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 {{{#!vorlage 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 {{{#!vorlage 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`: {{{#!vorlage Befehl #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: {{{#!vorlage 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 {{{#!vorlage Befehl multipass recover NAME_DER_INSTANZ }}} würde diese wiederherstellen. Der Befehl {{{#!vorlage 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 {{{#!vorlage 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. {{{#!vorlage Befehl 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: {{{#!vorlage Befehl multipass set local.ubuntuusers-test.cpus=2 }}} Möchte man die [#Multipass-GUI GUI] deaktivieren, muss man den Schlüssel `client.gui.autostart` auf `false` setzen: {{{#!vorlage Befehl 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} - Übersicht zum Thema Virtualisierung im Wiki * [:Howto/Multipass_Instanz_mit_GUI:] - wie man nachträglich eine Desktopumgebung für eine Multipass Instanz installiert == Extern == * [https://multipass.run/docs Startseite der Dokumentation] {en} * [https://multipass.run/docs/linux-tutorial Linux Tutorial] {en} für Multipass * [https://multipass.run/docs/how-to-guides Sammlung von Howtos] {en} für die Nutzung von Multipass * [https://kofler.info/multipass-ubuntu-vms-unter-windows-macos-und-linux-ausfuehren/ Blogeintrag von Michael Kofler] {de} zu Multipass, enthält u.a. Tipps zur Nutzung eines "bridged networks" und Hinweise zur Nutzung unter MacOS #tag: Emulation und Virtualisierung