Next: , Previous: , Up: Configuración del sistema   [Contents][Index]


12.3 Sistemas de archivos

La lista de sistemas de archivos que deben montarse se especifica en el campo file-systems de la declaración del sistema operativo (see Uso de la configuración del sistema). Cada sistema de archivos se declara usando la forma file-system, como en el siguiente ejemplo:

(file-system
  (mount-point "/home")
  (device "/dev/sda3")
  (type "ext4"))

Como es habitual, algunos de los campos son obligatorios—aquellos mostrados en el ejemplo previo—mientras que otros pueden omitirse. Se describen a continuación.

Tipo de datos: file-system

Objetos de este tipo representan los sistemas de archivos a montar. Contienen los siguientes campos:

type

Este campo es una cadena que especifica el tipo de sistema de archivos—por ejemplo, "ext4".

mount-point

Designa la ruta donde el sistema de archivos debe montarse.

device

Nombra la “fuente” del sistema de archivos. Puede ser una de estas tres opciones: una etiqueta de sistema de archivos, un UUID de sistema de archivos o el nombre de un nodo /dev. Las etiquetas y UUID ofrecen una forma de hacer referencia a sistemas de archivos sin codificar su nombre de dispositivo actual30.

Las etiquetas del sistema de archivos se crean mediante el uso del procedimiento file-system-label, los UUID se crean mediante el uso de uuid y los nodos /dev son simples cadenas. A continuación se proporciona un ejemplo de un sistema de archivos al que se hace referencia mediante su etiqueta, como es mostrada por la orden e2label:

(file-system
  (mount-point "/home")
  (type "ext4")
  (device (file-system-label "mi-home")))

Los UUID se convierten dede su representación en forma de cadena (como se muestra con la orden tune2fs -l) mediante el uso de la forma uuid31, como sigue:

