Chapitre 1. Installer un démarrage graphique (FrameBuffer + Bootsplash)

Table des matières
1. Description de la méthode
2. Pré-requis théorique
2.1. Qu'est-ce que le FrameBuffer ?
2.2. Qu'est-ce que bootsplash ?
3. Préparer sa machine
3.1. Télécharger les paquets
3.2. Télécharger le patch pour le noyau
3.3. Télécharger splashutils
3.4. Télécharger votre premier thème
3.5. Décompresser les sources de son noyau
3.6. Appliquer le patch Bootsplash à son noyau
4. Compilation du noyau
5. Configuration
6. Préparer le redémarrage
6.1. Si vous utilisez Lilo
6.2. Si vous utilisez Grub
7. C'est prêt ?
8. Aller un peu plus loin
8.1. Afficher des logos sur plusieurs consoles
8.2. Démarrage avec une barre de progression
9. Annexe

Tableau 1-1. Evolution de cet article

DateAjout(s) / Modification(s)
08 juillet 2003Version initiale.
05 août 2003Erreurs sur certaines commandes tar.
08 août 2003Le patch kernel-patch-bootsplash n'est plus disponible. On utilise une solution alternative.
27 octobre 2003Relecture.

1. Description de la méthode

Vous allez pouvoir transformer l'écran de démarrage de votre Debian GNU/Linux en véritable écran graphique comme cela se fait sur de nombreuses distributions (Mandrake, Suze...). Pour cela vous allez devoir compiler votre noyau avec certaines options pour activer le FrameBuffer après avoir patché ce dernier avec le patch bootsplash.

2. Pré-requis théorique

2.1. Qu'est-ce que le FrameBuffer ?

Le frame buffering est une méthode qui vous permet d'utiliser une carte graphique, de façon générique, sans pour autant en posséder le driver spécifique. Vous avez deux possibilités: le mode console seul ou le mode console et X-window. Le système utilisé est le suivant: le driver générique écrit directement dans la mémoire vidéo de la carte.

2.2. Qu'est-ce que bootsplash ?

C'est un patch pour le noyau de Linux qui permet d'afficher à l'aide du FrameBuffer une image de boot avec éventuellement une barre de progression.

3. Préparer sa machine

3.1. Télécharger les paquets

Vous devez posséder les sources de votre noyau. Nous allons prendre exemple ici sur un noyau 2.4.21. Pour cela :

# apt-get install kernel-source-2.4.21

3.2. Télécharger le patch pour le noyau

Vous avez besoin d'un patch pour modifier votre noyau. Ce patch était disponible en patch Debian, mais ce n'est plus le cas depuis le courant du mois de juillet. Si vous retrouvez de nouveau un patch pour bootsplash n'hésitez surtout pas à me tenir au courant pour que je mette à jour cet article

Tableau 1-2. Télécharger le patch pour le noyau

ProvenanceLien de téléchargement
Ce guide de l'utilisateur patch-1090_BS_0306020027_2.4.21-ck2.bz2
Page personnel de Con Kolivas Patch bootsplash de Con Kolivas

3.3. Télécharger splashutils

Splashutils est un programme qui permet de générer un fichier initrd en y incluant l'image d'un logo.

Tableau 1-3. Télécharger splashutils

ProvenanceLien de téléchargement
Ce guide de l'utilisateur splashutils.tar.bz2
Serveur FTP de SuSE ftp://ftp.suse.com/pub/people/stepan/bootsplash/rpm-sources/bootsplash/splashutils.tar.bz2

3.4. Télécharger votre premier thème

Je vous propose un premier thème pour votre écran de démarrage. C'est un thème bassé sur Keramik (une des apparences de KDE).

Tableau 1-4. Télécharger le thème Keramik pour bootsplash

ProvenanceLien de téléchargement
Ce guide de l'utilisateur KeramikBlue.tar

3.5. Décompresser les sources de son noyau

Les sources de votre noyau ont été placées dans le répertoire /usr/src. Pour les décompresser vous devez taper la commande :

$ cd /usr/src
$ tar jxvf kernel-source-2.4.21.tar.bz2

On crée un lien symbolique linux qui pointe vers ce noyau. Ce n'est pas obligatoire, mais fortement conseillé, car de nombreuses documentations supposent que votre noyau est dans ce répertoire. On prend de bonnes habitudes tout de suite ;)

$ ln -s kernel-source-2.4.21 linux

3.6. Appliquer le patch Bootsplash à son noyau

Vous devez maintenant appliquer le patch bootsplash que vous venez de télécharger sur votre noyau. On commence par le décompresser puis on l'applique sur le répertoire qui contient les sources du noyau :

$ cd /usr/src
$ tar jxvf patch-1090_BS_0306020027_2.4.21-ck2.bz2
$ cd linux
$ cat /usr/src/patch-1090_BS_0306020027_2.4.21-ck2 | patch -p1

4. Compilation du noyau

Vous allez devoir installer le support pour le FrameBuffer dans votre noyau ainsi qu'activer l'option liée au patch que vous venez d'appliquer. Voici la liste des options à activer dans votre noyau pour pouvoir le compiler :

Tableau 1-5. Configuration de votre noyau

SectionOption du noyauEn module ou en dur ?
Code maturity level optionsPrompt for development and/or incomplete code/driversen dur
Block devicesRAM disk supporten dur
Block devicesInitial RAM disk (initrd) supporten dur
Console driversVGA text consoleen dur
Console driversVideo mode sélection supporten dur
Console driversUHCI (Intel PIIX4, VIA, ...) supporten dur
Console drivers / Frame-Buffer supportSupport for frame buffer devices (EXPERIMENTAL) (NEW)en dur
Console drivers / Frame-Buffer supportVESA VGA Graphics console (NEW)en module
Console drivers / Frame-Buffer supportUse splash screen instead of boot logoen dur
Console drivers / Frame-Buffer supportAdvanced low lever driver options (NEW)en dur
Console drivers / Frame-Buffer supportMonochrome support + (2,4,8,24,32) bpp packed pixels supporten dur
Console drivers / Frame-Buffer supportVGA characters/attributes support (NEW)en dur

