J'ai lu de nombreux didacticiels sur la façon de créer des noyaux personnalisés et de démarrer Ubuntu à l'aide de ces noyaux, et j'ai suivi avec succès les guides et les noyaux personnalisés démarrés, mais je ne comprends pas ce que font chacune des commandes des guides et ce qui se passe réellement avec chaque commande.
La procédure décrite sur le site d'Ubuntu fait beaucoup de travail avec fakeroot
, dpkg
, make-kpkg
, certains initramfs, et d' autres choses horribles que les œuvres mais simplement ne me aide pas à comprendre ce qui se passe.
- Quelle est la sortie de
make
dans un répertoire du noyau Linux? - Crée-t-il une "image de noyau compressée"?
- Quel est le nom du fichier "image du noyau compressé" et où est-il placé?
- Que fait
make modules
-il? - Doit
make modules
être fait avant ou aprèsmake
? - Ne
make
construit pas mes modules automatiquement? - Quel est le processus (en anglais, pas seulement la liste des commandes) pour ajouter des noyaux nouvellement construits à la liste des noyaux amorçables?
- Que fait
make install
-il? - L'
make install
ajoutera- t- il à ma liste de noyaux amorçables pour que je n'ai plus rien à faire? - Y a-t-il un équivalent
make modules_install
?
ubuntu
linux-kernel
make
AnkurVj
la source
la source
Réponses:
Du haut...
make
compile et lie l'image du noyau. Il s'agit d'un seul fichier nommévmlinuz
.make modules
compile des fichiers individuels pour chaque question à laquelle vous avez réponduM
pendant la configuration du noyau. Le code objet est lié à votre noyau fraîchement construit. (Pour les réponses aux questionsY
, celles-ci font déjà partievmlinuz
et pour les réponses aux questions,N
elles sont ignorées).make install
installe votre noyau intégré dans/vmlinuz
.make modules_install
installe vos modules du noyau dans/lib/modules
ou/lib/modules/<version>
.Quant à l'ajouter à la liste des noyaux disponibles, cela est pris en charge par le chargeur de démarrage. C'est différent pour chaque chargeur de démarrage, mais
grub
c'est le plus courant sur x86 et amd64 donc je vais le décrire. C'est en fait assez simple. Grub regarde dedans/
,/boot
et/lib/modules
pour tout ce qui ressemble à ça pourrait être un noyau fonctionnel et l'ajoute. Et oui, c'est une description trop simplifiée.Ce "truc horrible" supplémentaire dans la documentation Ubuntu est un truc supplémentaire pour créer un
deb
paquet. Lorsque vous le faites pour plus que vous, il est préférable de le conditionner. Vous basculerez dans le temps.La construction du noyau et des modules est conservée séparément, car pour les personnes qui en ont besoin (c'est-à-dire les développeurs du noyau), elles n'apportent souvent des modifications qu'à un module. Ils peuvent appliquer leurs modifications, reconstruire et installer uniquement les modules. Cela fait gagner beaucoup de temps quand il faut le faire 20 fois par jour. Il ne sera jamais mis à jour pour avoir une seule
make everything
commande. Au lieu de cela, exécutezmake && make modules && make install && make modules_install
comme la documentation le dit . Le processus de construction favorise les développeurs du noyau, pas vous. Et c'est comme ça que ça devrait être.En réalité, il n'y a presque aucune raison pour quiconque, sauf les développeurs de noyau ou les conditionneurs de distribution, de compiler un noyau. Dans presque toutes les circonstances, la fonctionnalité de noyau que vous souhaitez a déjà été conçue pour vous et est disponible dans l'un des noyaux pré-emballés. Il y a des exceptions, mais elles sont extrêmement rares de nos jours.
Non pas que je vous décourage de créer votre propre noyau, je vous encourage en fait à le faire. Je pense que la construction de votre noyau à partir de zéro est une pratique inestimable pour apprendre comment tout cela fonctionne là-bas. En partie, parce que peut-être un jour vous serez l'exception qui doit le faire. Mais cela vous apprend également beaucoup sur le noyau et le processus de démarrage en général. Vous serez une meilleure personne pour l'avoir fait.
la source
/vmlinuz
répertoire se trouve-t-il dans le dossier racine? quand je fais une installation, ce répertoire sera-t-il créé et un nouveau noyau y sera-t-il placé? Est-ce quemake modules_install
remplacer mes modules installés? Supposons que je place mon vmlinux dans le répertoire / boot, dois-je faire autre chose (comme éditer les fichiers de configuration grub et faire grub-update ou quelque chose après ça?)make bzimage
qui fait ça./vmlinuz
est un fichier binaire, pas un répertoire. Je ne fabrique que des noyaux packagés depuis environ 5 ans, donc je ne me souviens pas exactement du comportement d'modules_install
un noyau directement installé. Grub trouvera votre noyau/boot
sans aide. Oui, vous devez toujours exécutergrub-update
après l'installation d'un nouveau noyau.make bzimage
place demake
? Dois-je faire unmake clean
etmake bzimage
encore? En/vmlinuz
voulez - vous dire le fichier sera créé dans le répertoire racine ou dans le répertoire source du noyau Linux?/
est préfixé est un chemin absolu, donc oui, c'est un fichier à la racine.Y
sont compilés en (c'est-à-dire qu'ils font partie de vmlinuz). Les modules répondusM
sont compilés en modules chargeables. Les modules répondusN
ne sont pas compilés.make modules_install
ne s'applique qu'à ceux qui ont réponduM
.