Suivant: , Précédent: , Monter: Configuration du système   [Table des matières][Index]


12.17 Exécuter Guix sur une machine virtuelle

Pour exécuter Guix dans une machine virtuelle (VM), on peut soit utiliser l’image de VM Guix pré-construite sur ‘https://ftp.gnu.org/gnu/guix/guix-system-vm-image-1.4.0.x86_64-linux.qcow2’ . Cette image est une image compressée au format QCOW. Vous devrez la passer à un émulateur comme QEMU (voir plus bas pour des détails).

Cette image démarre l’environnement graphique Xfce et contient certains outils couramment utilisés. Vous pouvez installer plus de logiciels sur l’image en lançant guix package dans un terminal (voir Invoquer guix package). Vous pouvez aussi reconfigurer le système à partir de son fichier de configuration initiale disponible dans /run/current-system/configuration.scm (voir Utiliser le système de configuration).

Au lieu d’utiliser cette image pré-construite, on peut construire sa propre image avec guix system image (voir Invoquer guix system).

Si vous construisez votre propre image, vous devez la copier en dehors du dépôt (voir Le dépôt) et vous donner la permission d’écrire sur la copie avant de pouvoir l’utiliser. Lorsque vous invoquez QEMU, vous devez choisir un émulateur système correspondant à votre plate-forme matérielle. Voici une invocation minimale de QEMU qui démarrera le résultat de guix system image -t qcow2 sur un matériel x8_64 :

$ 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

Voici la signification de ces options :

qemu-system-x86_64

Cela spécifie la plate-forme matérielle à émuler. Elle doit correspondre à l’hôte.

-nic user,model=virtio-net-pci

Active la pile réseau en mode utilisateur non privilégié. Le système invité peut accéder à l’hôte mais pas l’inverse. C’est la manière la plus simple de mettre le système en ligne. model spécifie le périphérique réseau à émuler : virtio-net-pci est un périphérique spécial conçu pour les systèmes d’exploitation virtualisés et recommandés dans la plupart des cas. En supposant que votre plateforme matérielle est x86_64, vous pouvez récupérer une liste des modèles d’interfaces réseaux en lançant qemu-system-x86_64 -nic model=help.

-enable-kvm

Si votre système a des extensions de virtualisation matérielle, activer le support des machines virtuelles de Linux (KVM) accélérera les choses.

-m 2048

RAM disponible sur l’OS émulé, en mébioctets. La valeur par défaut est 128 Mo, ce qui peut ne pas suffire pour certaines opérations.

-device virtio-blk,drive=myhd

Crée un lecteur virtio-blk nommé « myhd ». virtio-blk est un mécanisme de « paravirtualisation » pour les périphériques blocs qui permet à QEMU d’avoir de meilleures performances que s’il émulait un disque complet. Voir la documentation de QEMU et KVM pour plus d’info.

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

Utilise notre image QCOW, le fichier /tmp/qemu-image, comme stockage pour le lecteur « myhd ».

Le script run-vm.sh par défaut renvoyé par une invocation de guix system vm n’ajoute pas le drapeau -nic user par défaut. Pour avoir accès au réseau dans la vm, ajoutez le (dhcp-client-service) à votre définition et démarrez la VM avec $(guix system vm config.scm) -nic user. Un problème important avec -nic user pour le réseau, est que ping ne fonctionnera pas, car il utilise le protocole ICMP. Vous devrez utiliser une autre commande pour vérifier la connectivité réseau, par exemple guix download.

12.17.1 Se connecter par SSH

Pour activer SSH dans une VM vous devez ajouter un serveur SSH comme opennssh-service-type à votre VM (voir openssh-service-type). En plus vous devez transférer le port 22, par défaut, à l’hôte. Vous pouvez faire cela avec

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

Pour vous connecter à la VM vous pouvez lancer

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

Le -p donne le port auquel vous voulez vous connecter à ssh, -o UserKnownHostsFile=/dev/null évite que ssh ne se plaigne à chaque fois que vous modifiez le fichier config.scm et -o StrictHostKeyChecking=no évite que vous n’ayez à autoriser une connexion à un hôte inconnu à chaque fois que vous vous connectez.

Remarque : Si le ‘hostfwd’ d’exemple ci-dessus ne marche pas chez vous (ex : si votre client SSH reste bloqué en attente de connexion vers le port lié de votre VM), assurez-vous que votre VM Guix System prend bien en charge le réseau, en utilisant par exemple le type de service dhcp-client-service-type.

12.17.2 Utiliser virt-viewer avec Spice

Alternativement au client graphique qemu par défaut vous pouvez utiliser remote-viewer du paquet virt-viewer. Pour vous connecter, passez le drapeau -spice port=5930,disable-ticketing à qemu. Voir les sections précédentes pour plus d’informations sur comment faire cela.

Spice a aussi de chouettes fonctionnalités comme le partage de votre presse-papier avec la VM. Pour activer cela vous devrez aussi passer les drapeaux suivants à qemu :

-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

Vous devrez également ajouter le (spice-vdagent-service) à la définition de votre système (voir Spice service).


Suivant: Définir des services, Précédent: Invoquer guix deploy, Monter: Configuration du système   [Table des matières][Index]