De nombreux systèmes embarqués, en particulier ceux s'adressant au grand public, doivent pouvoir s'allumer et s'éteindre très rapidement, sous peine d'exaspérer l'utilisateur. Or, certaines distributions fréquemment utilisées dans les systèmes embarqués comme Debian sont plus optimisées pour la stabilité que pour un démarrage rapide. Il revient donc au développeur de modifier en conséquence le système de démarrage, voir même d'en créer un lui permettant de s'adapter parfaitement aux contraintes de son projet.
La première phase de toute tentative d'optimisation du temps de démarrage consiste à mesurer les performances actuelles du système et identifier les processus les plus gourmands en temps. Un outil a été spécialement développé pour cette tâche : Bootchart. Ce logiciel se compose de deux modules. Le premier est un script shell qui va se substituer au programme /sbin/init de votre système, et lancer celui-ci en interrogent régulièrement le kernel sur les processus en cours d'exécution et la charge système. Le détail du fonctionnement de Bootchart est consultable sur http://www.bootchart.org/docs.html. Les statistiques recueillies sont stockées en mémoire vive, et écrites dans un fichier à la fin du démarrage.
Le deuxième module est un programme capable de transformer les informations contenues dans ce fichier et de générer un rapport graphique, facilement lisible. Ce rapport se présente sous la forme d'une image (png ou svg) qui affiche clairement le temps d'exécution de chaque processus du démarrage. Voici un exemple.
Si vous utilisez une version récente de Busybox (v1.17) dans votre projet, sachez qu'une implémentation de Bootchart est fournie avec. Il vous suffit alors de modifier la ligne de commande de démarrage de Linux dans votre bootloader (init=/sbin/bootchartd) et de redémarrer le système. Le résultat de l'analyse sera alors disponible dans le fichier /var/log/bootchart/bootchart.tgz. Rapatriez ce fichier sur votre PC de développement et analysez le avec l'outil bootchart officiel pour obtenir le graphique.
Attention : si vous utilisez Ubuntu 10.04 ou supérieur, la version de bootchart fournie n'est pas la version officielle mais une nouvelle implémentation en Python nommée pybootchartgui. Cette version ne fonctionne QUE si vous l'utilisez avec des données générées par le bootchart d'Ubuntu. Elle crash si vous lui fournissez des données générées avec la version de Busybox. Dans ce cas, utilisez la version officielle (en Java) de Bootchart pour générer vos graphiques.