Nächste: , Vorige: , Nach oben: Systemkonfiguration   [Inhalt][Index]


12.17 Guix in einer virtuellen Maschine betreiben

Um Guix in einer virtuellen Maschine (VM) auszuführen, können Sie das vorerstellte Guix-VM-Abbild benutzen, das auf https://ftp.gnu.org/gnu/guix/guix-system-vm-image-1.4.0.x86_64-linux.qcow2 angeboten wird. Das Abbild ist ein komprimiertes Abbild im QCOW-Format. Sie können es an einen Emulator wie QEMU übergeben (siehe unten für Details).

Dieses Abbild startet eine grafische Xfce-Umgebung und enthält einige oft genutzte Werkzeuge. Sie können im Abbild mehr Software installieren, indem Sie guix package in einem Terminal ausführen (siehe guix package aufrufen). Sie können das System im Abbild auch rekonfigurieren, basierend auf seiner anfänglichen Konfigurationsdatei, die als /run/current-system/configuration.scm verfügbar ist (siehe Das Konfigurationssystem nutzen).

Statt dieses vorerstellte Abbild zu benutzen, können Sie auch Ihr eigenes Abbild erstellen, indem Sie guix system image benutzen (siehe guix system aufrufen).

Wenn Sie Ihr eigenes Abbild erstellen haben lassen, müssen Sie es aus dem Store herauskopieren (siehe Der Store) und sich darauf Schreibberechtigung geben, um die Kopie benutzen zu können. Wenn Sie QEMU aufrufen, müssen Sie einen Systememulator angeben, der für Ihre Hardware-Plattform passend ist. Hier ist ein minimaler QEMU-Aufruf, der das Ergebnis von guix system image -t qcow2 auf x86_64-Hardware bootet:

$ qemu-system-x86_64 \
   -nic user,model=virtio-net-pci \
   -enable-kvm -m 2048 \
   -device virtio-blk,drive=myhd \
   -drive if=none,file=guix-system-vm-image-1.4.0.x86_64-linux.qcow2,id=myhd

Die Bedeutung jeder dieser Befehlszeilenoptionen ist folgende:

qemu-system-x86_64

Hiermit wird die zu emulierende Hardware-Plattform angegeben. Sie sollte zum Wirtsrechner passen.

-nic user,model=virtio-net-pci

Den als Nutzer ausgeführten Netzwerkstapel („User-Mode Network Stack“) ohne besondere Berechtigungen benutzen. Mit dieser Art von Netzwerkanbindung kann das Gast-Betriebssystem eine Verbindung zum Wirt aufbauen, aber nicht andersherum. Es ist die einfachste Art, das Gast-Betriebssystem mit dem Internet zu verbinden. Das model gibt das Modell eines zu emulierenden Netzwerkgeräts an: virtio-net-pci ist ein besonderes Gerät, das für virtualisierte Betriebssysteme gedacht ist und für die meisten Anwendungsfälle empfohlen wird. Falls Ihre Hardware-Plattform x86_64 ist, können Sie eine Liste verfügbarer Modelle von Netzwerkkarten (englisch „Network Interface Card“, kurz NIC) einsehen, indem Sie qemu-system-x86_64 -net nic,model=help ausführen.

-enable-kvm

Wenn Ihr System über Erweiterungen zur Hardware-Virtualisierung verfügt, beschleunigt es die Dinge, wenn Sie die Virtualisierungsunterstützung „KVM“ des Linux-Kernels benutzen lassen.

-m 2048

Die Menge an Arbeitsspeicher (RAM), die dem Gastbetriebssystem zur Verfügung stehen soll, in Mebibytes. Vorgegeben wären 128 MiB, was für einige Operationen zu wenig sein könnte.

-device virtio-blk,drive=myhd

Ein virtio-blk-Laufwerk namens „myhd“ erzeugen. virtio-blk ist ein Mechanismus zur „Paravirtualisierung“ von Blockgeräten, wodurch QEMU diese effizienter benutzen kann, als wenn es ein Laufwerk vollständig emulieren würde. Siehe die Dokumentation von QEMU und KVM für mehr Informationen.

