Saltar al contenido

Discos y arranque

Qué aporta cada sistema de ficheros, cómo se relacionan el nombre de un fichero y sus metadatos, cómo se organiza el árbol de directorios de Linux, cómo se prepara un disco nuevo y qué ocurre desde que se pulsa el botón de encendido.

Sistemas de ficheros: qué aporta cada uno

Un sistema de ficheros es la forma de organizar los bloques de un dispositivo para que existan carpetas, nombres, tamaños y fechas. No todos guardan lo mismo, y esa es la diferencia que se pregunta: los sencillos son universales pero no saben nada de seguridad, y los completos guardan permisos, cuotas y registro de transacciones.

SistemaDónde se usaQué aporta
FAT16 y FAT32Compatibilidad universal y medios pequeñosSencillo y legible en cualquier equipo. NO guarda permisos
exFATMemorias flash y tarjetas de gran capacidadMantiene la sencillez de FAT sin sus límites de tamaño
NTFSEl sistema de ficheros habitual de WindowsPermisos, cuotas de disco, compresión y registro de transacciones
ReFSVolúmenes grandes en Windows ServerIntegridad de los datos y resistencia a errores; no admite todo lo de NTFS
APFSmacOS actualSustituye a HFS+; pensado para almacenamiento de estado sólido
HPFSHistórico, de OS/2Solo aparece como antecedente: Windows dejó de admitirlo hace décadas

Conviene deshacer dos ideas equivocadas que circulan. ReFS no es un NTFS recortado, sino un sistema distinto orientado a integridad y a volúmenes muy grandes que, a cambio, renuncia a algunas funciones de NTFS. Y HPFS no es una opción actual: era el sistema de ficheros de OS/2 y las versiones modernas de Windows no lo admiten.

FAT no guarda permisos. Esa es la razón por la que un pendrive formateado en FAT deja leer cualquier fichero en cualquier equipo.

Para el examen

  • FAT y exFAT: no guardan permisos

  • NTFS: permisos, cuotas, compresión y registro de transacciones

  • ReFS: integridad en volúmenes grandes; no es un NTFS recortado

El directorio y el i-nodo

En un sistema de ficheros de la familia Unix, el nombre de un fichero y el fichero en sí están separados. Los metadatos, es decir el tamaño, el propietario, el grupo, los permisos y las fechas, viven en una estructura llamada i-nodo, y el i-nodo se identifica por un número, no por un nombre.

El nombre está en el directorio. Un directorio no es más que un fichero cuyo contenido es una tabla de entradas, y cada entrada, la estructura interna que se llama dirent, empareja un nombre con el número de i-nodo al que corresponde. Cuando se abre un fichero por su ruta, el sistema recorre esa tabla hasta encontrar el nombre, se queda con el número de i-nodo y a partir de ahí trabaja con él.

El nombre vive en el directorio; los permisos y los metadatos viven en el i-nodo. Un directorio es una tabla de nombres y números de i-nodo.

Para el examen

  • Qué guarda el i-nodo: los metadatos: tamaño, propietario, permisos y fechas

  • Cómo se identifica: por número de i-nodo

  • Entrada de directorio (dirent): solo empareja el nombre con el número de i-nodo

Un solo árbol: el Filesystem Hierarchy Standard

Windows da una letra a cada volumen y cada letra tiene su propio árbol. Linux hace lo contrario: hay un único árbol que empieza en la raíz, y cualquier disco, partición o recurso de red se incorpora colgándolo de un directorio. El estándar que fija qué va en cada sitio es el Filesystem Hierarchy Standard, y saberlo evita buscar a ciegas en una máquina desconocida.

DirectorioQué contiene
/binÓrdenes binarias esenciales para cualquier usuario
/sbinBinarios de administración del sistema
/bootFicheros estáticos del arranque, incluido el núcleo
/devFicheros que representan los dispositivos
/etcConfiguración propia de este equipo
/homeDirectorios personales de los usuarios
/rootEl directorio personal del superusuario
/libLibrerías esenciales y módulos del núcleo
/mediaPunto de montaje de medios extraíbles
/mntPunto de montaje temporal para el administrador
/optSoftware añadido, ajeno a la distribución
/srvDatos de los servicios que ofrece esta máquina
/tmpFicheros temporales
/usrJerarquía secundaria: programas y datos de solo lectura
/varDatos que cambian: registros, colas, cachés
/procSistema de ficheros virtual con información del núcleo y de los procesos

Dos aclaraciones que se preguntan. /proc no existe en el disco: se construye en memoria cada vez que arranca la máquina y es la ventana desde la que se consulta el estado del núcleo. Y /media y /mnt no son sinónimos, aunque los dos sean puntos de montaje.

/media es para lo que se monta solo, como un pendrive. /mnt es para lo que monta el administrador a mano.

Para el examen

  • /etc y /var: configuración y lo que cambia, como los registros

  • /home y /boot: usuarios y arranque

  • /dev y /tmp: dispositivos y temporales

  • /proc: no existe en disco: se construye en memoria

  • /media y /mnt: montaje automático y montaje manual

Poner en uso un disco nuevo: particionar, formatear y montar

