Un dels passos clau de l’arrencada de Linux és el muntatge de la partició arrel (/): el moment en què el sistema enganxa la partició que conté el sistema de fitxers principal a l’arbre de directoris. Fins que no passa això, no hi ha /etc, ni /usr, ni cap dels programes del sistema, i l’arrencada no pot continuar.
En aquest post t’explico com es fa aquest muntatge, qui el fa i com comprovar-ne el resultat.
Què vol dir muntar la partició arrel
A Linux tots els discos i particions es veuen dins d’un únic arbre de directoris que comença a /. Muntar una partició és associar-la a un directori d’aquest arbre (el punt de muntatge). La partició arrel és especial perquè el seu punt de muntatge és el mateix /: és la base sobre la qual després es munten la resta (/boot, /home, discos externs…).
Com passa durant l’arrencada
No el fa l’usuari amb la comanda mount: és automàtic i el reparteixen diverses peces.
- El carregador d’arrencada (GRUB, o el firmware al Raspberry Pi) passa al nucli el paràmetre
root=, que indica quina és la partició arrel. Es pot identificar per nom de dispositiu (/dev/sda2), però és molt millor fer-ho perUUID=oPARTUUID=, perquè els noms de dispositiu poden canviar d’un arrencada a l’altra. - L’initramfs carrega els controladors necessaris, espera que el dispositiu aparegui (paràmetre
rootwaiten alguns sistemes), si cal el desxifra o activa l’LVM, i munta la partició, normalment en mode de només lectura. - Canvi d’arrel: l’initramfs passa el control a la partició real i hi executa el sistema d’inicialització (
systemd). - systemd comprova el sistema de fitxers si cal (
fsck) i el torna a muntar en lectura i escriptura amb les opcions de/etc/fstab(serveisystemd-remount-fs). Després munta la resta de particions defstab.
Pots veure els paràmetres que ha rebut el nucli a /proc/cmdline. En un Raspberry Pi amb Debian 13:
$ tr ' ' '\n' < /proc/cmdline | grep -E '^(root|rootfstype|rootwait)'
root=PARTUUID=f1f57af8-02
rootfstype=ext4
rootwait
I la línia corresponent de /etc/fstab:
$ grep ' / ' /etc/fstab
PARTUUID=f1f57af8-02 / ext4 defaults,noatime 0 1
El darrer 1 vol dir que és la primera partició que s’ha de revisar amb fsck.
Comprovar com està muntada
Per saber quina partició fa d’arrel i amb quines opcions, la comanda més clara és findmnt:
$ findmnt /
TARGET SOURCE FSTYPE OPTIONS
/ /dev/mmcblk0p2 ext4 rw,noatime
També pots fer servir df per veure’n l’espai, i lsblk per relacionar-la amb el seu identificador:
$ df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk0p2 117G 21G 91G 19% /
$ lsblk -o NAME,PARTUUID,MOUNTPOINTS /dev/mmcblk0
NAME PARTUUID MOUNTPOINTS
mmcblk0
├─mmcblk0p1 f1f57af8-01 /boot/firmware
└─mmcblk0p2 f1f57af8-02 /
Si a la columna OPTIONS veus ro en lloc de rw, el sistema ha quedat en només lectura, normalment perquè fsck ha trobat errors o hi ha un problema amb el disc: mira journalctl -b i dmesg.
Quan alguna cosa falla
Si el nucli no troba la partició arrel, l’arrencada s’atura. Els símptomes típics són:
- L’initramfs et deixa en un shell d’emergència
(initramfs)amb un missatge com «ALERT! UUID=… does not exist»: elroot=apunta a una partició que no hi és (has clonat el disc, has canviat l’UUID o falta un controlador a l’initramfs). - Un kernel panic amb «VFS: Unable to mount root fs»: el nucli no pot muntar l’arrel, sovint per un initramfs que falta o està malmès.
Des del shell (initramfs) pots fer blkid per veure els UUID reals i comparar-los amb els del carregador d’arrencada i de /etc/fstab.
Personalitzar-ho, amb compte
Es pot canviar quina partició és l’arrel o amb quines opcions es munta (paràmetres del nucli a GRUB o a cmdline.txt al Raspberry Pi, /etc/fstab, l’initramfs…), però un error aquí deixa el sistema sense arrencar. Fes-ho només si saps què toques, amb una còpia de seguretat i, si pots, amb accés a la consola o a un sistema de rescat.