Aller au contenu
Sylvain Joffraud l4w
Retour

Syslinux 3.31, ses faux amis et le mot magique `kernel`

Pour qu’un bootloader passe la main à un autre disque (chainload), j’avais en tête plusieurs syntaxes selon mes lectures :

LOCALBOOT 0x80

ou bien :

COM32 chain.c32
APPEND hd0

ou encore :

KERNEL chain.c32
APPEND hd0

Sur un syslinux moderne (5.x, 6.x), les trois fonctionnent. Sur syslinux 3.31 (figé sur le flash interne d’un NAS de 2010), seul le dernier est reconnu.

Mes erreurs successives sur la console série

SYSLINUX 3.31 v1.07
Unknown keyword in syslinux.cfg.
Could not find kernel image: sata

Erreur 1 : LOCALBOOT 0x80Unknown keyword. Sur syslinux 3.x, LOCALBOOT n’est implémenté que dans pxelinux, pas dans syslinux ou isolinux.

Erreur 2 : COM32 chain.c32Unknown keyword. La directive COM32 n’existe que depuis syslinux 4.0+.

Solution : KERNEL chain.c32. Syslinux détecte automatiquement l’extension .c32 et traite le fichier comme un module COMBOOT.

LABEL sata
  KERNEL chain.c32
  APPEND hd0

Référence syslinux 3.x

DirectiveUsage
LOCALBOOT typePXELINUX uniquement (pas syslinux/isolinux)
KERNEL <file>Charge un kernel Linux ou un module COMBOOT (.c32 / .com / .cbt)
LINUX <file>Spécifiquement un kernel Linux (équivalent à KERNEL pour bzImage)
BOOT <image>Charge un boot sector
COM32 / COMBOOTN’existe pas en syslinux 3.x, ajouté en 4.x

Lessons learned


Partager cet article :

Article précédent
BusyBox recovery sans réseau : transfert via clé USB
Article suivant
Backup, Reset, et le piège du double bouton