Aller au contenu
Sylvain Joffraud l4w
Retour

BusyBox recovery sans réseau : transfert via clé USB

Une situation critique pendant ma migration NAS → Debian : le boot syslinux échoue, le NAS tombe en mode Tech Support qui me donne un shell BusyBox sur la console série. C’est mon seul accès au système.

J’ai besoin de modifier syslinux.cfg du flash interne et d’y ajouter chain.c32 (un module syslinux). Le fichier chain.c32 est sur mon laptop. Il faut le transférer au NAS.

# wget http://192.168.1.177:9999/chain.c32 -O /mnt/chain.c32
wget: cannot connect to remote host (192.168.1.177): Network is unreachable

Pas de réseau. ifconfig eth0 :

eth0: error fetching interface information: Device not found

Le BusyBox de récupération n’a pas chargé les drivers Ethernet. /sys/class/net/ ne contient que lo, bond0, tunl0. Pas d’interface physique.

Le kernel recovery est un Linux 2.6.31 (2009) compilé avec un set minimal de drivers, sans le NIC du NAS. Pas de modprobe r8169 possible non plus (modules pas dispos sur le flash).

Le détour par la clé USB intermédiaire

Solution : transférer chain.c32 via la clé USB recovery elle-même.

  1. Le NAS booté en recovery a la clé USB recovery branchée (pour le boot)
  2. La clé est en FAT32, lisible par BusyBox 2.6
  3. Une fois bootée, la clé est éjectée logiquement mais physiquement encore là
  4. Je la débranche du NAS, la branche sur le PC
  5. Je copie chain.c32 dessus
  6. Je rebranche la clé sur un autre port USB du NAS (port arrière, le frontal reste pour la clé recovery au prochain boot)
  7. Le shell BusyBox détecte le hot-plug, mais le device node n’est pas créé automatiquement (pas d’udev)
  8. mknod /dev/sdd b 8 48 pour créer le node manuellement
  9. mount /dev/sdd /mnt2 (la clé est en filesystem direct, pas de partition)
  10. cp /mnt2/chain.c32 /mnt/chain.c32 → fichier sur le flash interne ✓

Lessons learned


Partager cet article :

Article précédent
Le piège du « Chainboot failed! » sur disque GPT
Article suivant
Syslinux 3.31, ses faux amis et le mot magique `kernel`