Accueil

Slackware: Optimistion du boot

Par Pleziosaurus.

Démarrer en quelques secondes.

Sommaire

Introduction

Depuis que je m'intéresse à Linux, j'ai essayé pas mal de distros différentes. Et si la Slackware est vite devenue ma préférée, ce n'était pas la plus rapide à démarrer.

Sur une installation fraîche et par défaut de la 10.1 (le disc 1 uniquement, j'utilise Fluxbox et aucune des applications KDE/Gnome...), il faut quand même 42 secondes à mon P4 2Ghz/256 Mo de ram pour arriver au login texte. Une fois effectué les manipulations qui vont suivre, il n'en faut plus que 17 pour arriver à XDM, et ce sur le kernel d'origine non optimisé (ni même patché, comme nous verrons plus loin) ! Ca, c'était pour vous mettre en appétit ;-)

ATTENTION (note de l'admin): Par défaut les scripts d'init de la Slackware sont justement trés bien fait pour vous assurer une compabilité maximale avec tout type de matériel, une grande stabilité et un démarrage des services dans un ordre bien particulier pour éviter tout conflit entre applications / services / pilôtes de périphérique.Si cet article vous propose d'accélerer le démarage de votre systême il risque de rendre votre systême "instable" ou même de vous empecher de démarer ce dernier. Ces manipulations sont à faire par des personnes déjà expérimenté avec Linux et plus articuliérement la Slackware. Faire ces manipulations sans comprendre ce que vous faite est pesque "sucidaire" pour votre systême.

Les étapes du boot

Pour rappel, on peut diviser le boot en plusieurs parties :

ATTENTION: Faites une copie de sauvegarde de votre répertoire /etc, on n'est jamais trop prudent ! Si vous disposez d'un live CD sur lequel booter en cas de gros problème, ce n'en sera que mieux, mais on ne devrait pas en arriver là, rassurez-vous. A ce propos les CD d'install de la Slackware ont un mode "rescue" pour booter en urgence. Vérifiez que vos différents périphériques soient installés et que les services qui les gèrent sont correctement configurés :N'essayez pas par exemple de désactiver des services comme 'cups' pour accélérer le boot alors que vous avez une imprimante. Le service hotplug risque d'être aussi crucial pour détecter vos périphériques et charger les modules adéquats. Il serait également judicieux de sauvegarder cette page sur un coin de votre disque dur au cas ou une manipulation vous empécherais temporairement de vos connecter à l'Internet.

Optimisation des scripts d'init

/etc/rc.d/rc.M

Commençons par deux opérations très simples : désactiver ldconfig et fc-cache. ldconfig remet à jour les liens des libs du système, tandis que fc-cache répertorie les différentes fontes installées. Rien qui ne justifie de perdre plusieurs secondes à chaque démarrage... Au pire, vous devrez peut-être lancer un ldconfig après avoir installé une nouvelle lib pour qu'elle soit reconnue (bien que compilant beaucoup de choses moi-même, je n'ai jamais eu besoin de le faire, les Makefile le gérant lui même la plupart du temps), et si vous installez de nouvelles fontes, vous devrez invoquer fc-cache'vous-même. Pour ce faire, recherchez et commentez donc les lignes de la maniére suivante dans /etc/rc.d/rc.M :

 # Update all the shared library links:
 #if [ -x /sbin/ldconfig ]; then
 # echo "Updating shared library links: /sbin/ldconfig"
 # /sbin/ldconfig
 #fi
 
 # Update the X font indexes:
 #if [ -x /usr/X11R6/bin/fc-cache ]; then
 # echo "Updating X font indexes: /usr/X11R6/bin/fc-cache"
 # /usr/X11R6/bin/fc-cache
 #fi 
 

Arret des services inutiles

Le répertoire /etc/rc.d contient les sscipts d'init des services que l'on souhaite activer au boot. Si vous souhaitez désactiver un de ces services et donc gagner encore en temps de boot, il vous suffit d'enlever le droit d'exécution du script d'init. Par exemple pour désactiver le service pcmcia:

 chmod -x /etc/rc.d/rc.pcmcia 

Optimiser le hotplug

Vous l'aurez sans doute remarqué, le fait de devoir attendre environ 30 secondes le temps que le script /etc/rc.d/rc.hotplug se termine est franchement pénible. Avant de s'attaquer plus en détail au problème, ajoutez simplement un & à la ligne . /etc/rc.d/rc.hotplug start dans le fichier /etc/rc.d/rc.M afin de lancer le démarrage du hotplug en arriére plan et de ne pas mobiliser le démérage du systême pedant ce temps. Paralléliser ce dernier est déjà bien, mais ça ne le raccourcit pas pour autant. Il y a pourtant une chose très simple à faire pour l'accélérer.

