Qu'est-ce qui détermine quels modules du kernel sont construits statiquement dans le kernel lors de la compilation?

Je viens de comstackr un nouveau kernel et je me suis demandé: Qu'est-ce qui décide au cours du process de compilation quels modules du kernel sont construits statiquement dans le kernel?

J'ai ensuite supprimé /lib/modules , redémarré et constaté que mon système fonctionne bien, donc il semble que tous les modules essentiels sont statiquement construits dans le kernel.

Sans /lib/modules , le kernel charge 22. Avec le directory présent, il charge 67 modules.

Vous faites cela dans le cadre du process de configuration, généralement lorsque vous exécutez make config , make menuconfig ou similaire. Vous pouvez définir le module comme embedded (marqué comme * ) ou modularisé (marqué comme M ).

Vous pouvez voir des exemples de ceci dans une capture d'écran de make menuconfig , à partir d' ici :

menuconfig capture d'écran

Étant donné que vous avez ajouté le tag /kernel en plus de /linux-kernel , je suppose que vous êtes également intéressé par le cas générique.

Dans Solaris depuis 1991, tout est chargé dynamicment, à l'exception du code de base du code kernel, du planificateur par défaut et du pager / swapper.

Même le code racine du système de files et le chargeur de module sont chargés dynamicment.

Cela évite la nécessité de configurer manuellement le kernel. Étant donné que Solaris n'a pas besoin de configurer les fonctionnalités dépendantes de la taille (de nouveaux objects du kernel sont créés automatiquement au moment de l'exécution tant qu'il y a suffisamment de memory), aucune configuration manuelle n'est nécessaire sur Solaris.

Je me request quand Linux va atteindre cet état d'automation … Je crois cependant que cela n'arrivera jamais car la configuration du kernel théoriquement inutile (voir Solaris) est utilisée comme une méthode amusante pour dire aux users hey, you are able to control the linux kernel .