Un disco recién conectado no sirve de nada tal cual. Hacen falta tres pasos, y siempre en este orden, porque cada uno necesita que el anterior esté hecho.

  1. Particionar: dividir el disco en trozos. fdisk trabaja con tablas de particiones MBR y gdisk con GPT.
  2. Formatear: crear el sistema de ficheros dentro de la partición, con mkfs y el tipo que se quiera.
  3. Montar: colgar esa partición ya formateada de un directorio del árbol, con mount, para poder acceder a ella.
bash
fdisk /dev/sdb              # crear la partición
mkfs -t ext4 /dev/sdb1      # crear el sistema de ficheros
mkdir /datos
mount /dev/sdb1 /datos      # dejarlo accesible en /datos

Particionar, formatear y montar. Saltarse el orden o confundir fdisk con mkfs es el fallo típico de esta pregunta.

Para el examen

  • Orden fijo: particionar, formatear y montar

  • Particionar: fdisk para MBR y gdisk para GPT

  • Formatear: mkfs

Firmware y tabla de particiones: BIOS, UEFI, MBR y GPT

Al pulsar el botón de encendido no hay todavía sistema operativo: lo que se ejecuta es el firmware de la placa, que comprueba el hardware y busca desde dónde arrancar. Ese firmware tiene dos generaciones, y cada una va emparejada con un formato de tabla de particiones.

PiezaQué es
BIOSBasic Input Output System. Firmware clásico, de interfaz en modo texto. Verifica el equipo nada más recibir corriente y cede el control al sistema
UEFIUnified Extensible Firmware Interface. Firmware moderno: interfaz gráfica, arranque verificado y administración a distancia
MBRMaster Boot Record. Tabla de particiones clásica, con un máximo de cuatro primarias
GPTGUID Partition Table. La tabla de particiones de UEFI, con identificadores únicos y muchas más particiones
LILO y GRUBLos gestores de arranque: quienes presentan el menú y cargan el núcleo elegido

Los cuatro de MBR son cuatro particiones primarias. Si hacen falta más, una de ellas se convierte en extendida y dentro de ella se crean particiones lógicas, así que en la práctica el reparto es de tres primarias más una extendida. MBR arrastra además otro límite que fue el que lo condenó: no direcciona discos de más de 2 TiB.

De GPT se dice a veces que admite particiones infinitas pero limitadas a 128. Conviene precisarlo: la especificación no fija un máximo, y el 128 sale del tamaño de tabla que reservan las implementaciones habituales, que es de 128 entradas.

El firmware moderno es UEFI y su tabla de particiones es GPT. El clásico es BIOS con MBR y cuatro particiones primarias.

Para el examen

  • BIOS con MBR: 4 primarias, o 3 más una extendida; máximo 2 TiB

  • UEFI con GPT: 128 entradas en la tabla habitual

  • Gestores de arranque: GRUB y LILO

Las dos cadenas de arranque

El recorrido desde el encendido hasta que el núcleo toma el mando tiene dos variantes, según la generación de firmware. Son dos secuencias cortas y es muy habitual que se pregunten tal cual.

  • Con firmware clásico: BIOS, MBR, gestor de arranque (LILO o GRUB) y sector de arranque.
  • Con firmware moderno: UEFI, GPT, GRUB y carga del núcleo.

Hay un matiz que conviene tener claro, porque el esquema abreviado induce a error. Con UEFI ya no hay sector de arranque: el firmware sabe leer un sistema de ficheros y busca una partición especial, la partición de sistema EFI, formateada en FAT32, de la que carga directamente un ejecutable con extensión .efi. El sector de arranque, esos primeros bytes del disco donde cabe muy poco código, es cosa exclusiva de BIOS y MBR.

BIOS lee un sector de arranque; UEFI lee un fichero .efi de la partición EFI. Es la diferencia de fondo entre las dos cadenas.

Para el examen

  • Cadena clásica: BIOS, MBR, gestor de arranque, sector de arranque

  • Cadena moderna: UEFI, GPT, GRUB, núcleo

  • Lo que desaparece: el sector de arranque: UEFI carga un .efi desde la partición EFI en FAT32

El arranque de Windows

Windows cambió su gestor de arranque hace ya varias versiones y el examen sigue preguntando la pareja antiguo y actual. El sistema clásico lo llevaba NTLDR, que leía la configuración de un fichero de texto llamado boot.ini. El actual lo lleva bootmgr, y la configuración ya no es un fichero de texto sino un almacén binario, el BCD.

FunciónAntesAhora
Gestor de arranqueNTLDRbootmgr
Dónde está la configuraciónboot.ini, fichero de textoBCD, Boot Configuration Data
Quién carga el sistemaEl propio NTLDRwinload.exe
Al salir de hibernaciónEl propio NTLDRwinresume.exe

La distinción entre winload.exe y winresume.exe es la que más se pregunta: el primero carga el sistema desde cero y el segundo no carga nada, restaura la imagen de memoria que se guardó al hibernar.

bootmgr lee el BCD. Después toma el relevo winload.exe en un arranque normal, o winresume.exe cuando se vuelve de la hibernación.

Para el examen

  • Antes: NTLDR con boot.ini

  • Ahora: bootmgr con el BCD

  • winload.exe y winresume.exe: carga desde cero y restaura desde la hibernación