Le problème avec les disttributions Linux, et la Slackware ne fait pas exception, c'est qu'elles sont prévues pour tourner sur les configurations matérielles les plus diverses et variées, d'où de nombreux tests. Allez consulter le fichier /etc/rc.d/rc.hotplug, et étudiez un peu le code. Vous verrez qu'en cas d'appel avec '(re)start', il lance chacun des exécutables '*.rc' contenus dans /etc/hotplug Ce qui veut dire concrètement qu'en plus de tester votre matériel USB, le script parcourt 'input.rc', 'pci.rc', 'pnp.rc' qui sont rarement utiles. Le but maintenant est de déterminer si ces fichiers sont indispensables pour votre machine.

Lancez donc une session X, ouvrez un terminal et tapez:

 root@machine:~# lsmod
 

Vous obtenez alors la liste des différents modules chargés par votre système. Maintenant déplacez les fichiers /etc/hotplug/*.rc dans un sous répertoire pour les rendre inaccessibles, et rebootez votre PC. Retournez sous X, et faites encore un:

 root@machine:~# lsmod
 

Si les deux listes sont identiques, c'est que les fichiers '*.rc' étaient vraiment inutiles.

Dans le cas ou les deux listes de contrôle seraient différentes, ce n'est pas bien grave : éditez simplement le fichier /etc/rc.d/rc.modules et ajoutez des lignes /sbin/modprobe/nom_du_module_manquant.

ATTENTION (Note de l'admin): Je ne vous deconseilles vivement cette méthode car suivant votre matériel vous risquez de rendre impossible le démarrage de votre système et en plus vous conservez le hotplug alors que celui-ci deviens quasiement inutile avec cette méthode. Si vous souhaitez vraiment accélerer le boot et vous affranchir du temps d'execution du hotplug, je vous conseille alors de désactiver le hotplug via cette commande:

 root@machine:~# chmod -x /etc/rc.d/rc.hotplug

et de decommenter (ou d'ajouter) les lignes /sbin/modprobe module dans le fichier /etc/rc.d/rc.modules correspondantes à la liste des modules que vous avez récupéré précédement.

Pendant que vous éditez ce fichier, désactivez la section Update modules dependencies (tout en haut...) : elle vérifie à chaque boot que des nouveaux modules n'ont pas été installés et lance un /sbin/depmod -a le cas échéant. N'oubliez pas de taper cette dernière commande vous-même en cas de besoin (par exemple si vous recompilez les drivers 'alsa' après installation/compilation d'un nouveau kernel, ce qui ne devrait pas arriver tous les jours...).

/etc/rc.d/rc.S

Il n'y a pas grand chose à espérer ici... On peut toujours désactiver les sections se rapportant au LVM (utilisé pour les serveurs RAID, si vous ne savez pas de quoi il retourne, c'est que vous n'en avez pas besoin...), aux partitions UMSDOS, aux périphériques ISA (il n'y en a plus sur les PCs récents), et à l'initrd si votre système ne l'utilise pas. Les plus aventureux pourront toujours bidouiller les divers sbin/fsck, mais je vous le déconseille VIVEMENT.

Dans le cas où vous montez plusieurs partitions lors du boot (du type '/mnt/datas' par exemple...), une autre astuce est de rajouter un -F aux options de mount à la section mount non-root file systems in fstab, ce qui force leur montage en parallèle.

/etc/lilo.conf

Le fait d'ajouter l'option compact au début de ce fichier accélère le chargement de lilo (option toutefois connue pour avoir posé quelques problèmes par le passé...). Tapez ensuite la commande:

 root@machine:~# lilo -v 
 

pour mettre à jour la configuration.

/etc/inittab

Selon la façon dont votre inittab est paramétré, vous êtes maintenant devant un login texte (en console...), ou devant un login graphique (XDM,KDM,GDM,etc...). Dans ce dernier cas, l'astuce suivante va lancer en parallèle le script /etc/rc.d/rc.M et le serveur X, ce qui va être très bénéfique. Editez donc /etc/inittab et repérez la ligne suivante :rc:2345:wait:/etc/rc.d/rc.M, remplacez le wait par once. Dorénavant votre Slack n'attendra plus que le script /etc/rc.d/rc.M soit fini avant de lancer le serveur X.

Conclusion

Voilà, ce tutoriel est maintenant terminé. Si tout s'est bien passé, le boot de votre Slackware est maintenant beaucoup plus rapide!

Thèmes : #administration #articles #avance #optimisation #pleziosaurus #services

Sauf indication contraire, ce document est placé sous licence CC-BY-SA 3.0.