Siguiente: Invocación de guix deploy, Anterior: Configuración del gestor de arranque, Subir: Configuración del sistema [Índice general][Índice]
guix system
Una vez haya escrito la declaración de sistema operativo como se ha visto en
la sección previa, puede instanciarse mediante el uso de la orden
guix system
. Su sinopsis es:
guix system opciones… acción archivo
archivo debe ser el nombre de un archivo que contenga una declaración
operating-system
. acción especifica cómo se instancia el
sistema operativo. Actualmente se permiten los siguientes valores:
search
Muestra las definiciones de tipos de servicio disponibles que corresponden con las expresiones regulares proporcionadas, ordenadas por relevancia:
$ guix system search console name: console-fonts location: gnu/services/base.scm:806:2 extends: shepherd-root description: Install the given fonts on the specified ttys (fonts are per + virtual console on GNU/Linux). The value of this service is a list of + tty/font pairs. The font can be the name of a font provided by the `kbd' + package or any valid argument to `setfont', as in this example: + + '(("tty1" . "LatGrkCyr-8x16") + ("tty2" . (file-append + font-tamzen + "/share/kbd/consolefonts/TamzenForPowerline10x20.psf")) + ("tty3" . (file-append + font-terminus + "/share/consolefonts/ter-132n"))) ; for HDPI relevance: 9 name: mingetty location: gnu/services/base.scm:1190:2 extends: shepherd-root description: Provide console login using the `mingetty' program. relevance: 2 name: login location: gnu/services/base.scm:860:2 extends: pam description: Provide a console log-in service as specified by its + configuration value, a `login-configuration' object. relevance: 2 …
Como con guix package --search
, el resultado se obtiene en formato
recutils
, lo que facilita el filtrado de la salida (véase GNU
recutils databases en GNU recutils manual).
reconfigure
Construye el sistema operativo descrito en archivo, lo activa, y se constituye como estado actual45.
Nota: Es altamente recomendable ejecutar
guix pull
antes de la primera ejecución deguix system reconfigure
(véase Invocación de guix pull). No hacerlo puede ocasionar que se obtenga una versión más antigua de Guix una vez quereconfigure
se haya completado.
Lleva a efecto toda la configuración especificada en archivo: cuentas
de usuaria, servicios del sistema, lista de paquetes global, programas con
setuid, etc. La orden inicia los servicios del sistema especificados en
archivo que no estén actualmente en ejecución; si un servicio se
encuentra en ejecución esta orden prepara su actualización durante la
próxima parada (por ejemplo, con herd stop X
o herd restart
X
).
Esta orden crea una nueva generación cuyo número es el sucesor de la
siguiente generación (como lo muestra guix system
list-generations
). Si esa generación ya existe, será sobreescrita. Este
comportamiento es el mismo que el de guix package
(véase Invocación de guix package).
También añade una entrada al cargador de arranque para la nueva configuración del sistema operativo—en caso de que no se proporcione la opción --no-bootloader. Con GRUB, mueve las entradas de configuraciones antiguas a un submenú, permitiendo la selección de una generación previa del sistema en tiempo de arranque en caso necesario.
Tras la finalización, el nuevo sistema se despliega en /run/current-system. Este directorio contiene metadatos de procedencia: la lista de canales usados (véase Canales) y el archivo en sí, cuando esté disponible. Puede visualizar dichos metadatos con la siguiente orden:
guix system describe
Esta información es útil en caso de que desee inspeccionar posteriormente cómo se construyó está generación en particular. De hecho, asumiendo que archivo es autocontenido, puede construir de nuevo la generación n de su sistema operativo con:
guix time-machine \ -C /var/guix/profiles/system-n-link/channels.scm -- \ system reconfigure \ /var/guix/profiles/system-n-link/configuration.scm
¡Puede pensar en ello como una especie de control de versiones incorporado
en Guix! Su sistema no es únicamente un artefacto binario: transporta
sus propias fuentes con él. Véase provenance-service-type
, para más información sobre el seguimiento
de procedencia.
De manera predeterminada, reconfigure
evita que instale una
version anterior en su sistema operativo, lo que podría (re)introducir
fallos de seguridad y también provocar problemas con servicios que mantienen
estado como los sistemas de gestión de bases de datos. Puede modificar este
comportamiento con el parámetro --allow-downgrades.
switch-generation
Cambia a una generación existente del sistema. Esta acción cambia atómicamente el perfil del sistema a la generación del sistema especificada. También redistribuye las entradas de sistema del menú de arranque existentes. Marca como predeterminada la entrada de la generación de sistema especificada y mueve las entradas de otras generaciones a un submenú, si el cargador de arranque lo permite. La próxima vez que se arranque el sistema, se usará la generación de sistema especificada.
El cargador de arranque en sí no se reinstala durante esta orden. Por tanto, el cargador de arranque instalado se usa con un archivo de configuración actualizado.
La generación deseada puede especificarse explícitamente con su numero de generación. Por ejemplo, la siguiente invocación cambiaría a la generación 7 del sistema:
guix system switch-generation 7
La generación deseada puede especificarse también de forma relativa a la
generación actual con la forma +N
o -N
, donde +3
significa “3 generaciones después de la generación actual”, y -1
significa “1 generación antes de la generación actual”. Cuando se
especifica un valor negativo como -1
debe ir precedido de --
para evitar que se analice como una opción. Por ejemplo:
guix system switch-generation -- -1
Actualmente, el efecto de la invocación de esta acción es únicamente
cambiar el perfil del sistema a una generación existente y redistribuir las
entradas del menú de arranque. Para realmente empezar a usar la generación
deseada del sistema, debe reiniciar tras esta acción. En el futuro, se
actualizará para hacer lo mismo que reconfigure
, como activación y
desactivación de servicios.
Esta acción fallará si la generación especificada no existe.
roll-back
Cambia a la generación de sistema previa. Tras el siguiente arranque del
sistema, usará la generación de sistema precedente. Es la operación inversa
de reconfigure
, y es equivalente a la invocación de
switch-generation
con -1
como parámetro.
Actualmente, como con switch-generation
, debe reiniciar tras la
ejecución de esta acción para realmente empezar a usar la generación de
sistema precedente.
delete-generations
Elimina generaciones del sistema, haciendo posible su recolección con la basura (véase Invocación de guix gc, para información sobre como llevar a cabo la “recolección de basura”).
Esto funciona del mismo modo que ‘guix package --delete-generations’ (véase --delete-generations). Sin parámetros, se eliminan todas las generaciones del sistema excepto la actual:
guix system delete-generations
También puede seleccionar las generaciones que desea eliminar. El siguiente ejemplo elimina todas las generaciones del sistema que tienen más de dos meses de antigüedad:
guix system delete-generations 2m
La ejecución de esta orden reinstala automáticamente el cargador de arranque con una lista de entradas del menú actualizada—por ejemplo, el submenú de generaciones antiguas en GRUB no mostrará las generaciones que hayan sido borradas.
build
Construye la derivación del sistema operativo, que incluye todos los archivos de configuración y programas necesarios para el arranque y la ejecución del sistema. Esta acción no instala nada en realidad.
init
Construye el directorio dado con todos los archivos necesarios para ejecutar el sistema operativo especificado en archivo. Esto es útil para la instalación inicial de Guix. Por ejemplo:
guix system init mi-configuración-del-so.scm /mnt
copia a /mnt todos los elementos del almacén necesarios para la configuración especificada en mi-configuración-del-so.scm. Esto incluye los archivos de configuración, paquetes y demás. También crea otros archivos esenciales necesarios para la correcta operación del sistema—por ejemplo, los directorios /etc, /var y /run, y el archivo /bin/sh.
Esta orden también instala el cargador de arranque en el destino especificado en mi-conf-del-so.scm, siempre que no se proporcione la opción --no-bootloader.
vm
Construye una máquina virtual que contiene el sistema operativo declarado en archivo, y devuelve un guión que ejecuta dicha máquina virtual (VM).
Nota: La acción
vm
y otras presentadas a continuación pueden usar la funcionalidad KVM del núcleo Linux-libre. Específicamente, si la máquina permite la virtualización hardware, debe cargarse el correspondiente módulo KVM del núcleo, debe existir el nodo del dispositivo /dev/kvm y tanto la propia usuaria como las usuarias de construcción del daemon deben tener acceso de lectura y escritura al mismo (véase Configuración del entorno de construcción).
Los parámetros proporcionados al guión se pasan a QEMU como en el siguiente ejemplo, que activa la red y solicita 1 GiB de RAM para la máquina emulada:
$ /gnu/store/…-run-vm.sh -m 1024 -smp 2 -net user,model=virtio-net-pci
La VM comparte su almacén con el sistema anfitrión.
Sistemas de archivos adicionales pueden compartirse entre la máquina anfitriona y la virtual mediante el uso de las opciones --share y --expose: la primera especifica un directorio a compartir con acceso de escritura, mientras que la última proporciona solo acceso de lectura al directorio compartido.
El siguiente ejemplo crea una máquina virtual en la que el directorio de la usuaria es accesible en modo solo-lecture, y donde el directorio /intercambio esta asociado de forma lectura-escritura con $HOME/tmp en el sistema anfitrión:
guix system vm mi-configuración.scm \ --expose=$HOME --share=$HOME/tmp=/intercambio
En GNU/Linux, lo predeterminado es arrancar directamente el núcleo; esto posee la ventaja de necesitar únicamente una pequeña imagen del disco raíz pequeña ya el el almacén de la anfitriona puede montarse.
La opción --full-boot fuerza una secuencia de arranque completa, desde el cargador de arranque. Esto necesita más espacio en disco ya que la imagen raíz que contiene el núcleo, initrd y los archivos de datos del cargador de arranque deben crearse. La opción --image-size puede usarse para especificar el tamaño de la imagen.
image
docker-image
Devuelve una máquina virtual, imagen de disco o imagen Docker del sistema
operativo declarado en archivo que es independiente. Por omisión,
guix system
estima el tamaño de la imagen necesario para almacenar
el sistema, pero puede usar la opción --image-size para especificar
un valor. Las imágenes Docker se construyen para que contengan exactamente
lo que necesitan, por lo que la opción --image-size se ignora en el
caso de docker-image
.
The image
command can produce various image types. The image type
can be selected using the --image-type option. It defaults to
efi-raw
. When its value is iso9660
, the --label
option can be used to specify a volume ID with image
. By default,
the root file system of a disk image is mounted non-volatile; the
--volatile option can be provided to make it volatile instead.
When using image
, the bootloader installed on the generated image is
taken from the provided operating-system
definition. The following
example demonstrates how to generate an image that uses the
grub-efi-bootloader
bootloader and boot it with QEMU:
image=$(guix system image --image-type=qcow2 \ gnu/system/examples/lightweight-desktop.tmpl) cp $image /tmp/my-image.qcow2 chmod +w /tmp/my-image.qcow2 qemu-system-x86_64 -enable-kvm -hda /tmp/my-image.qcow2 -m 1000 \ -bios $(guix build ovmf)/share/firmware/ovmf_x64.bin
When using the efi-raw
image type, a raw disk image is produced; it
can be copied as is to a USB stick, for instance. Assuming /dev/sdc
is the device corresponding to a USB stick, one can copy the image to it
using the following command:
# dd if=$(guix system image my-os.scm) of=/dev/sdc status=progress
La orden --list-image-types
muestra todos los tipos de imagen
disponibles.
When using the qcow2
image type, the returned image is in qcow2
format, which the QEMU emulator can efficiently use. Véase Ejecutar Guix en una máquina virtual, for more information on how to run the image in a virtual machine. The
grub-bootloader
bootloader is always used independently of what is
declared in the operating-system
file passed as argument. This is to
make it easier to work with QEMU, which uses the SeaBIOS BIOS by default,
expecting a bootloader to be installed in the Master Boot Record (MBR).
Con docker-image
se produce una imagen Docker. Guix construye la
imagen de cero, no de una imagen Docker base preexistente. Como resultado,
contiene exactamente lo definido en el archivo de configuración del
sistema operativo. Puede cargar la imagen y ejecutar un contenedor Docker
mediante el uso de ordenes como las siguientes:
id_imagen="`docker load < guix-system-docker-image.tar.gz`" id_contenedor="`docker create $id_imagen`" docker start $id_contenedor
Esta orden arranca un contenedor Docker nuevo a partir de la imagen
especificada. El sistema Guix se arrancará de la manera habitual, lo que
implica el inicio de cualquier servicio que se haya definido en la
configuración del sistema operativo. Puede iniciar una sesión de shell
interactiva en el contenedor mediante el uso de docker exec
:
docker exec -ti $container_id /run/current-system/profile/bin/bash --login
Dependiendo de lo que ejecute en el contenedor Docker, puede ser necesario
proporcionar permisos adicionales al contenedor. Por ejemplo, si pretende
construir software mediante el uso de Guix dentro del contenedor Docker,
puede tener que proporcionar la opción --privileged a docker
create
.
Por último, la opción --network afecta a guix system
docker-image
: produce una imagen donde la red supuestamente se comparte con
el sistema anfitrión, y por lo tanto no contiene servicios como nscd o
NetworkManager.
container
Devuelve un guión de la ejecución del sistema operativo declarado en archivo dentro de un contenedor. Los contenedores son un conjunto de mecanismos de aislamiento ligeros que proporciona el núcleo Linux-libre. Los contenedores necesitan sustancialmente menos recursos que máquinas virtuales completas debido a que el núcleo, los objetos compartidos y otros recursos pueden compartirse con el sistema anfitrión; esto también significa que proporcionan un menor aislamiento.
En este momento, el guión debe ejecutarse como root para permitir más de una única usuaria y grupo. El contenedor comparte su almacén con la máquina anfitriona.
Como con la acción vm
(véase guix system vm), sistemas de archivos
adicionales a compartir entre la máquina anfitriona y el contenedor pueden
especificarse mediante el uso de las opciones --share y
--expose:
guix system container mi-configuración.scm \ --expose=$HOME --share=$HOME/tmp=/intercambio
Nota: Esta opción requiere Linux-libre 3.19 o posterior.
opciones puede contener cualquiera de las opciones de construcción comunes (véase Opciones comunes de construcción). Además, opciones puede contener una de las siguientes:
Considera el sistema operativo al cual evalúa expr. Es una alternativa a la especificación de un archivo que evalúe a un sistema operativo. Se usa para la generación de la imagen de instalación de Guix (véase Construcción de la imagen de instalación).
Intenta la construcción para sistema en vez de para el tipo de la
máquina anfitriona. Funciona como en guix build
(véase Invocación de guix build).
Devuelve el nombre de archivo de la derivación del sistema operativo proporcionado sin construir nada.
Como se ha mostrado previamente, guix system init
y guix
system reconfigure
siempre almacenan información de procedencia a través de
un servicio dedicado (véase provenance-service-type
). No obstante, otras órdenes no hacen esto
de manera predeterminada. Si desea, digamos, crear una imagen de máquina
virtual que contenga información de procedencia, puede ejecutar:
guix system image -t qcow2 --save-provenance config.scm
De este modo, la imagen resultante “embeberá sus propias fuentes” de manera efectiva en forma de metadatos en /run/current-system. Con dicha información se puede reconstruir la imagen para asegurarse de que realmente contiene lo que dice contener; o se puede usar para derivar una variante de la imagen.
For the image
action, create an image with given type.
When this option is omitted, guix system
uses the efi-raw
image type.
--file-system-type=iso9660 produce una imagen ISO-9660, que puede ser grabada en CD y DVD.
For the image
action, create an image of the given size.
size may be a number of bytes, or it may include a unit as a suffix
(véase size specifications en GNU Coreutils).
Cuando se omite esta opción, guix system
calcula una estimación
del tamaño de la imagen en función del tamaño del sistema declarado en
archivo.
Con la acción container
, permite a los contenedores acceder a la red
de la máquina anfitriona, es decir, no crea un espacio de nombres de red.
Hace que archivo sea un enlace simbólico al resultado, y lo registra como una raíz del recolector de basura.
Omite las comprobaciones de seguridad previas a la instalación.
Por omisión, guix system init
y guix system reconfigure
realizan comprobaciones de seguridad: se aseguran de que los sistemas de
archivos que aparecen en la declaración operating-system
realmente
existen (véase Sistemas de archivos) y que cualquier módulo del núcleo Linux que
pudiese necesitarse durante el arranque se encuentre en
initrd-modules
(véase Disco en RAM inicial). El uso de esta opción
omite todas estas comprobaciones.
Indica a guix system reconfigure
que permita la instalación de
versiones más antiguas.
De manera predeterminada reconfigure
evita que instale una versión
más antigua. Esto se consigue comparando la información de procedencia en su
sistema operativo (mostrada por guix system describe
) con aquella
de la orden guix
(mostrada por guix describe
). Si las
revisiones de guix
no son descendientes de las usadas en su
sistema, guix system reconfigure
termina con un
error. Proporcionar la opción --allow-downgrades le permite evitar
estas comprobaciones.
Nota: Asegúrese de entender las implicaciones de seguridad antes de usar la opción --allow-downgrades.
Aplica estrategia cuando ocurre un error durante la lectura de archivo. estrategia puede ser uno de los siguientes valores:
nothing-special
Informa concisamente del error y termina la ejecución. Es la estrategia predeterminada.
backtrace
Del mismo modo, pero también muestra la secuencia de llamadas.
debug
Informa del error y entra en el depurador de Guile. A partir de ahí, puede
ejecutar órdenes como ,bt
para obtener la secuencia de llamadas,
,locals
para mostrar los valores de las variables locales, e
inspeccionar el estado del programa de forma más general. Véase Debug Commands en GNU Guile Reference Manual, para una lista de órdenes de
depuración disponibles.
Una vez haya construido, configurado, reconfigurado y re-reconfigurado su instalación de Guix, puede encontrar útil enumerar las generaciones del sistema operativo disponibles en el disco—y que puede seleccionar en el menú de arranque:
describe
Describe la generación actual del sistema: su nombre de archivo, el núcleo y el cargador de arranque usados, etcétera, así como información de procedencia cuando esté disponible.
list-generations
Muestra un resumen de cada generación del sistema operativo disponible en el
disco, de manera legible por humanos. Es similar a la opción
--list-generations de guix package
(véase Invocación de guix package).
De manera opcional, se puede especificar un patrón, con la misma sintaxis
que la usada en guix package --list-generations
, para restringir
la lista de generaciones mostradas. Por ejemplo, la siguiente orden muestra
generaciones que tienen hasta 10 días de antigüedad:
$ guix system list-generations 10d
¡La orden guix system
tiene aún más que ofrecer! Las siguientes
ordenes le permiten visualizar cual es la relación entre los servicios del
sistema:
extension-graph
Emit to standard output the service extension graph of the operating
system defined in file (véase Composición de servicios, for more
information on service extensions). By default the output is in
Dot/Graphviz format, but you can choose a different format with
--graph-backend, as with guix graph
(véase --backend):
La orden:
$ guix system extension-graph archivo | xdot -
muestra las relaciones de extensión entre los servicios.
shepherd-graph
Emit to standard output the dependency graph of shepherd services of the operating system defined in file. Véase Servicios de Shepherd, for more information and for an example graph.
Again, the default output format is Dot/Graphviz, but you can pass --graph-backend to select a different one.
Esta acción (y las acciones
relacionadas switch-generation
y roll-back
) son usables
únicamente en sistemas que ya ejecuten el sistema Guix.
Siguiente: Invocación de guix deploy, Anterior: Configuración del gestor de arranque, Subir: Configuración del sistema [Índice general][Índice]