-drive if=none,file=/tmp/qemu-image,id=myhd

Unser QCOW-Abbild in der Datei /tmp/qemu-image soll als Inhalt des „myhd“-Laufwerks herhalten.

Das voreingestellte run-vm.sh-Skript, das durch einen Aufruf von guix system vm erzeugt wird, fügt keine Befehlszeilenoption -nic user an. Um innerhalb der virtuellen Maschine Netzwerkzugang zu haben, fügen Sie den (dhcp-client-service) zu Ihrer Systemdefinition hinzu und starten Sie die VM mit $(guix system vm config.scm) -nic user. Erwähnt werden sollte der Nachteil, dass bei Verwendung von -nic user zur Netzanbindung der ping-Befehl nicht funktionieren wird, weil dieser das ICMP-Protokoll braucht. Sie werden also einen anderen Befehl benutzen müssen, um auszuprobieren, ob Sie mit dem Netzwerk verbunden sind, zum Beispiel guix download.

12.17.1 Verbinden über SSH

Um SSH in der virtuellen Maschine zu aktivieren, müssen Sie einen SSH-Server wie openssh-service-type zu ihr hinzufügen (siehe openssh-service-type). Des Weiteren müssen Sie den SSH-Port für das Wirtssystem freigeben (standardmäßig hat er die Portnummer 22). Das geht zum Beispiel so:

$(guix system vm config.scm) -nic user,model=virtio-net-pci,hostfwd=tcp::10022-:22

Um sich mit der virtuellen Maschine zu verbinden, benutzen Sie diesen Befehl:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 10022 localhost

Mit -p wird ssh der Port mitgeteilt, über den eine Verbindung hergestellt werden soll. -o UserKnownHostsFile=/dev/null verhindert, dass ssh sich bei jeder Modifikation Ihrer config.scm-Datei beschwert, ein anderer bekannter Rechner sei erwartet worden, und -o StrictHostKeyChecking=no verhindert, dass Sie die Verbindung zu unbekannten Rechnern jedes Mal bestätigen müssen, wenn Sie sich verbinden.

Anmerkung: Wenn dieses Beispiel zu ‘hostfwd’ bei Ihnen nicht funktioniert (weil z.B. sich Ihr SSH-Client aufhängt, wenn Sie versuchen, sich mit dem zugeordneten Port auf Ihrer VM zu verbinden), dann überprüfen Sie nochmal, ob Ihre Guix-System-VM auch mit Netzwerkunterstützung konfiguriert wurde, also etwas wie der Diensttyp dhcp-client-service-type angegeben wurde.

12.17.2 virt-viewer mit Spice benutzen

Eine Alternative zur grafischen Schnittstelle des standardmäßigen qemu ist, sich mit Hilfe des remote-viewer aus dem Paket virt-viewer zu verbinden. Um eine Verbindung herzustellen, übergeben Sie die Befehlszeilenoption -spice port=5930,disable-ticketing an qemu. Siehe den vorherigen Abschnitt für weitere Informationen, wie Sie das übergeben.

Spice macht es auch möglich, ein paar nette Hilfestellungen zu benutzen, zum Beispiel können Sie Ihren Zwischenspeicher zum Kopieren und Einfügen (Ihr „Clipboard“) mit Ihrer virtuellen Maschine teilen. Um das zu aktivieren, werden Sie die folgenden Befehlszeilennoptionen zusätzlich an qemu übergeben müssen:

-device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=pci.0,addr=0x5
-chardev spicevmc,name=vdagent,id=vdagent
-device virtserialport,nr=1,bus=virtio-serial0.0,chardev=vdagent,\
name=com.redhat.spice.0

Sie werden auch den (spice-vdagent-service) zu Ihrer Systemdefinition hinzufügen müssen (siehe Spice-Dienst).


Nächste: Dienste definieren, Vorige: guix deploy aufrufen, Nach oben: Systemkonfiguration   [Inhalt][Index]