Ядро не компілюється самостійно - воно компілюється компілятором С в просторі користувачів. У більшості архітектур процесора центральний процесор має ряд бітів у спеціальних регістрах, які представляють, які привілеї має код, що працює в даний час. У x86 це поточні біти рівня привілеїв (CPL) у регістрі сегмента коду (CS). Якщо біти CPL дорівнюють 00, код, як кажуть, працює в захисному кільці 0 , також відомому як режим ядра . Якщо біт CPL дорівнює 11, код, як кажуть, працює в захисному кільці 3 , також відомому як режим користувача . Інші дві комбінації, 01 та 10 (захисні кільця 1 та 2 відповідно), використовуються рідко.
Правила щодо того, що код може, а що не може робити в режимі користувача в порівнянні з режимом ядра, досить складні, але досить сказати, що режим користувача значно зменшив привілеї.
Тепер, коли люди говорять про ядро операційної системи, вони мають на увазі частини коду ОС, які запускаються в режимі ядра з підвищеними привілеями. Як правило, автори ядра намагаються тримати ядро якомога меншим з міркувань безпеки, щоб код, який не потребує додаткових привілеїв, не мав їх.
Компілятор C є одним із прикладів такої програми - йому не потрібні додаткові привілеї, пропоновані режимом ядра, тому він працює в користувацькому режимі, як і більшість інших програм.
У випадку з Linux ядро складається з двох частин: вихідного коду ядра та складеного виконуваного файлу ядра. Будь-яка машина з компілятором C може скомпілювати ядро із вихідного коду у двійковий образ. Тоді питання полягає в тому, що робити з цим двійковим зображенням.
Коли ви встановлюєте Linux у новій системі, ви встановлюєте попередньо скомпільований двійковий образ, як правило, з фізичного носія (наприклад, CD DVD) або з мережі. BIOS завантажить (двійковий образ) завантажувача ядра з носія або мережі, а потім завантажувач встановить (двійковий образ) ядра на ваш жорсткий диск. Потім, при перезавантаженні, BIOS завантажує завантажувач ядра з вашого жорсткого диска, а завантажувач завантажує ядро в пам’ять, і ви вимикаєтесь і працюєте.
Якщо ви хочете перекомпілювати власне ядро, це трохи складніше, але це можна зробити.