Une fois ces modifications prises en compte dans la configuration de votre noyau vous devez le recompiler.

ImportantCompilation du noyau
 

Je n'entre pas ici dans la compilation du noyau, un article est (ou sera prochainement) disponible dans ce guide de l'utilisateur

5. Configuration

5.1. Créer le fichier initrd qui va contenir le logo

Commencez par décompresser l'archive contenant le logo en 1024*768 basé sur le theme Keramik à l'aide de la commande :

# tar xvf KeramikBlue.tar /

Ensuite décompresser l'archive contenant splashutils à l'aide de la commande :

$ tar jxvf splashutils.tar.bz2

Ensuite vous allez devoir générer le fichier initrd qui sera utilisé par LILO pour booter votre Debian GNU/Linux. Pour cela déplacez vous dans le répertoire splashutils nouvellement crée et tapez la commande :

# make && cp splash /sbin

Maintenant vous possédez une nouvelle commande. La commande splash qui permet d'inclure dans un fichier initrd un logo de votre choix. Nous allons prendre comme logo celui que nous avons décompressé dans le répertoire /etc. Pour cela :

# /sbin/splash -s -f /etc/bootsplash/themes/Theme-Keramik/bootsplash-1024x768.cfg >>/boot/initrd.splash

6. Préparer le redémarrage

6.1. Si vous utilisez Lilo

Vous devez rajouter les lignes suivantes dans votre fichier de configuration de LILO /etc/lilo.conf :

image=/boot/vmlinuz-2.4.20
initrd=/boot/initrd.splash
label=LIN-2.4.20
read-only
append="splash=verbose"
vga=791

Veuillez adapter ce fichier en fonction de votre configuration

6.2. Si vous utilisez Grub

ImportantContribution
 

Merci à deviant du forum Hardware.fr pour cette contribution

Vous devez rajouter les lignes suivantes dans votre fichier de configuration de GRUB :

title LIN-2.4.20
root (hd0,1)
kernel (hd0,1)/boot/vmlinuz-2.4.20 append="splash=verbose" vga=791 root=/dev/hda2
initrd /boot/initrd.splash
boot

Veillez à adapter ce fichier en fonction de votre configuration. En particulier la version du paramètre vga dont vous retrouverez la table de valeurs en annexe de ce document.

7. C'est prêt ?

Il ne vous reste plus qu'a redémarrer votre Debian GNU/Linux pour contempler votre magnifique écran de démarrage. En cas de problème, n'hésitez pas à me contacter.

8. Aller un peu plus loin

8.1. Afficher des logos sur plusieurs consoles

Vous constaterez que seul la première console de votre Debian GNU/Linux est affecté par l'image. Si vous souhaitez en ajouter d'autres il suffit de modifier votre fichier /etc/init.d/rcS en ajoutant les lignes suivantes :

/sbin/splash -n -s -u 1 /etc/bootsplash/themes/Theme-Keramik/bootsplash-1024x768.cfg
/sbin/splash -n -s -u 2 /etc/bootsplash/themes/Theme-Keramik/bootsplash-1024x768.cfg
/sbin/splash -n -s -u 3 /etc/bootsplash/themes/Theme-Keramik/bootsplash-1024x768.cfg
/sbin/splash -n -s -u 4 /etc/bootsplash/themes/Theme-Keramik/bootsplash-1024x768.cfg
/sbin/splash -n -s -u 5 /etc/bootsplash/themes/Theme-Keramik/bootsplash-1024x768.cfg

Vous pouvez mettre le fichier de configuration que vous souhaitez. Ce n'est pas obligatoirement celui du thème que vous venez d'utiliser lors du démarrage de votre machine.

AstuceContenu du fichier de configuration ?
 

Le fichier de configuration de votre thème contient le chemin de votre image, c'est même pour cela que l'on n'inclut pas l'image lors de la création du fichier image initrd

8.2. Démarrage avec une barre de progression

Vous pouvez à l'instar du mode verbeux qui affiche tout un tas de lignes fournies par votre noyau, utiliser un mode silencieux et afficher une barre de progression. Pour cela il faut modifier le paramètre append en lui donnant la valeur "splash=silent".

Il faut ensuite faire avancer sa barre de progression. Je ne suis pas encore arrivé à faire cela proprement. Si vous voulez apporter votre contribution dans ce domaine je suis bien entendu fortement intéressé pour être mis au courant.

9. Annexe

9.1. Valeurs du paramètre vga

Vous avez certainement remarqué que dans les configurations de LILO ou de GRUB un paramètre vga=791 est utilisé. Ce paramètre définit la résolution dans laquelle votre système va démarrer. Pour notre exemple de thème qui est en 1024*768, la valeur 791 convient très bien. Par contre, si vous souhaitez utiliser des images de tailles différentes vous devez modifier ce paramètre. Pour cela voici un tableau de correspondance.

Tableau 1-6. Tableau de correspondance entre valeurs du paramètre vga et résolution de l'écran

RésolutionNombre de couleursValeur du paramètre vga
640x480256769
640x48032000784
640x48065000785
640x48016.7 Millions786
800x600256771
800x60032000787
800x60065000788
800x60016.7 Millions789
1024x768256773
1024x76832000790
1024x76865000791
1024x76816.7 Millions792
1280*1024256775
1280*102432000793
1280*102465000794
1280*102416.7 Millions795