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


8.16 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 \
   -nic user,model=virtio-net-pci \
   -enable-kvm -m 1024 \
   -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.

-nic user,model=virtio-net-pci

Enable the unprivileged user-mode network stack. The guest OS can access the host but not vice versa. This is the simplest way to get the guest OS online. model specifies which network device to emulate: virtio-net-pci is a special device made for virtualized operating systems and recommended for most uses. Assuming your hardware platform is x86_64, you can get a list of available NIC models by running 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 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 ».

The default run-vm.sh script that is returned by an invocation of guix system vm does not add a -nic user flag by default. To get network access from within the vm add the (dhcp-client-service) to your system definition and start the VM using `guix system vm config.scm` -nic user. An important caveat of using -nic user for networking is that ping will not work, because it uses the ICMP protocol. You’ll have to use a different command to check for network connectivity, for example guix download.

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

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.16.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]