Ce qu'il faut mettre au minimum dans le kernel, c'est ce qui permet de lire le contenu du disque dur principal et d'y charger le reste du kernel qui n'est pas compilé directement dedans.
Ce que je veux dire, c'est qu'il est possible de compiler certaines parties du kernel directement dans le kernel et de mettre certaines fonctionnalitées dans des fichiers séparés qui peuvent être chargés par la suite si on en a besoin (modules).
Mon kernel de base, c'était donc un kernel de test qui permettait de démarrer assez de périphérique pour que je puisse arriver à une console de base (pas d'interface graphique).
Dans ce qu'il faut mettre dans le kernel :
- Support pour le bon processeur (dans mon cas, c'était pentium 3 avant que pentium m soit supporté)
- Support PCI
- Support des fichiers exécutables (toujours intéressant si on veut exécuter autre chose que le kernel

)
- Support des disques ATA/IDE
- Support du DMA pour ma carte-mère
- Support du système de fichiers utilisé sur la partition principale (habituellement ext3)
- Si le disque a été partitionné avec fdisk ou le gestionnaire de windows, il faut activer le support de ces types de partitions
- Support de la swap
À quelques options près, c'est le minimum pour avoir une console qui s'affiche. Il y a d'autres options qui sont intéressantes d'ajouter directement dans le kernel par la suite :
- Support pour le chargement des modules externes (toujours pratique

)
- Certaines options de notre processeur, comme l'APIC, MTRR, etc.
- Préemtion du kernel
- Support de l'ACPI / Suspend / CPU scaling (changement de fréquence du processeur)
- Stack TCP/IP de base
- Support du Plug'n Play
Ensuite, je mets le support du reste de mon matériel en module :
- Support des PCCARD (PCMCIA)
- IrDA (port infrarouge)
- Driver de ma carte ethernet
- Driver de ma carte sans-fil
- Port parrallèle (imprimante)
- Support du loopback
- IEEE1394 (Firewire)
- Joystick
- Support AGP + Accélération graphique (DRM + radeon)
- Support des souris ps/2 et usb
- Support de ma carte de son
- Support de l'usb 2.0 + usb mass storage
- Support de mon port MMC/SD (module wbsd)
- Quelque systèmes de fichiers supplémentaires (reiserfs, vfat, ntfs, cdrom, etc.)
Et à part, je compile certains drivers qui ne sont pas encore dans le kernel ou qui sont plus à jour :
- pvrusb2, pour ma carte Hauppage WinTV PVR USB2
En gros, mon kernel fait 1.3 megs + 3.5 megs de modules
Ca, c'est la version non technique. La version plus technique est beaucoup plus longue, parce que le support de chaque périphérique doit nécessiter au moins deux/trois options différentes chacune en plus de savoir quel module il faut activer pour le bon périphérique.