واژهٔ «هسته»، به سامانهٔ نرمافزاری سطح پایینی (به معنی نزدیکتر به سختافزار در ردهبندی معماری سیستمعامل) اشاره میکند که لایهای در معماری سیستمعامل به نام لایه انتزاع سختافزار را تأمین میکند و دیسکها وسامانهٔ پروندهگردانی را بررسی مینماید و تراز کردن (Balancing) ذخیرهسازی دادهها و شبکهبندی و برقراری امنیت را برعهده دارد. [ویکی]
چرا باید هستهٔ لینوکس را دوباره کامپایل کنیم؟
شاید این سؤال برای شما پیش بیاید که با وجود این که یک هستهٔ کامپایل شده در توزیع گنو/لینوکس وجود دارد، چرا بخواهیم دوباره هسته را کامپایل کنیم؟ دلایل زیادی برای این کار وجود دارد. از جمله بهبود کارایی و شخصیسازی.
هستههایی که با توزیعهای معروف گنو/لینوکس منتشر میشوند معمولاً با یک پیکربندی بسیار عمومی کامپایل شدهاند. این یعنی تقریباً تمام سختافزارهای مدرن موجود در بازار رایانهها پشتیبانی میشوند. بنابراین وقتی شما یک توزیع گنو/لینوکس نصب میکنید، صدها ماژول اضافی برای سختافزارها، استانداردها و پروتکلهای مختلف بههمراه کرنل شما نصب میشود که هیچ نیازی به آنها ندارید. بهعنوان مثال اگر کارت صوتی شما از درایورهای FM801 استفاده میکند دیگر نیازی به درایورهای cm109 و یا Zoltrix ندارید. با این حال درایورهای تمامی این چیپستها در کرنل شما موجود است البته این درایورها همیشه بارگذاری نمیشود. بارگذاری ماژول مناسب برعهدهٔ برنامهای به نام udev است. این برنامه در هنگام بوت شدن سیستمعامل، در فضای هسته اجرا میشود و با تطبیق کد وقفههای حاصل از اسکن سختافزار، درایور مناسب را لود میکند. این کار طبیعتاً وقتگیر است. علاوهبر آن وجود ماژولهای اضافی در کرنل، فضا را به هدر میدهد. بنابراین پیکربندی هسته برای یک مجموعهٔ سختافزاری خاص، سرعت بوت سیستم را تا حد زیادی افزایش میدهد و حجم کرنل را تا حدودی کاهش میدهد. بهبود کارایی بوت برای سیستمهای Real Time حیاتی است. در یک مورد خاص، با حذف روال UDev بهبود زمان بوت از ۴۵ ثانیه به ۵ ثانیه (۸۸٪ بهبود زمانی) در کرنل فدورا کور ۶ روی یک کامپیوتر قدیمی مشاهده شده است. شاید بهبود حجم هسته برای رایانههای شخصی امروزی چندان اهمیت نداشته باشد. اما برای سیستمهای غیر PC مانند، گاهی اوقات ۱۰ مگابایت فضای بسیار زیادی به حساب میآید! بنابراین عاقلانه است که در صورت امکان کرنل توزیع گنو/لینوکس خود را برای دلایل متعدد بهینه کنیم.
از طرف دیگر باید در نظر داشته باشیم که کرنل لینوکس یک سامانهٔ نرمافزاری بسیار گسترده است. علاوهبر این که تعداد زیادی ماژول غیرضروری به همراه کرنل شما وجود دارد، تعداد بسیار بیشتری وجود ندارد! این ماژولها معمولاً آنهایی هستند که کاربرد آنها در زمرهٔ فعالیتهای عادی در روند استفاده از رایانهٔ شخصی قرار نمیگیرد. با این حال ممکن است یکی از اینها دقیقاً همان چیزی باشد که شما برای کار غیرمعمولی خود نیاز دارید! بهعنوان مثال شما شاید مایل باشید به دلایلی از یک الگوریتم بسیار قوی برای رمزنگاری تمامی محتویات دیسک سخت خودتان استفاده کنید. در کرنل لینوکس ماژولهایی برای پیاهسازی چنین مکانیسمی وجود دارد. شما میتوانید این کار را به سادگی به سیستمعامل بسپارید و در فضای کرنل، روی فایلسیستمها این رمزنگاری را انجام دهید! (البته برای کاربردهای عادی انجام چنین کارهایی به هیچوجه توصیه نمیشود! توجه داشته باشید که در صورت استفاده از این سیستم، کارایی رایانهٔ شما تا حد بسیار زیادی پایین میآید و اگر رمز خود را فراموش کنید حتی FBI هم نمیتواند اطلاعات شما را برگرداند!)
روند کلی
ساخت یک کرنل در سه فاز کلی انجام میشود: پیکربندی، کامپایل و نصب. مهمترین مرحله پیکربندی کرنل است. این کار نیازمند اطلاع کامل از سامانهٔ سختافزاری، پروتکلها و اطلاعات سطح پایین دیگر در سیستم است. پیکربندی کرنل برای کامپایل کار بسیار دقیق و با حساسیت بسیار بالایی است. شما باید مراقب باشید چیزی را که ضروری است حذف نکنید. و یا ناسازگاری بین ماژولهای انتخاب شده وجود نداشته باشد. با این اوصاف پیکربندی دقیق یک کرنل میتواند ساعتها وقت شما را بگیرد. در عوض کامپایل و تعویض کرنل لینوکس برخلاف تصور عمومی کار بسیار سادهای است و تنها با چند دستور ساده انجام میشود! با این حال کار سختی در این فاز برعهدهٔ پردازندهٔ شما است. ممکن است روند کامپایل ساعتها وقت بگیرد در حالی که پردازندهٔ شما با تمام قوا کار میکند.