Suivant: Définir des services, Précédent: Invoquer guix deploy
, Monter: Configuration du système [Table des matières][Index]
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-d108a7a.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-d108a7a.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 guix-system-vm-image-d108a7a.x86_64-linux.qcow2, 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
.
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
.
virt-viewer
avec SpiceAlternativement 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]