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.
| Sistema | Dónde se usa | Qué aporta |
|---|---|---|
| FAT16 y FAT32 | Compatibilidad universal y medios pequeños | Sencillo y legible en cualquier equipo. NO guarda permisos |
| exFAT | Memorias flash y tarjetas de gran capacidad | Mantiene la sencillez de FAT sin sus límites de tamaño |
| NTFS | El sistema de ficheros habitual de Windows | Permisos, cuotas de disco, compresión y registro de transacciones |
| ReFS | Volúmenes grandes en Windows Server | Integridad de los datos y resistencia a errores; no admite todo lo de NTFS |
| APFS | macOS actual | Sustituye a HFS+; pensado para almacenamiento de estado sólido |
| HPFS | Histórico, de OS/2 | Solo 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.
| Directorio | Qué contiene |
|---|---|
| /bin | Órdenes binarias esenciales para cualquier usuario |
| /sbin | Binarios de administración del sistema |
| /boot | Ficheros estáticos del arranque, incluido el núcleo |
| /dev | Ficheros que representan los dispositivos |
| /etc | Configuración propia de este equipo |
| /home | Directorios personales de los usuarios |
| /root | El directorio personal del superusuario |
| /lib | Librerías esenciales y módulos del núcleo |
| /media | Punto de montaje de medios extraíbles |
| /mnt | Punto de montaje temporal para el administrador |
| /opt | Software añadido, ajeno a la distribución |
| /srv | Datos de los servicios que ofrece esta máquina |
| /tmp | Ficheros temporales |
| /usr | Jerarquía secundaria: programas y datos de solo lectura |
| /var | Datos que cambian: registros, colas, cachés |
| /proc | Sistema 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.
- Particionar: dividir el disco en trozos. fdisk trabaja con tablas de particiones MBR y gdisk con GPT.
- Formatear: crear el sistema de ficheros dentro de la partición, con mkfs y el tipo que se quiera.
- Montar: colgar esa partición ya formateada de un directorio del árbol, con mount, para poder acceder a ella.
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 /datosParticionar, 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.
| Pieza | Qué es |
|---|---|
| BIOS | Basic 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 |
| UEFI | Unified Extensible Firmware Interface. Firmware moderno: interfaz gráfica, arranque verificado y administración a distancia |
| MBR | Master Boot Record. Tabla de particiones clásica, con un máximo de cuatro primarias |
| GPT | GUID Partition Table. La tabla de particiones de UEFI, con identificadores únicos y muchas más particiones |
| LILO y GRUB | Los 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ón | Antes | Ahora |
|---|---|---|
| Gestor de arranque | NTLDR | bootmgr |
| Dónde está la configuración | boot.ini, fichero de texto | BCD, Boot Configuration Data |
| Quién carga el sistema | El propio NTLDR | winload.exe |
| Al salir de hibernación | El propio NTLDR | winresume.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