Il kernel non si compila da solo: è compilato da un compilatore C nello spazio utente. Nella maggior parte delle architetture CPU, la CPU ha un numero di bit in registri speciali che rappresentano i privilegi di cui dispone il codice attualmente in esecuzione. In x86, questi sono i bit del livello di privilegio (CPL) correnti nel registro del segmento di codice (CS). Se i bit CPL sono 00, si dice che il codice sia in esecuzione nell'anello di sicurezza 0 , noto anche come modalità kernel . Se i bit CPL sono 11, si dice che il codice sia in esecuzione nell'anello di sicurezza 3 , noto anche come modalità utente . Le altre due combinazioni, 01 e 10 (anelli di sicurezza 1 e 2 rispettivamente) sono usate raramente.
Le regole su ciò che il codice può e non può fare in modalità utente rispetto alla modalità kernel sono piuttosto complicate, ma è sufficiente dire che la modalità utente ha privilegi notevolmente ridotti.
Ora, quando le persone parlano del kernel di un sistema operativo, si riferiscono alle parti del codice del sistema operativo che possono essere eseguite in modalità kernel con privilegi elevati. Generalmente, gli autori del kernel cercano di mantenere il kernel il più piccolo possibile per motivi di sicurezza, in modo che il codice che non necessita di privilegi aggiuntivi non li abbia.
Il compilatore C è un esempio di tale programma: non necessita dei privilegi aggiuntivi offerti dalla modalità kernel, quindi funziona in modalità utente, come la maggior parte degli altri programmi.
Nel caso di Linux, il kernel è costituito da due parti: il codice sorgente del kernel e l'eseguibile compilato del kernel. Qualsiasi macchina con un compilatore C può compilare il kernel dal codice sorgente nell'immagine binaria. La domanda, quindi, è cosa fare con quell'immagine binaria.
Quando installi Linux su un nuovo sistema, stai installando un'immagine binaria precompilata, di solito da un supporto fisico (come un CD DVD) o dalla rete. Il BIOS caricherà l '(immagine binaria del) bootloader del kernel dal supporto o dalla rete, quindi il bootloader installerà l' (immagine binaria del) kernel sul disco rigido. Quindi, quando riavvii, il BIOS carica il bootloader del kernel dal tuo disco rigido e il bootloader carica il kernel in memoria, e sei spento e in esecuzione.
Se vuoi ricompilare il tuo kernel, è un po 'più complicato, ma può essere fatto.