Syslinux (Français)

Syslinux est une collection de chargeurs d'amorçage capables de démarrer depuis disques durs, CD, et à travers le réseau via PXE. Elle prends en charge les systèmes de fichiers fat, ext2, ext3, ext4 et btrfs.

Installation

Selon le mode de démarrage de votre ordinateur, vous devrez suivre les indications d'installation correspondantes.

Systèmes BIOS

Attention: Vérifiez bien que /boot est montée pour la suite si vous utilisez une partition séparée !

Installer syslinux:

pacman -S syslinux

Installation automatique

Le script syslinux-install_update installera Syslinux, copiera (ou mettra en liens symboliques si /boot et / sont sur la même partition) les modules COM32 nécessaires dans /boot/syslinux/, modifiera l'option d'amorçage (boot flag) et installera le MBR. Il peut gérer des disques MBR et GPT avec Softraid.

Lancer le script avec -i (installation) (modification du boot flag) -m (installation sur le MBR):

syslinux-install_update -iam

Syslinux peut maintenant être configuré en éditant pour personnaliser le démarrage.

Limitations de Syslinux UEFI

Installation

  • Installer les paquets , et et placer syslinux dans l'EFI System Partition (ESP) comme suit:
pacman -S syslinux dosfstools efibootmgr
  • Copier les fichiers syslinux vers ESP:
