Next: Configuración del gestor de arranque, Previous: Selector de servicios de nombres, Up: Configuración del sistema [Contents][Index]
Para el propósito del arranque inicial, se le proporciona al núcleo Linux-libre un disco inicial en RAM, o initrd. Un initrd contiene un sistema de archivos raíz temporal así como un guión de inicialización. Este último es responsable del montaje del sistema de archivos raíz real, así como de la carga de cualquier módulo del núcleo que pueda ser necesario para esta tarea.
El campo initrd-modules
de una declaración operating-system
le
permite especificar qué módulos del núcleo Linux-libre deben estar
disponibles en el initrd. En particular, aquí es donde se debe enumerar los
módulos que controlen realmente el disco duro donde su partición raíz se
encuentre—aunque el valor predeterminado de initrd-modules
debería
cubrir la mayor parte de casos de uso. Por ejemplo, en caso de necesitar el
módulo megaraid_sas
además de los módulos predeterminados para poder
acceder a sistema de archivos raíz, se podría escribir:
(operating-system
;; …
(initrd-modules (cons "megaraid_sas" %base-initrd-modules)))
Esta es la lista de módulos del núcleo que se incluyen en el initrd predeterminado.
Más allá, si necesita personalizaciones de un nivel más bajo, el campo
initrd
de una declaración operating-system
le permite
especificar qué initrd desea usar. El módulo (gnu system
linux-initrd)
proporciona tres formas de construir un initrd: el
procedimiento de alto nivel base-initrd
y los procedimientos de bajo
nivel raw-initrd
y expression->initrd
.
El procedimiento base-initrd
está pensado para cubrir la mayor parte
de usos comunes. Por ejemplo, si desea añadir algunos módulos del núcleo que
deben cargarse durante el arranque, puede definir el campo initrd
de
la declaración de sistema operativo de esta forma:
(initrd (lambda (sistemas-de-archivos . resto)
;; Crea un initrd estándar pero configura la red
;; con los parámetros que QEMU espera por omisión.
(apply base-initrd sistemas-de-archivos
#:qemu-networking? #t
resto)))
El procedimiento base-initrd
también maneja casos de uso comunes que
implican el uso del sistema en un anfitrión QEMU, o como un sistema “live”
con un sistema de archivos raíz volátil.
The base-initrd
procedure is built from raw-initrd
procedure.
Unlike base-initrd
, raw-initrd
doesn’t do anything high-level,
such as trying to guess which kernel modules and packages should be included
to the initrd. An example use of raw-initrd
is when a user has a
custom Linux kernel configuration and default kernel modules included by
base-initrd
are not available.
El disco inicial en RAM producido por base-initrd
o raw-initrd
inspecciona varias opciones proporcionadas por la línea de órdenes al núcleo
Linux (esto es, argumentos pasados a través de la orden linux
de
GRUB, o de la opción -append
de QEMU), notablemente:
gnu.load=boot
Indica al disco de RAM inicial que cargue arranque, un archivo que contiene un programa Scheme, una vez haya montado el sistema de archivos raíz.
Guix usa esta opción para proporcionar el control a un programa de arranque que ejecuta los programas de activación de servicios y lanza GNU Shepherd, el sistema de inicialización.
root=root
Monta raíz como el sistema de archivos raíz. raíz puede ser un
nombre de dispositivo como /dev/sda1
, una etiqueta del sistema de
archivos o un UUID del sistema de archivos. Si no se proporciona se usa el
nombre del sistema de archivos raíz de la declaración del sistema operativo.
rootfstype=type
Set the type of the root file system. It overrides the type
field of
the root file system specified via the operating-system
declaration,
if any.
rootflags=options
Set the mount options of the root file system. It overrides the
options
field of the root file system specified via the
operating-system
declaration, if any.
fsck.mode=mode
Whether to check the root file system for errors before mounting it.
mode is one of skip
(never check), force
(always check),
or auto
to respect the root <file-system>
object’s
check?
setting (see Sistemas de archivos) and run a full scan only if the
file system was not cleanly shut down.
auto
is the default if this option is not present or if mode is
not one of the above.
fsck.repair=level
The level of repairs to perform automatically if errors are found in the
root file system. level is one of no
(do not write to
root at all if possible), yes
(repair as much as possible), or
preen
to repair problems considered safe to repair automatically.
preen
is the default if this option is not present or if level
is not one of the above.
gnu.system=system
Hace que /run/booted-system y /run/current-system apunten a sistema.
modprobe.blacklist=módulos…
¶Indica al disco inicial en RAM así como a la orden modprobe
(del
paquete kmod) que deben negarse a cargar módulos. módulos debe
ser una lista separada por comas de nombres de módulos—por ejemplo,
usbkbd,9pnet
.
gnu.repl
Inicia una sesión interactiva (REPL) desde el disco inicial en RAM antes de que intente cargar los módulos del núcleo y del montaje del sistema de archivos raíz. Nuestro departamento comercial lo llama arranca-en-Guile. Como amante de Scheme, lo adorará. See Using Guile Interactively in GNU Guile Reference Manual, para más información sobre sesiones interactivas Guile.
Una vez conocidas todas las características que proporcionan los discos
iniciales en RAM que producen base-initrd
y raw-initrd
, a
continuación veremos cómo usarlas y personalizarlos más aún.
[#:volatile-root? #f] Return a derivation that builds a raw initrd.
file-systems is a list of file systems to be mounted by the initrd,
possibly in addition to the root file system specified on the kernel command
line via root. linux-modules is a list of kernel modules to
be loaded at boot time. mapped-devices is a list of device mappings
to realize before file-systems are mounted (see Dispositivos traducidos).
pre-mount is a G-expression to evaluate before realizing
mapped-devices. helper-packages is a list of packages to be
copied in the initrd. It may include e2fsck/static
or other packages
needed by the initrd to check the root file system.
Cuando su valor es verdadero, keyboard-layout es un registro
<keyboard-layout>
que denota la distribución de teclado en consola
deseada. Esto se realiza previamente a que los dispositivos configurados en
mapped-devices se inicien y antes de que los sistemas de archivos en
file-systems se monten, de manera que, en caso de que la usuaria
tuviese que introducir una contraseña o usar la sesión interactiva, esto
suceda usando la distribución de teclado deseada.
Cuando qemu-networking? es verdadero, configura la red con los parámetros QEMU estándar. Cuando virtio? es verdadero, carga módulos adicionales para que la imagen en RAM pueda ser usada como un sistema virtualizado por QEMU con controladores paravirtualizados de E/S.
Cuando volatile-root? es verdadero, el sistema de archivos raíz tiene permisos de escritura pero cualquier cambio realizado se perderá.
[#:volatile-root? #f] [#:linux-modules ’()] Devuelve como un objeto tipo-archivo una imagen de inicio en RAM genérica, con los módulos del núcleo tomados de linux. sistemas-de-archivos es una lista de sistemas de archivos listos para ser montados por la imagen, posiblemente en adición al sistema de archivos raíz especificado en la línea de órdenes del núcleo via root. mapped-devices es una lista de asociación de dispositivos a realizar antes de montar los sistemas-de-archivos.
Cuando su valor es verdadero, keyboard-layout es un registro
<keyboard-layout>
que denota la distribución de teclado en consola
deseada. Esto se realiza previamente a que los dispositivos configurados en
mapped-devices se inicien y antes de que los sistemas de archivos en
file-systems se monten, de manera que, en caso de que la usuaria
tuviese que introducir una contraseña o usar la sesión interactiva, esto
suceda usando la distribución de teclado deseada.
qemu-networking? y volatile-root? funcionan como en
raw-initrd
.
El initrd incorpora automáticamente todos los módulos del núcleo necesarios para sistemas-de-archivos y para las opciones proporcionadas. Módulos del núcleo adicionales pueden proporcionarse a través de linux-modules. Se añadirán al initrd y se cargarán en tiempo de arranque en el orden que aparezcan.
No es necesario decir que los initrd que producimos y usamos embeben un
Guile enlazado estáticamente, y que el programa de inicialización es un
programa Guile. Esto proporciona mucha flexibilidad. El procedimiento
expression->initrd
construye un initrd de ese tipo, una vez
proporcionado el programa a ejecutar en dicho initrd.
Devuelve como un objeto tipo-archivo el initrd de Linux (un archivador cpio comprimido con gzip) que contiene guile y que evalúa a exp, una expresión-G, al arranque. Todas las derivaciones a las que exp hace referencia se copian automáticamente en el initrd.
Next: Configuración del gestor de arranque, Previous: Selector de servicios de nombres, Up: Configuración del sistema [Contents][Index]