Parfois un système racine est trop gros pour tenir sur une disquette, même après compression. Voici quelques techniques pour réduire sa taille, citées par ordre décroissant d'efficacité :
Par défaut, les disquettes sont formatées à 1440 ko, mais des formats plus denses existent. fdformat peut formater des disques avec les tailles suivantes : 1600, 1680, 1722, 1743, 1760, 1840 et 1920. Lisez la page de manuel de fdformat ainsi que /usr/src/linux/Documentation/devices.txt.
Mais quelles densités/géométries votre machine peut-elle supporter ? Voici des réponses (légèrement modifiées) de Alain Knaff, l'auteur de fdutils.
C'est plus le problème du BIOS que du format physique des disquettes. Si le BIOS décide que tous les numéros de secteurs supérieurs à 18 sont non valides, alors on ne peut pas y faire grand chose. En effet, à moins de désassembler le BIOS, le seul moyen de trouver la bonne valeur est en tâtonnant. Quoiqu'il en soit, si le BIOS supporte les disques ED (grande densité : 36 secteurs/piste et 2,88 Mo), il y a des chances pour que les disquettes de 1722 ko soient également supportées. Les disquettes super-formatées avec plus de 21 secteurs par piste ne sont vraisemblablement pas amorçables : en fait, celles qui utilisent des secteurs de tailles non standard (1024 octets par secteur au lieu de 512, par exemple) ne sont vraisemblablement pas démarrables. Il devrait être malgré tout possible d'écrire un programme de démarrage du secteur pour contourner cela. Si je me souviens bien, le programme DOS 2m en est capable, ainsi que les programmes XDF de OS/2. Certains BIOS clament artificiellement que tout secteur supérieur à 18 est certainement défectueux. Comme les disquettes de 1722 ko utilisent des secteurs supérieurs à 21, elles ne devraient pas être amorçables. Le meilleur moyen de tester serait de formater une disquette DOS ou syslinux en 1722 ko et de la rendre amorçable. Si vous utilisez LILO, n'utilisez pas l'option linear (sans quoi LILO penserait que le format par défaut de la disquette est de 18 secteurs par piste, et la disquette ne démarrera pas même si le BIOS la supporte). | ||
--Alain Knaff |
La plupart de l'espace disque d'un système de fichiers est consommé par des utilitaires indispensables tels que cat, chmod, cp, dd, df, et cætera. Le projet BusyBox permet de fournir un remplacement à ces utilitaires indispensables. BusyBox fournit un seul fichier monolithique exécutable, /bin/busybox, d'environ 150 ko, qui implémente les fonctions de ces utilitaires. Vous pouvez créer des liens symboliques à partir de différents programmes vers cet exécutable ; busybox voit comment il a été appelé et invoque le code correcte. BusyBox inclut même un shell basique. BusyBox est disponible sous forme de paquetage binaire pour plusieurs distributions, et le code source est disponible sur le site de BusyBox.
Certains shells populaires sous Linux, tels que bash et tcsh, sont gros et nécessitent de nombreuses bibliothèques. Si vous n'utilisez pas le shell de BusyBox, vous devriez quand même songer à remplacer le shell. D'autres options plus légères existent, telles que ash, lsh, kiss et smash, bien plus petites et nécessitant peu (ou pas) de bibliothèques. La plupart de ces shells de remplacement sont disponibles sur http://www.ibiblio.org/pub/Linux/system/shells/. Vérifiez que le shell que vous utilisez sait faire tourner les commandes de tous les scripts rc que vous incluez sur le disque d'amorce.
De nombreux binaires et bibliothèques restent non nettoyés (ils contiennent les informations pour le déboguage). Si vous lancez file sur ces fichiers, il vous indiquera not stripped si c'est le cas. Lorsque vous copiez des binaires sur votre système racine, une bonne habitude à prendre est d'utiliser :
objcopy --strip-all ORIGINE DESTINATION |
Et lorsque vous copiez des bibliothèques :
objcopy --strip-debug ORIGINE DESTINATION |
Si certains binaires ne sont pas immédiatement nécessaires au démarrage ou au login, vous pouvez les déplacer sur un disque utilitaire. Lisez la Section 9.2 pour les détails. Vous pouvez aussi déplacer les modules vers un disque utilitaire.