mkdir -p $esp/EFI/syslinux
cp -r /usr/lib/syslinux/efi64/* $esp/EFI/syslinux
  • Installer l'entrée de démarrage pour Syslinux en utilisant efibootmgr (en) :
mount -t efivarfs efivarfs /sys/firmware/efi/efivars
efibootmgr -c -d /dev/sdX -p Y -l /EFI/syslinux/syslinux.efi -L "Syslinux"

Configuration

Attention:
  • Système BIOS: le fichier de configuration est /boot/syslinux/syslinux.cfg. En outre, les fichiers nécessaires au démarrage et au fonctionnement de syslinux (modules c32 et autres) devraient être placés dans /boot/syslinux/.
  • Systèmes UEFI: le fichier de configuration pour UEFI est $esp/EFI/syslinux/syslinux.cfg. Les autres fichiers nécessaires au démarrage et au fonctionnement de syslinux (modules c32 et autres) sont à copier dans $esp/EFI/syslinux/.
  • DEFAULT désigne le LABEL de l'entrée à démarrer par défaut.
  • TIMEOUT correspond au délai avant le démarrage de DEFAULT (en dixième de seconde).
  • LABEL correspond à une entrée de menu.

Si vous utilisez des noyaux additionnels, il vous suffira de rajouter les entrées adéquates. Par exemple, pour le noyau stable :

LABEL archlts
       MENU LABEL Arch Linux LTS
       LINUX ../vmlinuz-linux-lts
       APPEND root=UUID=8887210b-72d3-4899-99f7-3f39ea0a0eeb rw vga=0x0345 quiet
       INITRD ../initramfs-linux-lts.img
LABEL archltsfallback
       MENU LABEL Arch Linux LTS Fallback
       LINUX ../vmlinuz-linux-lts
       APPEND root=UUID=8887210b-72d3-4899-99f7-3f39ea0a0eeb rw
       INITRD ../initramfs-linux-lts-fallback.img

Prompt de base

On peut démarrer seulement sur le prompt en désactivant les modules de menu dans syslinux.cfg ( et ).

Le prompt attendra alors que vous saisissiez le nom du système à démarrer (LABEL) ou que vous entriez vous-même les directives. Passé le TIMEOUT, le démarrage se fera sur le LABEL correspondant à DEFAULT.

/boot/syslinux/syslinux.cfg
PROMPT 1
TIMEOUT 50
DEFAULT arch

LABEL arch
        LINUX ../vmlinuz-linux
        APPEND root=UUID=8887210b-72d3-4899-99f7-3f39ea0a0eeb rw
        INITRD ../initramfs-linux.img

LABEL archfallback
        LINUX ../vmlinuz-linux
        APPEND root=UUID=8887210b-72d3-4899-99f7-3f39ea0a0eeb rw
        INITRD ../initramfs-linux-fallback.img

Le démarrage peut être immédiat sans montrer de prompt en passant PROMPT à 0.

Il est possible d'avoir le menu des différentes entrées au démarrage. Pour se faire, vérifiez que le module COM32 menu est présent dans le répertoire de syslinux ou copiez-le au besoin:

cp /usr/lib/syslinux/menu.c32 /boot/syslinux/

Puis adaptez votre fichier de configuration:

Différentes combinaisons de couleurs sont disponibles mais la personnalisation reste limitée en comparaison du menu graphique (reportez-vous au wiki de syslinux).

Il est également possible d'avoir un menu graphique avec image de fond, couleurs au format RGB, transparence...

Pour l'utiliser, vérifier la présence du module COM32 vesamenu dans le répertoire de syslinux. Copiez-le au besoin:

cp /usr/lib/syslinux/vesamenu.c32 /boot/syslinux/

Un exemple de configuration basé sur le CD d'installation d'Arch (, à placer dans /boot/syslinux/, peut-être récupéré ici ):

Consultez la documentation officielle pour les options de personnalisation.

Résolution

En outre, plutôt que de passer par le 640x480 par défaut, vous pouvez passer à une résolution plus adaptée à votre configuration au moyen de l'instruction .

Pour déterminer les résolutions disponibles, vous pouvez par exemple utiliser :

Dans cet exemple, il est donc possible de placer dans le syslinux.cfg:

MENU RESOLUTION 1600 1200

Et ainsi d'utiliser une image d'arrière-plan à cette dimension (l'image est facultative).

Attention: Si vous fournissez une image, elle devra toujours correspondre à la résolution indiquée dans le syslinux.cfg mais pourra être déformée en hauteur ou largeur du fait de votre écran. Pensez-y en cas de proportions à respecter. Pour info, j'ai rencontré les deux cas: écrasement en hauteur sur mon pc de bureau avec une résolution d'image de 1600x1200 tandis que mon écran affiche du 16/9è et une image étalée en largeur sur portable: du 800x600 pour un écran 1024x600. Il m'a donc suffit de réaliser les opérations inverses (par gimp car j'avais la flemme d'utiliser directement convert du paquet imagemagick).
Options temporaires

Vous pouvez configurer les différentes options de démarrage en modifiant la ligne du menu pendant l'exécution de syslinux. Pour cela, il suffit de se placer sur la ligne que vous vous voulez modifier et appuyer sur  :

.linux ../vmlinuz-linux root=/dev/sda3 rw initrd=../initramfs-linux.img

Pour démarrer sans le mode graphique par exemple :

.linux ../vmlinuz-linux root=/dev/sda3 rw initrd=../initramfs-linux.img systemd.unit=multi-user.target
Options permanentes

Pour rendre le passage d'arguments additionnels à l'image Linux permanent lors du démarrage, il suffit d'éditer la ligne des entrées appropriées dans votre et d'y rajouter les options voulues.

Exemple pour l'hibernation, la partition de swap étant /dev/sda5 :

LABEL arch
        MENU LABEL Arch Linux
        LINUX ../vmlinuz-linux
        APPEND root=UUID=xxxxx-xxxx-xxxxxx-xxxxxx resume=/dev/disk/by-uuid/xxxxx-xxxx-xxxxxx-xxxxxx rw
        INITRD ../initramfs-linux.img

Ou, en passant par les (déconseillé):

        APPEND root=/dev/sda2 resume=/dev/sda5 rw

Chaîner Windows (Dual Boot)

Pour démarrer d'autres systèmes d'exploitation (comme Windows) ou des chargeurs d'amorçage, il suffit de les chaîner depuis Syslinux.

Syslinux et Windows sur un même disque

Vérifiez que le module se trouve bien dans le répertoire syslinux /boot/syslinux/, copiez-le au besoin depuis . Puis rajoutez ou décommentez dans le fichier de configuration syslinux.cfg :

LABEL windows
       MENU LABEL Windows
       COM32 chain.c32
       APPEND hd0 2
est la seconde partition du premier disque. Les disques sont numérotés à partir de 0, tandis que que les partitions sont comptées depuis 1.

Syslinux et Windows sur des disques différents

Si Windows est installé sur un disque différent, il faut avoir recours à l'identifiant de ce disque et à l'option swap (Windows aime penser qu'il est sur le disque principal quand bien même vous démarreriez sur celui qui amorce syslinux).

L'identifiant peut être obtenu via fdisk:

Dans cet exemple, mon pc démarre sur le disque sdb qui contient Arch et syslinux. Windows étant installé sur sda (qui contient le mbr de Windows).

Pour chaîner directement le secteur d'amorçage de mon premier disque afin de démarrer Windows depuis syslinux, l'entrée dans le devient donc:

LABEL windows
        MENU LABEL Windows 10 (sda)
        COM32 chain.c32
        APPEND mbr:0x5bc53d8b swap

Chaîner GNU Linux

Syslinux ne peut que charger des fichiers qui résident sur la même partition que le fichier de configuration syslinux.cfg ou des chargeurs d'amorçage, tels que celui de Windows. Par conséquent, si vous avez une autre version de Linux sur une partition boot séparée (c'est-à-dire que vous n'avez pas un /boot qui serait partagé avec Arch), démarrer les autres systèmes peut se faire au moyen de extlinux. peut être installé sur le secteur d'amorçage d'une partition et être appelé comme un chargeur d'amorçage distinct du MBR dévolu à syslinux.

Pour la suite et comme exemple, on va supposer que le Linux que l'on souhaite démarrer a un /boot séparé sur sda2 (sa racine sur sda3) et que syslinux est installé et configuré côté Arch pour démarrer correctement.

Côté de l'autre système: installer extlinux

Depuis Arch, on va monter la partition boot du Linux à chaîner:

mount /dev/sda2 /mnt

S'il n'existe pas de répertoire (ou ), le créer:

mkdir -p /mnt/extlinux

Pour installer sur le secteur d'amorçage de la partition:

extlinux -i /mnt/extlinux

Pensez à copier les modules nécessaires pour le chaînage et le menu:

cp /usr/lib/syslinux/{chain,menu,libutil}.c32 /mnt/extlinux

Finalement, il reste à créer et remplir correctement un (ou syslinux.cfg) pour ce démarrage:

/mnt/extlinux/extlinux.conf
timeout 10

ui menu.c32

label Autre Linux
    linux ../vmlinuz
    append root=/dev/sda3 rw quiet
    initrd ../initramfs.img
Côté Arch: rajouter l'entrée au menu principal

Pour pouvoir démarrer sur l'autre système, il ne reste plus qu'à rajouter dans le syslinux.cfg d'Arch:

Changer la disposition du clavier

Il est possible de changer la disposition du clavier dans syslinux (par défaut: qwerty US). Cela peut être plus confortable, surtout si vous éditez souvent les paramètres de boot.

Par exemple pour passer en azerty:

keytab-lilo -p 60=46 -p 92=60 -p 124=62 /usr/share/kbd/keymaps/i386/qwerty/us.map.gz /usr/share/kbd/keymaps/i386/azerty/fr-pc.map.gz > /boot/syslinux/fr-pc.ktl

Et pour passer en bépo :

keytab-lilo -p 2=91 -p 3=93 -p 121=94 -p 119=124 -p 116=92 -p 87=126 -p 95=95 /usr/share/kbd/keymaps/i386/qwerty/us.map.gz /usr/share/kbd/keymaps/i386/azerty/fr-bepo.kmap > /boot/syslinux/fr-pc.ktl
Note: Il n'est pas possible d'obtenir correctement le rendu des caractères ASCII étendu (accents et autres).

Vous devez maintenant éditer le fichier et sélectionner le fichier correspondant:

Vous pouvez maintenant redémarrer et tester!

Plusieurs dispositions de clavier dans le menu

Il est possible de charger à la volée différentes dispositions de clavier lors de l'édition du menu au démarrage.

Pour cela, rajoutez les fichiers .ktl qui vous intéressent dans /boot/syslinux/ ainsi que le module :

cp /usr/lib/syslinux/kbdmap.c32 /boot/syslinux/

Et rajoutez les entrées qui vous intéressent au : Sélectionnez l'une ou l'autre des entrées rechargera le menu avec la nouvelle disposition clavier.

Sécurité

Il est possible de protéger syslinux par mot de passe, empêchant ainsi de lancer certaines entrées ou d'en modifier les options (particulièrement conseillé si vous partagez votre ordinateur, en voyage, etc., en complément de la sécurité que peut vous apporter certaines options du BIOS).

Pour chiffrer vos mots de passe, vous pouvez utiliser sha1pass ou . Il vous faudra installer pour SHA1 et pour MD5.

Attention: Par défaut, Syslinux ne connaît que la disposition QWERTY (us). Attention donc à bien utiliser la bonne disposition clavier sous syslinux ou à repasser temporairement votre console en disposition us (loadkeys us) pour saisir votre mot de passe !

Mot de passe principal

Le mot de passe principal sera demandé pour accèder au prompt via et aux modifications d'options, via .

# sha1pass unMinableMotDePasse
$4$yUuRv4ZL$SPfdgOaiDWW9RcgwsHr3saQVKLk$

Protection d'une entrée spécifique

Il suffit de rajouter l'instruction après un LABEL donné ou un MENU BEGIN pour protéger un sous-menu complet. Par exemple:

Le mot de passe vous sera demandé pour lancer l'entrée protégée.

Pour que ça serve à quelque chose, il vous faudra également désactiver ou protéger les accès au prompt et aux modifications d'options:

  • soit en rajoutant à votre syslinux.cfg:
NOESCAPE 1
PROMPT 0
ALLOWOPTIONS 0
  • soit en utilisant un mot de passe principal (voir précédemment). Dans ce cas, le mot de passe principal fonctionne également.

Dépannage

Windows démarre toujours, ignorant Syslinux

Vérifiez bien que la partition abritant dispose du flag en lien et place de la partition windows.

Si vous avez installé une version de Windows après linux, votre ordinateur ne démarrera plus que sous celui-ci. Pour récupérer syslinux au démarrage, chrootez depuis un live CD linux (celui d'Arch Linux par exemple) et relancez .

This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.