Next: Definición de servicios, Previous: Invoking guix deploy
, Up: Configuración del sistema [Contents][Index]
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-1592f1a.x86_64-linux.qcow2. This image is a compressed image in QCOW format. 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
(see 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 (see Uso de la configuración del sistema).
Instead of using this pre-built image, one can also build their own image
using guix system image
(see Invoking guix system
).
If you built your own image, you must copy it out of the store (see 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 2048 \ -device virtio-blk,drive=myhd \ -drive if=none,file=guix-system-vm-image-1592f1a.x86_64-linux.qcow2,id=myhd
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 2048
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
Use our QCOW image, the guix-system-vm-image-1592f1a.x86_64-linux.qcow2 file, as the backing store of the “myhd” drive.
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
.
Para activar SSH dentro de una máquina virtual debe añadir un servidor SSH
como (openssh-service-type)
en su máquina virtual (see 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.
Nota: If you find the above ‘hostfwd’ example not to be working (e.g., your SSH client hangs attempting to connect to the mapped port of your VM), make sure that your Guix System VM has networking support, such as by using the
dhcp-client-service-type
service type.
virt-viewer
con SpiceComo 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)
(see servicio
Spice).
Next: Definición de servicios, Previous: Invoking guix deploy
, Up: Configuración del sistema [Contents][Index]