Voici comment faire une disquette Root+Boot 1440ko (sans chargeur)

Cette page explique un moyen simple de créer une disquette contenant un noyau + un système de fichiers.
Je me baserais sur ma propre expérience, je citerais les programmes facilitant grandement la tache et les bidouilles permettant de gagner de la place.
Tout dabord munissez-vous d'un kernel (sous forme de source bien sûr) , plus ils sont récents et plus ils sont gros donc difficiles à faire tenir sur une disquette... prenez-donc le plus récent possible ;) à l'époque ou j'ai commencé le projet mon choix s'est tourné vers un kernel 2.4.3. car il apporte un certain nombre de corrections de bugs importants des précédents 2.4 et possède un support pour de nouvelles fonctionalités très interessantes (ReiserFS entre autres) mais aussi une qui nous facilitera la tache: le noyau charge lui-même les modules dont il a besoin sans rien demander (plus besoin de kerneld), les manipulations sont donc réduites pour l'utilisateur final.

Je vous conseille de configurer votre noyau en 2 passes:

1) Enlever tout ce dont vous êtes sûr de ne pas avoir besoin, organniser grossièrement les modules, etc... essayez d'enlever le plus de choses possibles tout en gardant à l'esprit que votre disk sera peut-être utilisé sur une autre machinne que la vôtre.
2) Modularisez au maximum (n'ayez pas peur d'en faire un peu trop), pour chaque option que vous ne connaissez pas bien lisez l'aide pour vérifier si vous en avez réèllement besoin. Enlevez l'émulation du co-precesseur MATH si vous ne destinez pas votre disk aux machinnes <486 , seul ext2fs doit être compilé dans le noyau.

Voici un exemple de configuration

Une fois votre config prête compillez le noyau:
make dep
make modules
make bzImage

si vous disposez sur votre système d'un noyau identique (en version) à celui-ci veuillez renommer temporairement /lib/modules/< version_du_kernel > afin de ne pas écraser vos modules, puis tapez:
make modules_install

vous avez donc un noyau + plein de modules, une de mes astuces est de faire un gros tar.bz2 de tous les modules, appellons-le modules.bz2
Vous avez donc un noyau amorçable dans /usr/src/linux/arch/i386/boot/bzImage, copiez le dans un répertoire ou vous mettrez tout ce donc nous aurons besoin.
Il y a: modules.bz2 bzImage
tapez: rdev bzImage /dev/fd0 et rdev -R bzImage 0
pour indiquer que le systême de fichier à charger est sur la disquette et qu'il faut le monter en écriture.
Maintenant faites un dd if=bzImage of=/dev/fd0 bs=1k un nombre apparaît: (ex: 599+1) ce nombre (ici 600) appellons-le OFFSET.

Créez un systême de fichier ext2 loopback de 4mo environ (appellons-le ROOTDISK) dans lequel vous placerez entrées dans /dev qui vous interesse, creez l'architecture des répertoires.
Pour plus d'informations lisez le Bootdisk-HOWTO.
Pour les scripts de démarrage je vous conseille vivement d'utiliser busybox (sur le site de lineo) il contient une version d'init simplifiée à l'extrême ne gerant pas les différents runlevels mais cela est largement suffisant pour une telle disquette. Busybox vous apportera une base solide de programmes indispensables.
Pour les scripts de demarrage et les différentes bidouilles pour gagner de la place, regardez dans le répertoire /etc/ de mininux (principalement inittab et init.d/rcS). Si vous voulez une disquette un peu plus propre je vous conseille tinylogin, dans la même lignée (et le même site) qui permet une autentification des utilisateurs ce qui est necessaire pour certaines choses.
Vous disposez déja de tous les programmes de base ! Je ne saurais que vous encourager à mettre bzip2 sur la disquette, il va permettre la décompression de modules.bz2 et est toujours très important dans un disque de survie (archivage/echange compressé à travers un reseau via NetCat).
Pour une utilisation un peu plus personalisée de Busybox je vous conseille de lire l'aide et de modifier les rêgles de compilation.
Si vous voulez avoir un exemple des programmes joints et des librairies dont ils dépendent, encore une fois regardez dans la disquette de mininux !
Une fois que votre fichier de 4Mo contenant tous vos outils est prêt faites:
gzip --best ROOTDISK
vous obtenez alors ROOTDISK.gz
Il faut que la taille de ROOTDISK.gz + OFFSET < 1440 sinon vous n'aurez pas assez de place sur la disquette.
Une fois que cette condition est vérifiée calculez le nombre magique, dans notre cas c'est 2^14+OFFSET=16984
Tapez:
rdev -r /dev/fd0 16984 avec la disquette dans laquelle vous avez copié le kernel dans le lecteur.
Vous pouvez maintenant copier le systême de fichier à la suite avec:
dd if=ROOTDISK.gz of=/dev/fd0 bs=1k seek=OFFSET

Démarrez votre PC avec la disquette dans le lecteur et croisez les doigts ;)