कर्नेल खुद को संकलित नहीं करता है - यह उपयोगकर्ताओं द्वारा सी कंपाइलर में संकलित किया जाता है। अधिकांश सीपीयू आर्किटेक्चर में, सीपीयू के पास विशेष रजिस्टरों में कई बिट्स होते हैं जो यह दर्शाते हैं कि वर्तमान में चल रहे कोड क्या विशेषाधिकार हैं। X86 में, ये कोड सेगमेंट (CS) रजिस्टर में वर्तमान विशेषाधिकार स्तर बिट्स (CPL) हैं । यदि CPL बिट्स 00 हैं, तो कोड को सुरक्षा रिंग 0 में चलने वाला कहा जाता है, जिसे कर्नेल मोड के रूप में भी जाना जाता है । यदि CPL बिट्स 11 हैं, तो कोड को सुरक्षा रिंग 3 में चलाने के लिए कहा जाता है, जिसे उपयोगकर्ता मोड के रूप में भी जाना जाता है । अन्य दो संयोजन, 01 और 10 (सुरक्षा के छल्ले 1 और 2 क्रमशः) शायद ही कभी उपयोग किए जाते हैं।
उपयोगकर्ता मोड बनाम कर्नेल मोड में कोड क्या कर सकता है और नहीं कर सकता इसके बारे में नियम बल्कि जटिल हैं, लेकिन यह कहना पर्याप्त है कि उपयोगकर्ता मोड ने विशेषाधिकारों को कम कर दिया है।
अब, जब लोग किसी ऑपरेटिंग सिस्टम के कर्नेल के बारे में बात करते हैं, तो वे OS के कोड के उन हिस्सों का जिक्र करते हैं, जो एलिवेटेड विशेषाधिकारों के साथ कर्नेल मोड में चलते हैं। आमतौर पर, कर्नेल लेखक सुरक्षा कारणों से कर्नेल को जितना संभव हो उतना छोटा रखने की कोशिश करते हैं, ताकि कोड को अतिरिक्त विशेषाधिकार की आवश्यकता न हो।
सी कंपाइलर ऐसे प्रोग्राम का एक उदाहरण है - इसे कर्नेल मोड द्वारा दिए जाने वाले अतिरिक्त विशेषाधिकारों की आवश्यकता नहीं है, इसलिए यह अधिकांश अन्य प्रोग्रामों की तरह उपयोगकर्ता मोड में चलता है।
लिनक्स के मामले में, कर्नेल में दो भाग होते हैं: कर्नेल का स्रोत कोड और कर्नेल का संकलित निष्पादन योग्य। C कंपाइलर वाली कोई भी मशीन कर्नेल को सोर्स कोड से बाइनरी इमेज में संकलित कर सकती है। प्रश्न, फिर, उस बाइनरी छवि के साथ क्या करना है।
जब आप एक नई प्रणाली पर लिनक्स स्थापित करते हैं, तो आप एक प्री-कम्पोज्ड बाइनरी इमेज को स्थापित कर रहे हैं, आमतौर पर या तो भौतिक मीडिया (जैसे कि सीडी डीवीडी) या नेटवर्क से। BIOS मीडिया या नेटवर्क से कर्नेल के बूटलोडर की (द्विआधारी छवि) को लोड करेगा, और फिर बूटलोडर आपकी हार्ड डिस्क पर कर्नेल की (द्विआधारी छवि) स्थापित करेगा। फिर, जब आप रिबूट करते हैं, तो BIOS आपकी हार्ड डिस्क से कर्नेल के बूटलोडर को लोड करता है, और बूटलोडर कर्नेल को मेमोरी में लोड करता है, और आप बंद और चल रहे हैं।
यदि आप अपनी खुद की गिरी को फिर से जोड़ना चाहते हैं , तो यह थोड़ा मुश्किल है, लेकिन यह किया जा सकता है।