(file-system
  (mount-point "/home")
  (type "ext4")
  (device (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb")))

Cuando la fuente de un sistema de archivos es un dispositivo traducido (see Dispositivos traducidos), su campo device debe hacer referencia al nombre del dispositivo traducido—por ejemplo, "/dev/mapper/particion-raiz". Esto es necesario para que el sistema sepa que el montaje del sistema de archivos depende del establecimiento de la traducción de dispositivos correspondiente.

flags (predeterminadas: '())

Es una lista de símbolos que indican opciones del montado. Las opciones reconocidas incluyen read-only32, bind-mount33, no-dev (prohibición del acceso a archivos especiales), no-suid (ignora los bits setuid y setgid), no-atime (no actualiza la marca de tiempo del acceso a archivos), strict-atime (actualiza la marca de tiempo del acceso a archivos), lazy-time (únicamente actualiza la marca de tiempo en la versión en memoria del nodo-i) y no-exec (no permite de la ejecución de programas). See Mount-Unmount-Remount in The GNU C Library Reference Manual, para más información sobre estas opciones.

options (predeterminadas: #f)

Es o bien #f, o bien una cadena que denota las opciones de montaje proporcionadas al controlador del sistema de archivos. See Mount-Unmount-Remount in The GNU C Library Reference Manual para obtener detalles, y ejecute man 8 mount para conocer las opciones de varios sistemas de archivos. Tenga en cuenta los procedimientos file-system-options->alist y alist->file-system-options de (gnu system file-systems) pueden usarse para convertir las opciones de sistema de archivos proporcionadas como una lista asociativa a su representación en cadena y viceversa.

mount? (predeterminado: #t)

Este valor indica si debe montarse el sistema de archivos automáticamente al iniciar el sistema. Cuando se establece como #f, el sistema de archivos tiene una entrada en /etc/fstab (el cual es leído por la orden mount) pero no se montará automáticamente.

needed-for-boot? (predeterminado: #f)

Este valor lógico indica si el sistema de archivos es necesario para el arranque. Si es verdadero, el sistema de archivos se monta al cargar el disco inicial en RAM (initrd). Este es siempre el caso, por ejemplo, para el sistema de archivos raíz.

check? (predeterminado: #t)

This Boolean indicates whether the file system should be checked for errors before being mounted. How and when this happens can be further adjusted with the following options.

skip-check-if-clean? (default: #t)

When true, this Boolean indicates that a file system check triggered by check? may exit early if the file system is marked as “clean”, meaning that it was previously correctly unmounted and should not contain errors.

Setting this to false will always force a full consistency check when check? is true. This may take a very long time and is not recommended on healthy systems—in fact, it may reduce reliability!

Conversely, some primitive file systems like fat do not keep track of clean shutdowns and will perform a full scan regardless of the value of this option.

repair (default: 'preen)

When check? finds errors, it can (try to) repair them and continue booting. This option controls when and how to do so.

If false, try not to modify the file system at all. Checking certain file systems like jfs may still write to the device to replay the journal. No repairs will be attempted.

If #t, try to repair any errors found and assume “yes” to all questions. This will fix the most errors, but may be risky.

If 'preen, repair only errors that are safe to fix without human interaction. What that means is left up to the developers of each file system and may be equivalent to “none” or “all”.

create-mount-point? (predeterminado: #f)

Cuando es verdadero, el punto de montaje es creado si no existía previamente.

mount-may-fail? (predeterminado: #f)

Cuando tiene valor verdadero indica que el montaje de este sistema de archivos puede fallar pero no debe considerarse un error. Es útil en casos poco habituales; un ejemplo de esto es efivarfs, un sistema de archivos que únicamente puede montarse en sistemas EFI/UEFI.

dependencies (predeterminadas: '())

Una lista de objetos <file-system> o <mapped-device> que representan sistemas de archivos que deben montarse o dispositivos traducidos que se deben abrir antes (y desmontar o cerrar después) que el declarado.

Como ejemplo, considere la siguiente jerarquía de montajes: /sys/fs/cgroup es una dependencia de /sys/fs/cgroup/cpu y /sys/fs/cgroup/memory.

Otro ejemplo es un sistema de archivos que depende de un dispositivo traducido, por ejemplo una partición cifrada (see Dispositivos traducidos).

Procedimiento Scheme: file-system-label str

Este procedimiento devuelve un objeto opaco de etiqueta del sistema de archivos a partir de str, una cadena:

(file-system-label "home")
 #<file-system-label "home">

Las etiquetas del sistema de archivos se usan para hacer referencia a los sistemas de archivos por etiqueta en vez de por nombre de dispositivo. Puede haber encontrado previamente ejemplos en el texto.

El módulo (gnu system file-systems) exporta las siguientes variables útiles.

Variable Scheme: %base-file-systems

Estos son los sistemas de archivos esenciales que se necesitan en sistemas normales, como %pseudo-terminal-file-system y %immutable-store (véase a continuación). Las declaraciones de sistemas operativos deben contener siempre estos al menos.

Variable Scheme: %pseudo-terminal-file-systems

El sistema de archivos que debe montarse como /dev/pts. Permite la creación de pseudoterminales a través de openpty y funciones similares (see Pseudo-Terminals in The GNU C Library Reference Manual). Los pseudoterminales son usados por emuladores de terminales como xterm.

Variable Scheme: %shared-memory-file-system

Este sistema de archivos se monta como /dev/shm y se usa para permitir el uso de memoria compartida entre procesos (see shm_open in The GNU C Library Reference Manual).

Variable Scheme: %immutable-store

Este sistema de archivos crea un montaje enlazado (“bind-mount”) de /gnu/store, permitiendo solo el acceso de lectura para todas las usuarias incluyendo a root. Esto previene modificaciones accidentales por software que se ejecuta como root o por las administradoras del sistema.

El daemon sí es capaz de escribir en el almacén: vuelve a montar /gnu/store en modo lectura-escritura en su propio “espacio de nombres”.

Variable Scheme: %binary-format-file-system

El sistema de archivos binfmt_misc, que permite que el manejo de tipos de archivos ejecutables arbitrarios se delegue al espacio de usuaria. Necesita la carga del módulo del núcleo binfmt.ko.

Variable Scheme: %fuse-control-file-system

El sistema de archivos fusectl, que permite a usuarias sin privilegios montar y desmontar sistemas de archivos de espacio de usuaria FUSE. Necesita la carga del módulo del núcleo fuse.ko.

El módulo (gnu system uuid) proporciona herramientas para tratar con “identificadores únicos” de sistemas de archivos (UUID).

Procedimiento Scheme: uuid str [tipo]

Devuelve un objeto opaco de UUID (identificador único) del tipo (un símbolo) procesando str (una cadena):

(uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb")
 #<<uuid> type: dce bv: …>

(uuid "1234-ABCD" 'fat)
 #<<uuid> type: fat bv: …>

tipo puede ser dce, iso9660, fat, ntfs, o uno de sus sinónimos habitualmente usados para estos tipos.

Los UUID son otra forma de hacer referencia de forma inequívoca a sistemas de archivos en la configuración de sistema operativo. Puede haber encontrado previamente ejemplos en el texto.


Footnotes

(30)

Fíjese que, aunque es tentador usa /dev/disk/by-uuid y nombres de dispositivo similares para obtener el mismo resultado, no es lo recomendado: estos nodo especiales de dispositivos se crean por el daemon udev y puede no estar disponible cuando el dispositivo sea montado.

(31)

La forma uuid espera un UUID de 16 bytes como se define en la RFC 4122. Este es el formato de UUID que usan la familia de sistemas de archivos ext2 y otros, pero es diferente de los “UUID” de los sistemas de archivos FAT, por ejemplo.

(32)

NdT: modo de sólo lectura.

(33)

NdT: montaje enlazado.


Next: , Previous: , Up: Configuración del sistema   [Contents][Index]