Kernel tidak dapat dikompilasi sendiri - ini dikompilasi oleh kompiler C di userspace. Di sebagian besar arsitektur CPU, CPU memiliki sejumlah bit dalam register khusus yang mewakili hak istimewa yang dimiliki kode yang sedang berjalan. Dalam x86, ini adalah bit tingkat hak istimewa (CPL) saat ini dalam register segmen kode (CS). Jika bit CPL adalah 00, kode tersebut dikatakan berjalan di ring keamanan 0 , juga dikenal sebagai mode kernel . Jika bit CPL adalah 11, kode tersebut dikatakan berjalan di ring keamanan 3 , juga dikenal sebagai mode pengguna . Dua kombinasi lainnya, 01 dan 10 (cincin pengaman 1 dan 2 masing-masing) jarang digunakan.
Aturan tentang kode apa yang dapat dan tidak dapat dilakukan dalam mode pengguna versus mode kernel agak rumit, tetapi cukup untuk mengatakan, mode pengguna telah sangat mengurangi hak istimewa.
Sekarang, ketika orang berbicara tentang kernel dari sistem operasi, mereka mengacu pada bagian dari kode OS yang dapat dijalankan dalam mode kernel dengan hak istimewa yang ditinggikan. Umumnya, pembuat kernel mencoba menjaga kernel sekecil mungkin untuk alasan keamanan, sehingga kode yang tidak memerlukan hak istimewa tambahan tidak memilikinya.
Kompilator C adalah salah satu contoh dari program semacam itu - ia tidak memerlukan hak istimewa ekstra yang ditawarkan oleh mode kernel, jadi ia berjalan dalam mode pengguna, seperti kebanyakan program lain.
Dalam kasus Linux, kernel terdiri dari dua bagian: kode sumber kernel, dan kompilasi kernel yang dapat dieksekusi. Semua mesin dengan kompiler C dapat mengkompilasi kernel dari kode sumber ke dalam image biner. Pertanyaannya, kemudian, apa yang harus dilakukan dengan citra biner itu.
Saat Anda menginstal Linux di sistem baru, Anda menginstal image biner yang telah dikompilasi, biasanya dari media fisik (seperti CD DVD) atau dari jaringan. BIOS akan memuat bootloader (citra biner) kernel dari media atau jaringan, dan kemudian bootloader akan menginstal kernel (citra biner) ke dalam hard disk Anda. Kemudian, ketika Anda reboot, BIOS memuat bootloader kernel dari hard disk Anda, dan bootloader memuat kernel ke dalam memori, dan Anda mati dan berjalan.
Jika Anda ingin mengkompilasi ulang kernel Anda sendiri, itu sedikit lebih rumit, tetapi itu bisa dilakukan.