Siguiente: , Anterior: , Subir: Configuración del sistema   [Índice general][Índice]


10.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 (véase 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 actual27.

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 uuid28, 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 (véase 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-only29, bind-mount30, 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). Véase Mount-Unmount-Remount en 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. Véase Mount-Unmount-Remount en 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)

Este valor lógico indica si el sistema de archivos se debe comprobar en busca de errores antes de montarse.

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 (véase 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 (véase Pseudo-Terminals en 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 (véase shm_open en 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.


Notas al pie

(27)

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.

(28)

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.

(29)

NdT: modo de sólo lectura.

(30)

NdT: montaje enlazado.


Siguiente: , Anterior: , Subir: Configuración del sistema   [Índice general][Índice]