Distribution Kernel — هستهٔ آمادهٔ Gentoo
آموزش کامل نصب و مدیریت Distribution Kernel در Gentoo: gentoo-kernel، gentoo-kernel-bin، USE flags، initramfs با dracut و بهروزرسانی.
Distribution Kernel هستهای آماده است که Gentoo آن را با پیکربندی استاندارد، وصلههای موردنیاز و بهروزرسانی خودکار ارائه میدهد. این رویکرد شبیه به توزیعهای دیگر است (مانند هستهٔ Ubuntu یا Fedora)، اما با این مزیت که در Gentoo میتوانید آن را بهدلخواه با USE Flags و savedconfig سفارشی کنید.
Distribution Kernel چیست؟
Distribution Kernel مفهومی است که در آن Gentoo یک پیکربندی آماده (predefined .config) برای هسته ارائه میکند که طیف گستردهای از سختافزارها را پشتیبانی میکند. شما نیازی به اجرای make menuconfig ندارید؛ Portage بهطور خودکار هسته را میسازد (یا نسخهٔ باینری را نصب میکند)، ماژولها را در /lib/modules قرار میدهد و فایل bzImage را در /boot کپی میکند.
| بسته | نوع | کاربرد |
|---|---|---|
sys-kernel/gentoo-kernel | سورس، کامپایل روی سیستم | رایجترین؛ بهینه برای سختافزار شما |
sys-kernel/gentoo-kernel-bin | باینری از پیش کامپایلشده | سریعترین نصب، مناسب سیستمهای ضعیف یا نصب سریع |
sys-kernel/vanilla-kernel | سورس خام بالادست | بدون وصله Gentoo |
sys-kernel/vanilla-kernel-bin | باینری سورس خام | همان اما باینری |
چه زمانی از gentoo-kernel-bin استفاده کنیم؟
اگر سیستم شما کند است یا میخواهید نصب Gentoo را سریع تمام کنید، gentoo-kernel-bin را نصب کنید. این بسته از سرور باینری Gentoo دانلود میشود و در چند دقیقه نصب میشود، در حالی که gentoo-kernel ممکن است روی یک سیستم معمولی ۲۰ تا ۶۰ دقیقه زمان ببرد.
USE Flags مهم
پیش از نصب، باید USE Flags مربوط به هسته را در /etc/portage/make.conf تنظیم کنید:
# /etc/portage/make.conf
USE="${USE} initramfs build symlink modules-signing"توضیح پرچمها:
| USE Flag | عملکرد |
|---|---|
initramfs | ساخت خودکار initramfs با dracut پس از کامپایل |
build | اجازه ساخت کرنل (پیشفرض روشن) |
symlink | بهروزرسانی خودکار symlink در مسیر /usr/src/linux |
modules-signing | امضای ماژولها برای Secure Boot |
debug | ساخت نسخه دیباگ با اطلاعات نمادها |
experimental | فعال کردن ویژگیهای آزمایشی |
initramfs برای کرنلهای مدرن
بدون USE flag initramfs، ممکن است هسته نتواند بوت شود، زیرا درایورهای موردنیاز برای سوار کردن فایلسیستم ریشه (مانند LVM، LUKS یا برخی کنترلرهای SATA) بهصورت ماژول هستند و باید توسط initramfs بارگذاری شوند.
نصب Distribution Kernel
# نصب نسخه سورس (کامپایل روی سیستم)
emerge --ask sys-kernel/gentoo-kernel
# خروجی:
# [ebuild N ] sys-kernel/gentoo-kernel-6.6.21:6.6.21-r1
# [ebuild N ] sys-kernel/installkernel-13
# [ebuild N ] sys-kernel/linux-firmware-20240115
# یا نصب نسخه باینری (سریع)
emerge --ask sys-kernel/gentoo-kernel-binپس از نصب، بررسی کنید:
# بررسی فایلهای نصبشده در /boot
ls -l /boot
# خروجی:
# -rw-r--r-- 1 root root 12M vmlinuz-6.6.21-gentoo
# -rw-r--r-- 1 root root 48M initramfs-6.6.21-gentoo.img
# -rw-r--r-- 1 root root 256K config-6.6.21-gentoo
# -rw-r--r-- 1 root root 4.5M System.map-6.6.21-gentoo
# بررسی ماژولها
ls /lib/modules/
# خروجی:
# 6.6.21-gentoo
# بررسی symlink سورس
readlink /usr/src/linux
# /usr/src/linux-6.6.21-gentooمدیریت symlink و eselect
حتی با USE flag symlink، گاهی نیاز است دستی symlink را تنظیم کنید:
# فهرست سورسهای موجود
eselect kernel list
# Available kernel symlink targets:
# [1] linux-6.6.21-gentoo *
# [2] linux-6.6.16-gentoo
# تنظیم فعال
eselect kernel set 1بارگذاری ماژولها
برای بارگذاری خودکار ماژولها هنگام بوت، فایل /etc/conf.d/modules (در OpenRC) یا فایلهای /etc/modules-load.d/*.conf را ویرایش کنید:
# /etc/modules-load.d/network.conf
# بارگذاری ماژول کارت شبکه Intel
e1000e
# /etc/modules-load.d/bluetooth.conf
btusb
bluetoothبرای بارگذاری دستی یک ماژول:
# بارگذاری ماژول
modprobe snd_hda_intel
# بررسی ماژولهای بارگذاریشده
lsmod | head
# خروجی:
# Module Size Used by
# snd_hda_intel 53248 3
# snd_hda_codec 16384 1 snd_hda_intel
# ...
# لیست همه ماژولهای موجود
find /lib/modules/$(uname -r) -name '*.ko*' | headساخت مجدد ماژولهای خارجی
اگر درایور خارجی (مانند nvidia-drivers یا virtualbox-modules) نصب دارید، پس از هر بهروزرسانی هسته باید این ماژولها دوباره ساخته شوند. ابزار module-rebuild این کار را انجام میدهد:
# نصب ابزار
emerge --ask sys-kernel/module-rebuild
# تنظیم فهرست ماژولها برای ردیابی
module-rebuild set
# خروجی:
# Found 3 packages to track:
# x11-drivers/nvidia-drivers-550.40.07
# app-emulation/virtualbox-modules-7.0.14
# net-wireless/rtl8821cu-20240115
# ساخت مجدد پس از بهروزرسانی کرنل
module-rebuild rebuild
# یا با emerge:
emerge --ask @module-rebuild@module-rebuild set
عبارت @module-rebuild یک set در Portage است که بهطور خودکار فهرست بستههایی را که ماژول هسته میسازند تشخیص میدهد. این روش مدرنتر و یکپارچهتر از module-rebuild مستقل است.
initramfs با dracut
Distribution Kernel بهطور پیشفرض از dracut برای ساخت initramfs استفاده میکند. اگر نیاز به سفارشیسازی دارید:
# نصب dracut
emerge --ask sys-kernel/dracut
# ساخت دستی initramfs برای کرنل فعال
dracut --kver $(readlink /usr/src/linux | sed 's/linux-//')
# خروجی:
# dracut: Executing: /usr/bin/dracut --kver 6.6.21-gentoo
# dracut: *** Installing kernel module dependencies ***
# dracut: *** Resolving executable dependencies ***
# dracut: *** Constructing Genuine Intel ***
# dracut: *** Creating image file '/boot/initramfs-6.6.21-gentoo.img' ***
# dracut: *** Creating initramfs image file '/boot/initramfs-6.6.21-gentoo.img' done ***برای افزودن درایور خاص به initramfs، فایل /etc/dracut.conf.d/custom.conf را بسازید:
# /etc/dracut.conf.d/custom.conf
# اضافه کردن ماژولهای خاص
add_drivers+=" nvme vfat "
# پشتیبانی از LUKS
add_dracutmodules+=" crypt crypt-gpg "
# فشردهسازی با zstd
compress="zstd"بهروزرسانی Distribution Kernel
وقتی نسخهٔ جدید هسته منتشر میشود، Portage آن را بهطور خودکار میسازد و در /boot نصب میکند:
# بهروزرسانی کرنل
emerge --ask --update sys-kernel/gentoo-kernel
# خروجی:
# [ebuild N ] sys-kernel/gentoo-kernel-6.6.22:6.6.22
# ساخت مجدد ماژولهای خارجی
emerge --ask @module-rebuild
# پیکربندی مجدد GRUB
grub-mkconfig -o /boot/grub/grub.cfgنگهداشتن کرنل قدیمی
پس از نصب نسخهٔ جدید، نسخهٔ قدیمی را بهمدت چند هفته نگه دارید. اگر نسخهٔ جدید مشکل داشت، میتوانید از منوی GRUB نسخهٔ قدیمی را بوت کنید. برای حذف نسخهٔ قدیمی پس از اطمینان از پایداری:
emerge --depclean sys-kernel/gentoo-kernel:6.6.16خطاهای رایج
۱. کرنل بوت نمیشود — initramfs مفقود
VFS: Unable to mount root fs on unknown-block(0,0)دلیل: USE flag initramfs خاموش بوده یا فایل /boot/initramfs-*.img وجود ندارد. راهحل:
# بررسی فایل initramfs
ls /boot/initramfs-*
# اگر خالی بود:
emerge --ask sys-kernel/dracut
dracut --kver $(uname -r)
grub-mkconfig -o /boot/grub/grub.cfg۲. خطای ماژول NVIDIA پس از بهروزرسانی
modprobe: FATAL: Module nvidia not foundدلیل: ماژول NVIDIA برای هستهٔ جدید ساخته نشده است. راهحل:
emerge --ask @module-rebuild
# یا
module-rebuild rebuild۳. خطای dracut — cannot find kernel modules
dracut: FATAL: Module nvme not found in /lib/modules/6.6.21-gentooدلیل: هسته با درایور NVMe ساخته نشده یا ماژولها نصب نیستند. راهحل: یا درایور را بهصورت built-in پیکربندی کنید (با Manual Kernel) یا از gentoo-kernel-bin استفاده کنید که شامل درایورهای کامل است.
خلاصه و مرحله بعد
Distribution Kernel بهترین انتخاب برای کسانی است که میخواهند Gentoo را سریع نصب کنند، بهروزرسانیهای خودکار داشته باشند و درگیر پیکربندی دستی نشوند. این روش پایدار است و برای اکثر کاربران کفایت میکند.
اگر کنترل بیشتری میخواهید، آموزش Manual Kernel را ببینید. پس از نصب هسته، باید GRUB را نصب و پیکربندی کنید. برای مرور کلی مسیرهای نصب هسته، به آموزش نصب Kernel مراجعه کنید.
این صفحه در تاریخ ۱ تیر ۱۴۰۵ بهروزرسانی شده است.