Der Kernel kompiliert sich nicht selbst - er wird von einem C-Compiler im Userspace kompiliert. In den meisten CPU-Architekturen verfügt die CPU über eine Reihe von Bits in speziellen Registern, die angeben, über welche Berechtigungen der aktuell ausgeführte Code verfügt. In x86 sind dies die aktuellen CPL-Werte ( Privilege Level Bits) im CS-Register ( Code Segment ). Wenn die CPL-Bits 00 sind, wird der Code im Sicherheitsring 0 ausgeführt , der auch als Kernel-Modus bezeichnet wird . Wenn die CPL-Bits 11 sind, wird der Code im Sicherheitsring 3 ausgeführt , der auch als Benutzermodus bezeichnet wird . Die beiden anderen Kombinationen 01 und 10 (Sicherheitsringe 1 bzw. 2) werden selten verwendet.
Die Regeln darüber, was Code im Benutzermodus im Vergleich zum Kernelmodus tun kann und was nicht, sind ziemlich kompliziert, aber es reicht zu sagen, dass der Benutzermodus die Berechtigungen stark eingeschränkt hat.
Wenn Leute über den Kernel eines Betriebssystems sprechen, beziehen sie sich auf die Teile des Betriebssystemcodes, die im Kernelmodus mit erhöhten Berechtigungen ausgeführt werden können. Im Allgemeinen versuchen die Kernelautoren, den Kernel aus Sicherheitsgründen so klein wie möglich zu halten, damit Code, der keine zusätzlichen Berechtigungen benötigt, diese nicht hat.
Der C-Compiler ist ein Beispiel für ein solches Programm. Er benötigt keine zusätzlichen Berechtigungen, die der Kernelmodus bietet, und wird daher wie die meisten anderen Programme im Benutzermodus ausgeführt.
Unter Linux besteht der Kernel aus zwei Teilen: dem Quellcode des Kernels und der kompilierten ausführbaren Datei des Kernels. Jeder Computer mit einem C-Compiler kann den Kernel aus dem Quellcode in das Binärbild kompilieren. Die Frage ist also, was mit diesem Binärbild zu tun ist.
Wenn Sie Linux auf einem neuen System installieren, installieren Sie ein vorkompiliertes Binär-Image, normalerweise entweder von einem physischen Medium (z. B. einer CD-DVD) oder vom Netzwerk. Das BIOS lädt den (binären Abbild des) Kernel-Bootloaders vom Medium oder Netzwerk, und dann installiert der Bootloader den (binären Abbild des) Kernels auf Ihrer Festplatte. Wenn Sie dann neu starten, lädt das BIOS den Bootloader des Kernels von Ihrer Festplatte, und der Bootloader lädt den Kernel in den Speicher, und Sie können loslegen.
Wenn Sie Ihren eigenen Kernel neu kompilieren möchten , ist das etwas schwieriger, aber es kann getan werden.