نصب هسته — مرور کلی
معرفی کامل نصب هسته در Gentoo: تفاوت سورسهای مختلف، انتخاب میان Distribution Kernel، Manual Kernel و genkernel.
هسته (Kernel) قلب هر سیستم لینوکس و پلی میان سختافزار و نرمافزار است. در Gentoo میتوانید هسته را بهصورت کاملاً دستی پیکربندی کنید یا از هستههای ازپیشآمادهٔ Gentoo استفاده کنید. این انعطاف یکی از بزرگترین نقاط قوت Gentoo و در عین حال یکی از مهمترین تصمیمهای نصب است.
چرا هسته در Gentoo مهم است؟
بسیاری از توزیعها (مانند Ubuntu یا Fedora) یک هستهٔ عمومی (generic kernel) نصب میکنند که تقریباً همهٔ درایورها را بهصورت ماژول در اختیار دارد. این رویکرد ساده است، اما باعث میشود هسته حجیمتر و گاهی کندتر شود. در Gentoo شما کنترل کاملی روی این موضوع دارید که کدام درایورها، سیستمفایلها و قابلیتها داخل هسته ساخته شوند و کدام بهصورت ماژول بارگذاری گردند.
هسته در Gentoo
هسته در Gentoo یک «بسته» در Portage است که با emerge نصب میشود، اما خروجی نهایی (فایل bzImage، ماژولها و گاهی initramfs) بهصورت مستقل روی دیسک نصب میگردد. به همین دلیل نصب هسته چند مرحلهای است: نصب سورس، پیکربندی، کامپایل و نصب نهایی.
سورسهای هسته در Gentoo
Gentoo چندین بستهٔ سورس هسته ارائه میدهد که هر کدام کاربرد متفاوتی دارند:
| بسته | توضیح | کاربرد |
|---|---|---|
sys-kernel/gentoo-sources | سورس رسمی Gentoo با وصلههای Gentoo | رایجترین انتخاب، تعادل پایداری و ویژگی |
sys-kernel/vanilla-sources | سورس خام بالادست (kernel.org) | بدون وصله، برای کسانی که میخواهند کرنل خالص داشته باشند |
sys-kernel/git-sources | سورس توسعهای از git | برای آزمایش ویژگیهای جدید و توسعهدهندگان |
sys-kernel hardened-sources | سورس با وصلههای امنیتی | برای سرورها و محیطهای حساس |
sys-kernel/ck-sources | سورس با وصلههای ck (Con Kolivas) | برای دسکتاپ و اولویت پاسخگویی |
نصب اولیهٔ سورس هسته
پس از ورود به محیط chroot، نخستین گام نصب سورس هسته است:
# نصب سورس رسمی Gentoo
emerge --ask sys-kernel/gentoo-sources
# خروجی:
# [ebuild N ] sys-kernel/gentoo-sources-6.6.21
# The following USE flags are enabled: build symlink
# بررسی نصب
ls -l /usr/src/
# خروجی:
# lrwxrwxrwx 1 root root 22 linux -> linux-6.6.21-gentoo
# drwxr-xr-x 24 root root 4096 linux-6.6.21-gentooمسیر /usr/src/linux یک symlink است که به سورس فعال اشاره میکند. این symlink برای بسیاری از ابزارها (مانند module-rebuild یا ساخت درایورهای خارجی مانند NVIDIA) حیاتی است.
انتخاب سورس فعال با eselect
اگر چند نسخه سورس نصب دارید، با eselect kernel میتوانید نسخهٔ فعال را انتخاب کنید:
# فهرست سورسهای نصبشده
eselect kernel list
# خروجی:
# Available kernel symlink targets:
# [1] linux-6.6.21-gentoo
# [2] linux-6.6.16-gentoo *
# تنظیم نسخه فعال
eselect kernel set 1
# یا مستقیماً
eselect kernel set linux-6.6.21-gentoo
# بررسی
readlink /usr/src/linux
# /usr/src/linux-6.6.21-gentooاهمیت symlink
همیشه مطمئن شوید /usr/src/linux به نسخه درستی اشاره میکند. اگر این symlink خراب باشد، ساخت ماژولهای خارجی (مثل nvidia-drivers یا virtualbox-modules) با خطا مواجه میشود.
سه مسیر نصب هسته
Gentoo سه راه اصلی برای نصب هسته ارائه میدهد که هر کدام مناسب کاربر خاصی است:
| مسیر | پیکربندی | سرعت نصب | کنترل | مناسب برای |
|---|---|---|---|---|
| Distribution Kernel | خودکار توسط Gentoo | سریع | کم | کاربران جدید، سرورهای ساده، کسانی که میخواهند بهروزرسانی خودکار داشته باشند |
| genkernel | خودکار اما عمومی | متوسط | متوسط | کاربرانی که نمیخواهند دستی پیکربندی کنند اما کنترل بیشتری میخواهند |
| Manual Kernel | کاملاً دستی | کند (اما آموزشی) | بسیار بالا | کاربران حرفهای، دسکتاپهای بهینه، سختافزار خاص |
Distribution Kernel
بستههای sys-kernel/gentoo-kernel (ساخت از سورس) و sys-kernel/gentoo-kernel-bin (باینری ازپیشکامپایلشده) هسته را با پیکربندی استاندارد Gentoo نصب میکنند. این پیکربندی تقریباً همهٔ سختافزارهای رایج را پشتیبانی میکند و بهروزرسانی آن با emerge انجام میشود. این روش در آموزش Distribution Kernel بهطور کامل بررسی شده است.
Manual Kernel
ساخت دستی با make menuconfig بیشترین کنترل را در اختیار شما میگذارد. شما دقیقاً تصمیم میگیرید چه چیزی داخل هسته باشد، چه چیزی بهصورت ماژول بارگذاری شود و چه چیزی حذف گردد. این مسیر زمانبر است، اما نتیجهٔ نهایی یک هستهٔ سبک و بهینه برای سختافزار شماست. این روش در آموزش Manual Kernel توضیح داده شده است.
genkernel: راه میانه
اگر نمیخواهید دستی پیکربندی کنید اما سراغ Distribution Kernel هم نمیروید، genkernel گزینهای میانه است:
# نصب ابزار genkernel
emerge --ask sys-kernel/genkernel
# ساخت و نصب کرنل و initramfs با پیکربندی پیشفرض
genkernel all
# این دستور:
# 1) یک .config عمومی ایجاد میکند
# 2) کرنل را میسازد
# 3) ماژولها را نصب میکند
# 4) bzImage را در /boot کپی میکند
# 5) یک initramfs میسازدgenkernel سبک اما حجیم
خروجی genkernel یک هستهٔ عمومی شبیه به توزیعهای دیگر است؛ بدین معنا که اکثر درایورها بهصورت ماژول ساخته میشوند و initramfs بزرگی تولید میشود. اگر به دنبال بهینهسازی هستید، Manual Kernel را انتخاب کنید.
راهنمای انتخاب
این جدول ساده به شما کمک میکند تصمیم بگیرید:
| وضعیت شما | پیشنهاد |
|---|---|
| تازه با Gentoo آشنا شدهاید | Distribution Kernel |
| میخواهید سریع نصب کنید و سر بزنید | gentoo-kernel-bin |
| سرور با سختافزار ثابت | gentoo-kernel با savedconfig |
| دسکتاپ و کنترل کامل میخواهید | Manual Kernel |
| لپتاپ با سختافزار خاص | Manual Kernel |
| نیاز به initramfs دارید اما نه پیکربندی دستی | genkernel |
نصب ابزارهای کمکی
مستقل از اینکه کدام مسیر را انتخاب میکنید، چند ابزار کمکی ضروریاند:
# ابزارهای مدیریت کرنل و ماژول
emerge --ask sys-kernel/installkernel
emerge --ask sys-kernel/linux-firmware
emerge --ask sys-firmware/intel-microcode # برای پردازندههای Intel
emerge --ask sys-apps/kmod # جایگزین modutils
# ابزار ساخت initramfs (یکی از دو مورد)
emerge --ask sys-kernel/dracut # مدرن، استفاده در Distribution Kernel
emerge --ask sys-kernel/genkernel # سنتی، همهکارهlinux-firmware
بستهٔ sys-kernel/linux-firmware شامل فریمور دستگاههای مختلف (کارت شبکه، بلوتوث، Wi-Fi و GPU) است. بدون آن، بسیاری از دستگاهها کار نخواهند کرد، حتی اگر درایور آنها داخل هسته باشد.
خطاهای رایج
۱. خطای symlink /usr/src/linux
* ERROR: Could not find a usable kernel source treeدلیل: symlink /usr/src/linux وجود ندارد یا به مسیر اشتباهی اشاره میکند. راهحل:
eselect kernel list
eselect kernel set 1
readlink /usr/src/linux
# باید مسیر معتبر برگرداند۲. خطای build tools missing
make: gcc: No such file or directoryدلیل: ابزارهای ساخت نصب نیستند. راهحل:
emerge --ask sys-devel/gcc sys-devel/make sys-devel/bc sys-libs/ncurses۳. خطای no space on /usr/src
No space left on deviceدلیل: پارتیشن /usr پر شده یا چند سورس هستهٔ قدیمی روی هم نصب شدهاند. راهحل:
# پاک کردن سورسهای قدیمی
eclean-dist
rm -rf /usr/src/linux-6.6.16-gentooخلاصه و مرحله بعد
نصب هسته در Gentoo تصمیمی مهم است که مسیر نصب را تعیین میکند. سه مسیر اصلی وجود دارد: Distribution Kernel (ساده و خودکار)، genkernel (میانه) و Manual Kernel (دقیق و دستی). بر اساس نیاز و دانش خود یکی را انتخاب کنید.
در ادامه، یا Distribution Kernel را نصب کنید یا Manual Kernel را پیکربندی نمایید. پس از نصب هسته، باید GRUB را نصب کنید. اگر هنوز وارد chroot نشدهاید، ابتدا آموزش chroot را ببینید.
این صفحه در تاریخ ۱ تیر ۱۴۰۵ بهروزرسانی شده است.