Next: Invoking guix deploy
, Previous: Configuración del gestor de arranque, Up: Configuración del sistema [Contents][Index]
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 (see GNU
recutils databases in GNU recutils manual).
edit
Edit or view the definition of the given service types.
For example, the command below opens your editor, as specified by the
EDITOR
environment variable, on the definition of the openssh
service type:
guix system edit openssh
reconfigure
Construye el sistema operativo descrito en archivo, lo activa, y se constituye como estado actual51.
Nota: Es altamente recomendable ejecutar
guix pull
antes de la primera ejecución deguix system reconfigure
(see Invocación deguix pull
). No hacerlo puede ocasionar que se obtenga una versión más antigua de Guix una vez quereconfigure
se haya completado.
This effects all the configuration specified in file: user accounts,
system services, global package list, privileged programs, etc. The command
starts system services specified in file that are not currently
running; if a service is currently running this command will arrange for it
to be upgraded the next time it is stopped (e.g. by herd stop X
or
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
(see Invocación de guix package
).
It adds a bootloader menu entry for the new OS configuration, —unless --no-bootloader is passed. For GRUB, it moves entries for older configurations to a submenu, allowing you to choose an older system generation at boot time should you need it.
On Linux, guix system reconfigure
also loads the new system for
fast reboot via kexec: running reboot --kexec
will boot the
new system by directly executing its kernel, thus bypassing the BIOS
initialization phase and bootloader (see Invoking reboot in The
GNU Shepherd Manual). You can avoid this behavior by passing the
--no-kexec option.
Tras la finalización, el nuevo sistema se despliega en /run/current-system. Este directorio contiene metadatos de procedencia: la lista de canales usados (see 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. See 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 (see 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’ (see --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.
This command also installs bootloader on the targets specified in my-os-config, unless the --no-bootloader option was passed.
installer
Run the installer. Usually the installer is built as an iso image, copied to a USB Stick or DVD, and booted from (Instalación desde memoria USB y DVD). If your machine already runs Guix and you still want to run the installer, e.g., for testing purposes, you can skip the step of creating an iso and run for instance:
guix system installer --dry-run
Nota: If you do not use --dry-run then you need to run as root. Be very careful when running the installer as root, it can cause data loss or render your system unbootable!
vm
¶Build a virtual machine (VM) that contains the operating system declared in file, and return a script to run that 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 (see 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 -nic user,model=virtio-net-pci
It’s possible to combine the two steps into one:
$ $(guix system vm my-config.scm) -m 1024 -smp 2 -nic user,model=virtio-net-pci
La VM comparte su almacén con el sistema anfitrión.
By default, the root file system of the VM is mounted volatile; the
--persistent option can be provided to make it persistent instead.
In that case, the VM disk-image file will be copied from the store to the
TMPDIR
directory to make it writable.
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.
The --full-boot option forces a complete boot sequence, starting with the bootloader. This requires more disk space since a root image containing at least the kernel, initrd, and bootloader data files must be created.
The --image-size option can be used to specify the size of the image.
The --no-graphic option will instruct guix system
to
spawn a headless VM that will use the invoking tty for IO. Among other
things, this enables copy-pasting, and scrollback. Use the ctrl-a
prefix to issue QEMU commands; e.g. ctrl-a h prints a help,
ctrl-a x quits the VM, and ctrl-a c switches between the QEMU
monitor and the VM.
image
¶The image
command can produce various image types. The image type
can be selected using the --image-type option. It defaults to
mbr-hybrid-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-x86-64)/share/firmware/ovmf_x64.bin
When using the mbr-hybrid-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. See Ejecución de 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).
When using the docker
image type, a Docker image is produced. Guix
builds the image from scratch, not from a pre-existing Docker base image.
As a result, it contains exactly what you define in the operating
system configuration file. You can then load the image and launch a Docker
container using commands like the following:
image_id="$(docker load < guix-system-docker-image.tar.gz)" container_id="$(docker create $image_id)" docker start $container_id
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
(see 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
The --share and --expose options can also be passed to the generated script to bind-mount additional directories into the container.
Nota: Esta opción requiere Linux-libre 3.19 o posterior.
opciones puede contener cualquiera de las opciones de construcción comunes (see 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 (see 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
(see Invocación de guix build
).
Compilación cruzada para la tripleta, que debe ser una tripleta GNU
válida, cómo "aarch64-linux-gnu"
(see GNU configuration triplets in Autoconf).
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 (see 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
mbr-hybrid-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
(see size specifications in 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 (see Sistemas de archivos) y que cualquier módulo del núcleo Linux que
pudiese necesitarse durante el arranque se encuentre en
initrd-modules
(see 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. See Debug
Commands in 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 the running system generation: its file name, the kernel and bootloader used, etc., as well as provenance information when available.
The --list-installed
flag is available, with the same syntax that is
used in guix package --list-installed
(see Invocación de guix package
). When the flag is used, the description will include a list of
packages that are currently installed in the system profile, with optional
filtering based on a regular expression.
Nota: The running system generation—referred to by /run/current-system—is not necessarily the current system generation—referred to by /var/guix/profiles/system: it differs when, for instance, you chose from the bootloader menu to boot an older generation.
It can also differ from the booted system generation—referred to by /run/booted-system—for instance because you reconfigured the system in the meantime.
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
(see 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
The --list-installed
flag may also be specified, with the same syntax
that is used in guix package --list-installed
. This may be
helpful if trying to determine when a package was added to the system.
¡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 (see 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
(see --backend):
La orden:
$ guix system extension-graph archivo | xdot -
muestra las relaciones de extensión entre los servicios.
Nota: The
dot
program is provided by thegraphviz
package.
shepherd-graph
Emit to standard output the dependency graph of shepherd services of the operating system defined in file. See 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.
Next: Invoking guix deploy
, Previous: Configuración del gestor de arranque, Up: Configuración del sistema [Contents][Index]