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


8.15 Exécuter Guix sur une machine virtuelle

Pour exécuter Guix sur 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.0.1.x86_64-linux.xz’ . Cette image est une image compressée au format QCOW. Vous devrez d’abord la décompresser avec xz -d puis 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 sur un terminal (voir Invoquer guix package). Vous pouvez aussi reconfigurer le système à partir de son fichier de configuration initiale disponible dans /etc/config.scm (voir Utiliser le système de configuration).

Au lieu d’utiliser cette image pré-construite, on peut construire sa propre image de machine virtuelle avec guix system vm-image (voir Invoquer guix system). L’image renvoyée est au format qcow2, que l’émulateur QEMU peut utiliser efficacement.

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 vm-image sur un matériel x8_64 :

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

-net user

Active la pile réseau non privilégiée en mode utilisateur. L’OS émulé peut accéder à l’hôte mais pas l’inverse. C’est la manière la plus simple de connecter le client.

-net nic,model=virtio

Vous devez créer une interface réseau d’un modèle donné. Si vous ne créez pas de NIC, le démarrage échouera. En supposant que votre plate-forme est x86_64, vous pouvez récupérer une liste des modèles de NIC disponibles en lançant qemu-system-x86_64 -net 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 1024

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 -net 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` -net user. Un problème important avec -net 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.

8.15.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` -net user,hostfwd=tcp::10022-:22

Pour vous connecter à la VM vous pouvez lancer

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

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.

8.15.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 aussi ajouter le voir Spice service.


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