Nächste: Dienste definieren, Vorige: guix deploy
aufrufen, Nach oben: Systemkonfiguration [Inhalt][Index]
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-9356a8c.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-9356a8c.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 guix-system-vm-image-9356a8c.x86_64-linux.qcow2 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
.
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.
virt-viewer
mit Spice benutzenEine 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]