Je pense que vous devriez faire la distinction entre:
compiler, v: Pour utiliser un compilateur de traiter le code source et de produire du code exécutable [1].
et
installer, v: connecter, configurer ou de préparer quelque chose pour l'utiliser [2].
La Compilation produit des exécutables binaires à partir du code source. Installation simple en met exécutables binaires dans le bon endroit pour exécuter plus tard. Ainsi, l'installation et l'utilisation ne nécessite pas de compilation si les binaires sont disponibles. Pensez à "compiler" et "installer" comme sur les "cuire" et "servir", en conséquence.
Maintenant, à vos questions:
- Le noyau est écrit en C, cependant comment le noyau compilé sans un compilateur installé?
Le noyau ne peut pas être compilé sans un compilateur, mais il peut être installé à partir d'un binaire compilé.
Habituellement, lorsque vous installez un système d'exploitation, l'installation d'un noyau pré-compilé (binaire exécutable). Il a été compilé par quelqu'un d'autre. Et seulement si vous voulez compiler le noyau, vous avez besoin de la source et le compilateur, et tous les autres outils.
Même dans les "sources" des distributions comme gentoo, vous démarrez à partir de l'exécution d'un binaire compilé.
Ainsi, vous pouvez vivre votre vie entière, sans la compilation de noyaux, parce que vous les avez compilé par quelqu'un d'autre.
- Si le compilateur C est installé sur ma machine avant que le noyau est compilé, comment le compilateur lui-même compilé sans un compilateur installé?
Le compilateur ne peut pas être exécuté si il n'y a pas de noyau (OS). Donc on doit installer un compilé le noyau pour exécuter le compilateur, mais n'a pas besoin de compiler le noyau lui-même.
Encore une fois, la pratique la plus courante consiste à installer les binaires compilés du compilateur, et les utiliser pour compiler quoi que ce soit (y compris le compilateur lui-même et le noyau).
Maintenant, l'oeuf et la poule problème. La première binaires est compilé par quelqu'un d'autre... Voir une excellente réponse par dmckee.