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


8.16 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.1.0.System.xz angeboten wird. Das Abbild ist ein komprimiertes Abbild im QCOW-Format. Sie müssen es mit xz -d dekomprimieren, bevor Sie es an einen Emulator wie QEMU übergeben (siehe unten für Details).

This image boots the Xfce graphical environment and it contains some commonly-used tools. You can install more software in the image by running guix package in a terminal (siehe Aufruf von guix package). You can also reconfigure the system based on its initial configuration file available in the repository (siehe Das Konfigurationssystem nutzen).

Statt dieses vorerstellte Abbild zu benutzen, können Sie auch Ihr eigenes Abbild für virtuelle Maschinen erstellen, indem Sie guix system vm-image benutzen (siehe Aufruf von guix system). Das Abbild wird im qcow2-Format zurückgeliefert, das der QEMU-Emulator effizient benutzen kann.

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 vm-image auf x86_64-Hardware bootet:

$ qemu-system-x86_64 \
   -nic user,model=virtio-net-pci \
   -enable-kvm -m 1024 \
   -device virtio-blk,drive=myhd \
   -drive if=none,file=/tmp/qemu-image,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 1024

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.

8.16.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

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.

8.16.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-Dienst hinzufügen müssen.


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