Aller au contenu
Sylvain Joffraud l4w
Retour

Clé USB de boot quand le bootloader natif refuse

Après une journée à m’acharner sur chain.c32 du flash interne d’un NAS Netgear (échec silencieux peu importe l’argument : hd1, boot, mbr=1 hd1…), j’arrête de lutter. Solution : abandonner le boot via flash interne et bascule sur clé USB en port frontal via « Boot Override ».

Mais je ne veux pas tout Debian sur la clé. Je veux :

Architecture finale

BIOS NAS → (Backup 15s + clé en frontal) → GRUB sur clé (sda1)
       → Kernel + initrd (root=UUID=<SATA> rootdelay=15)
       → Initrd assemble md0 du SATA via mdadm → pivot_root
       → / sur md125 (sda2 SATA, RAID1)
       → /srv/data sur md127 (sda4, 1.8 TB)

Clé USB (sdc1) non montée mais branchée pour permettre le boot.

Étapes critiques

Préparer la clé avec GRUB i386-pc

Une clé Debian « live » installée via QEMU UEFI n’est pas bootable BIOS legacy. Installer explicitement :

grub-install --target=i386-pc --modules="part_msdos ext2 biosdisk" --recheck /dev/sda
update-grub

Adapter le baud rate au matériel

NAS avec FTDI 9600 baud (et non 115200 par défaut Debian) :

# /etc/default/grub
GRUB_CMDLINE_LINUX="console=ttyS0,9600n8 net.ifnames=0"
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --speed=9600 --unit=0"

Sans ça : GRUB charge mais reste muet. On croit que ça plante alors que c’est un mismatch baudrate.

Pointer le rootfs vers le SATA

GRUB_CMDLINE_LINUX="... root=UUID=a4aae2bb-... rootdelay=15"

update-grub ajoute aussi root=UUID=$(rootfs_actuel) automatiquement → deux root= dans la cmdline. Le dernier gagne (parser kernel), ça marche, c’est juste sale.

mdadm dans l’initrd

apt install mdadm    # Debian boot key default n'a pas mdadm
update-initramfs -u
lsinitramfs /boot/initrd.img-* | grep mdadm

Sans mdadm dans initrd, le rootdelay ne sert à rien : pas d’assemblage RAID donc pas de root.

Validation

$ ssh monuser@192.168.1.201 "df / ; cat /proc/mdstat"
/dev/md125         7.8G   989M  6.4G  14% /
md125 : active raid1 sda2[1] root
md127 : active raid1 sda4[1] /srv/data 1.8 TB

Le hostkey SSH a changé vs boot précédent (où le rootfs était la clé). C’est la preuve que le kernel a switché vers le SATA.

Lessons learned


Partager cet article :

Article précédent
Booter un RAID1 dégradé : `rootdelay` + mdadm dans l’initrd
Article suivant
Adaptateur USB-SATA bon marché : l’écriture ment