Je viens de remplacer un disque défaillant dans un vieux NAS et de remonter le miroir. Je le rallume : voyants façade allumés, disques qui tournent, châssis qui chauffe. Mais il ne revient jamais sur le réseau. Ni ping, ni SSH. Plusieurs coupures franches de l’alim, même résultat. On dirait un boot figé.
Écarter les vrais suspects
Réflexe : accuser la clé de boot ou les disques. J’ai tout vérifié sur un autre PC :
- Le miroir RAID s’assemble proprement (
[UU]), les données sont intactes. - La clé USB de boot monte sans erreur,
grub.cfgest correct (root=UUID=…,bootdegraded=true), noyau et initrd présents et non corrompus.
Tout est sain. Donc le figeage est avant le chargement du noyau — côté firmware.
Le vrai coupable : « Press F1 to resume »
Beaucoup de BIOS, après avoir détecté un changement de configuration matérielle (ici : un disque différent), s’arrêtent au POST sur :
Press F1 to resume
Sur une machine avec écran et clavier, on tape F1, on n’y pense même plus. Sur un serveur headless, personne ne tape rien : le BIOS attend pour toujours. Aucune trace côté réseau, aucun log — juste une machine allumée, chaude, muette. Ça ressemble à un plantage ; c’est une simple pause.
Le remède : F1 par la console série
Une fois la console série branchée (adaptateur USB-UART sur le header de la carte), on ouvre au débit du BIOS, on rallume et on regarde défiler le POST :
$ screen /dev/ttyUSB0 115200
Au moment où « Press F1 to resume » s’affiche, on envoie la séquence F1. Sur un terminal type VT100/xterm, F1 = ESC O P :
$ printf '\033OP' > /dev/ttyUSB0 # F1
# repli VT220 si besoin :
$ printf '\033[11~' > /dev/ttyUSB0
Le boot repart aussitôt, assemble le RAID, et la machine revient sur le réseau.
⚠️ Piège : screen se détache quand on ferme la fenêtre du terminal — il continue en fond et garde /dev/ttyUSB0 occupé (Périphérique ou ressource occupé). On le libère en tuant le PID exact :
$ kill "$(fuser /dev/ttyUSB0)"
…et surtout pas pkill -f ttyUSB0, dont le motif correspondrait aussi à la commande qu’on est en train de taper.
Le vrai correctif de fond
Une fois dans le setup BIOS, désactiver la pause sur erreur : option « Wait for F1 if Error » / « Halt On » → No Errors / Disabled. Sur un serveur headless, c’est non négociable : sinon le moindre changement matériel — ou une pile CMOS faible qui perd l’heure à chaque coupure — rebloque le boot sans le moindre signe.
Lessons learned
- Un boot headless « figé » n’est pas forcément planté. Beaucoup de BIOS attendent F1 après un changement matériel — indéfiniment, sans écran pour le dire.
- Vérifier les disques et la clé ailleurs permet d’isoler le problème avant le noyau : si tout est sain, c’est le firmware.
- F1 en série =
ESC O P(VT100/xterm), repliESC [ 1 1 ~(VT220). Bon à connaître pour tout POST headless. - Désactiver « Halt on error / F1 » dès l’install d’un serveur headless évite de ressortir l’adaptateur série à chaque intervention.
screendétaché squatte le port : tuer par PID viafuser, jamais par unpkill -fqui s’auto-viserait.