Une machine qui reste bloquée au démarrage, affichant un shell d’urgence (Give root password for maintenance) après un redémarrage pourtant anodin, pointe très souvent vers une seule ligne de /etc/fstab : un montage listé comme obligatoire alors que le périphérique ou le serveur distant qu’il référence n’est plus disponible.

Ce que /etc/fstab promet par défaut

Chaque ligne de /etc/fstab sans l’option nofail est traitée par défaut comme un montage requis pour que le démarrage soit considéré comme réussi : systemd génère une unité de montage pour chaque entrée et attend qu’elle réussisse avant de continuer la séquence de boot normale.

# /etc/fstab : ce montage est requis par défaut,
# son échec bloque le démarrage normal
/dev/sdb1  /data  ext4  defaults  0  2

Un disque externe débranché, une partition renommée après un changement de matériel, ou un partage NFS temporairement injoignable transforment alors une simple absence de ressource en panne de démarrage complète, bien au-delà de l’impact réel de cette ressource manquante.

nofail : rendre un montage non bloquant

L’option nofail indique explicitement que l’échec de ce montage précis ne doit jamais empêcher le reste du démarrage de se poursuivre normalement : la machine démarre, le montage manquant reste simplement absent, sans shell d’urgence ni blocage.

# Avec nofail, l'absence de ce périphérique
# ne bloque plus jamais le démarrage
/dev/sdb1  /data  ext4  defaults,nofail  0  2

Le piège inverse : nofail partout n’est pas toujours souhaitable

Ajouter nofail sur un montage réellement critique pour le fonctionnement d’un service (une base de données dont le volume de données doit impérativement être monté avant le démarrage du service correspondant) déplace le problème plutôt que de le résoudre : la machine démarre bien, mais le service échoue silencieusement plus tard faute de trouver ses données au bon endroit, un échec souvent plus difficile à diagnostiquer qu’un blocage explicite au boot.

x-systemd.device-timeout : réduire l’attente sans supprimer la dépendance

Pour un montage réellement nécessaire mais dont l’indisponibilité temporaire (un NFS lent à répondre, par exemple) ne doit pas bloquer indéfiniment le démarrage, x-systemd.device-timeout fixe une durée d’attente maximale avant que systemd ne considère le montage en échec et poursuive, un compromis entre nofail (aucune attente, aucun blocage) et le comportement par défaut (attente potentiellement longue, blocage garanti en cas d’échec).

# Attend au maximum 10 secondes avant
# de passer outre ce montage NFS
serveur:/export  /mnt/nfs  nfs  defaults,x-systemd.device-timeout=10  0  0

À retenir

Toute ligne de /etc/fstab sans nofail bloque par défaut l’intégralité du démarrage si le périphérique ou le partage référencé est indisponible, un comportement qui transforme une simple absence de ressource en panne de machine complète — le même type de dépendance implicite et sous-estimée que celle déjà vue sur le redémarrage automatique d’un service systemd. nofail rend un montage non bloquant, mais l’appliquer aveuglément sur un montage réellement critique déplace l’échec vers le service qui en dépend plutôt que de le résoudre. x-systemd.device-timeout offre un compromis pour les montages nécessaires mais parfois lents à répondre, limitant l’attente sans supprimer la dépendance elle-même — un souci de fiabilité qui rejoint directement l’offre fiabilité et observabilité.