Siguiente: , Anterior: , Subir: Configuración del sistema   [Índice general][Índice]


10.16 Ejecución de Guix en una máquina virtual

To run Guix in a virtual machine (VM), one can use the pre-built Guix VM image distributed at https://ftp.gnu.org/gnu/guix/guix-system-vm-image-1.3.0.x86_64-linux.qcow2. This image is a compressed image in QCOW format. You will first need to decompress with xz -d, and then you can pass it to an emulator such as QEMU (see below for details).

Esta imagen arranca en el entorno gráfico Xfce y contiene algunas herramientas usadas de forma común. Puede instalar más software en la imagen mediante la ejecución de guix package en un terminal (véase Invocación de guix package). También puede reconfigurar el sistema en base a su archivo de configuración inicial, disponible como /run/current-system/configuration.scm (véase Uso de la configuración del sistema).

En vez de usar esta imagen preconstruida, se puede construir una imagen propia para máquina virtual mediante el uso de guix system vm-image (véase Invocación de guix system). La imagen devuelta se encuentra en formato qcow2, el cual el emulador QEMU puede usar de manera eficiente.

If you built your own image, you must copy it out of the store (véase El almacén) and give yourself permission to write to the copy before you can use it. When invoking QEMU, you must choose a system emulator that is suitable for your hardware platform. Here is a minimal QEMU invocation that will boot the result of guix system image -t qcow2 on x86_64 hardware:

$ qemu-system-x86_64 \
   -nic user,model=virtio-net-pci \
   -enable-kvm -m 1024 \
   -device virtio-blk,drive=midisco \
   -drive if=none,file=/tmp/imagen-qemu,id=midisco

Aquí está el significado de cada una de esas opciones:

qemu-system-x86_64

Esto especifica la plataforma hardware a emular. Debe corresponder con el anfitrión.

-nic user,model=virtio-net-pci

Activa la pila de red en espacio de usuaria sin privilegios. El SO anfitrión puede acceder a la máquina virtualizada pero no al revés. Este es el modo más simple de poner la máquina en red. model especifica que dispositivo de red emular: virtio-net-pci es un dispositivo especial para sistemas operativos virtualizados y recomendado para la mayor parte de usos. Asumiendo que su plataforma de hardware es x86_64, puede obtener una lista de adaptadores de red disponibles ejecutando qemu-system-x86_64 -nic model=help.

-enable-kvm

Si su sistema tiene extensiones de virtualización por hardware, la activación de la implementación de máquinas virtuales (KVM) del núcleo Linux hará que la ejecución sea más rápida.

-m 1024

RAM disponible para el sistema operativo virtualizado, en mebibytes. El valor predeterminado es 128 MiB, que puede ser insuficiente para algunas operaciones.

-device virtio-blk,drive=midisco

Crea un dispositivo virtio-blk llamado “midisco”. virtio-blk es un mecanismo de “paravirtualización” de dispositivos de bloques que permite a QEMU obtener un mejor rendimiento que se emulase una unidad de disco completa. Véase la documentación de QEMU y KVM para más información.

-drive if=none,file=/tmp/imagen-qemu,id=midisco

Usa nuestra imagen QCOW, el archivo /tmp/imagen-qemu, como almacenamiento físico para la unidad “midisco”.

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.

10.16.1 Conexión a través de SSH

Para activar SSH dentro de una máquina virtual debe añadir un servidor SSH como (openssh-service-type) en su máquina virtual (véase openssh-service-type). Además debe que redirigir el puerto SSH, el 22 por omisión, a la máquina anfitriona. Puede hacerlo con

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

Para conectarse a la máquina virtual puede ejecutar

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

La -p indica a ssh el puerto al que se debe conectar. -o UserKnownHostsFile=/dev/null evita que ssh se queje cada vez que modifique su archivo config.scm y la orden -o StrictHostKeyChecking=no evita que tenga que autorizar la conexión a una máquina desconocida cada vez que se conecte.

10.16.2 Uso de virt-viewer con Spice

Como alternativa al cliente gráfico predeterminado de qemu puede usar remote-viewer del paquete virt-viewer. Para conectarse proporcione la opción -spice port=5930,disable-ticketing a qemu. Véase la sección previa para más información sobre cómo hacer esto.

Spice also allows you to do some nice stuff like share your clipboard with your VM. To enable that you’ll also have to pass the following flags to 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

También deber añadir a su definición de sistema el servicio (spice-vdagent-service) (véase servicio Spice).


Siguiente: , Anterior: , Subir: Configuración del sistema   [Índice general][Índice]