Jądro nie kompiluje się samo - jest kompilowane przez kompilator C w przestrzeni użytkownika. W większości architektur procesora CPU ma pewną liczbę bitów w specjalnych rejestrach, które reprezentują uprawnienia aktualnie uruchomionego kodu. W x86 są to bieżące bity poziomu uprawnień (CPL) w rejestrze segmentu kodu (CS). Jeśli bity CPL mają wartość 00, mówi się, że kod działa w pierścieniu bezpieczeństwa 0 , znanym również jako tryb jądra . Jeśli bity CPL mają wartość 11, mówi się, że kod działa w pierścieniu zabezpieczającym 3 , znanym również jako tryb użytkownika . Pozostałe dwie kombinacje, 01 i 10 (odpowiednio pierścienie zabezpieczające 1 i 2) są rzadko używane.
Zasady dotyczące tego, co kod może, a czego nie może robić w trybie użytkownika w porównaniu z trybem jądra, są dość skomplikowane, ale wystarczy powiedzieć, że tryb użytkownika ma znacznie ograniczone uprawnienia.
Teraz, kiedy ludzie mówią o jądrze systemu operacyjnego, mają na myśli fragmenty kodu systemu operacyjnego, które uruchamiają się w trybie jądra z podwyższonymi uprawnieniami. Ogólnie rzecz biorąc, autorzy jądra starają się, aby jądro było jak najmniejsze ze względów bezpieczeństwa, aby kod, który nie wymaga dodatkowych uprawnień, ich nie miał.
Kompilator C jest jednym z przykładów takiego programu - nie potrzebuje dodatkowych uprawnień oferowanych przez tryb jądra, więc działa w trybie użytkownika, jak większość innych programów.
W przypadku Linuksa jądro składa się z dwóch części: kodu źródłowego jądra i skompilowanego pliku wykonywalnego jądra. Każda maszyna z kompilatorem C może skompilować jądro z kodu źródłowego do obrazu binarnego. Powstaje zatem pytanie, co zrobić z tym binarnym obrazem.
Kiedy instalujesz Linuksa w nowym systemie, instalujesz prekompilowany obraz binarny, zwykle z fizycznego nośnika (takiego jak CD DVD) lub z sieci. BIOS załaduje (binarny obraz) bootloadera jądra z nośnika lub sieci, a następnie bootloader zainstaluje (binarny obraz) jądra na dysku twardym. Następnie, po ponownym uruchomieniu, BIOS ładuje bootloader jądra z twojego twardego dysku, a bootloader ładuje jądro do pamięci i jesteś gotowy do pracy.
Jeśli chcesz ponownie skompilować własne jądro, jest to trochę trudniejsze, ale można to zrobić.