</>

لینوکس‌پارسی

مرجع فارسی آموزش لینوکس

Gentoo • Arch • Debian • Ubuntu • Kali • Parrot
پرش به محتوای اصلی

Command Palette

Search for a command to run...

Manual Kernel — پیکربندی دستی هسته

آموزش کامل پیکربندی و ساخت دستی هسته در Gentoo با make menuconfig، گزینه‌های کلیدی، ساخت bzImage و مدیریت savedconfig.

پیشرفته۱۲ دقیقه مطالعهآخرین بروزرسانی: ۱ تیر ۱۴۰۵ویرایش در گیت‌هاب

ساخت دستی هسته (Manual Kernel) سنتی‌ترین و در عین حال قدرتمندترین روش نصب هسته در Gentoo است. در این روش شما با make menuconfig دقیقاً تعیین می‌کنید چه چیزی داخل هسته باشد، چه چیزی به‌صورت ماژول بارگذاری شود و چه چیزی حذف گردد. نتیجه، هسته‌ای کاملاً متناسب با سخت‌افزار شماست — سبک، سریع و بهینه.

پیش‌نیازها#

پیش از شروع، باید این ابزارها نصب باشند:

# ابزارهای ضروری ساخت کرنل
emerge --ask sys-devel/gcc sys-devel/make sys-devel/bc
emerge --ask sys-libs/ncurses   # برای menuconfig
emerge --ask sys-kernel/gentoo-sources
emerge --ask sys-kernel/linux-firmware
 
# بررسی نصب
eselect kernel list
eselect kernel set 1
cd /usr/src/linux

مسیر /usr/src/linux

دستورات پیکربندی و ساخت هسته باید در مسیر /usr/src/linux اجرا شوند که یک symlink به سورس فعال است. این symlink را با eselect kernel مدیریت کنید.

ابزارهای پیکربندی#

هسته چندین رابط پیکربندی دارد:

دستورمحیطتوضیح
make menuconfigترمینال (ncurses)رایج‌ترین، نیازمند ncurses
make nconfigترمینال (ncurses)نسخه مدرن‌تر menuconfig با امکانات بیشتر
make xconfigگرافیکی (Qt)نیازمند qttools، تصویری و ساده
make gconfigگرافیکی (GTK)نیازمند gtk، تصویری
make oldconfigترمینالفقط گزینه‌های جدید را می‌پرسد
make defconfigخودکارپیکربندی پیش‌فرض کرنل
make localmodconfigخودکارفقط ماژول‌های فعلی سیستم را شامل می‌شود

برای شروع، پیکربندی پیش‌فرض را بارگذاری کنید:

# بارگذاری پیکربندی پیش‌فرض
make defconfig
 
# یا کپی پیکربندی فعلی سیستم در حال اجرا
zcat /proc/config.gz > .config
 
# باز کردن منوی پیکربندی
make menuconfig

proc/config.gz

اگر هستهٔ فعلی شما با گزینهٔ CONFIG_IKCONFIG_PROC ساخته شده باشد، فایل /proc/config.gz شامل پیکربندی هستهٔ در حال اجراست. این یک نقطهٔ شروع عالی برای پیکربندی جدید است.

گزینه‌های کلیدی پیکربندی#

این جدول مهم‌ترین گزینه‌هایی است که باید بررسی کنید. هر گزینه با یک مسیر در منو مشخص می‌شود:

مسیرگزینهمقدار پیشنهادیتوضیح
Processor type and featuresProcessor familyCore2/newer Xeon یا Generic-x86-64بهینه‌سازی برای پردازنده
Processor type and featuresPreemption ModelVoluntary Preemption (Desktop)پاسخ‌گویی دسکتاپ
Power managementCPU Frequency scalingonمدیریت فرکانس CPU
File systemsext4* (built-in)سیستم‌فایل ریشه
File systemsbtrfsM (module) یا *اگر از btrfs استفاده می‌کنید
File systemsVFATMبرای ESP و فلش USB
File systemsNTFSMبرای دسترسی به ویندوز
Device DriversAHCI/SATA support*درایور دیسک SATA
Device DriversNVMe support*برای SSDهای NVMe
Device DriversUSB support*پشتیبانی USB
Device DriversNetwork device support* و Mکارت شبکه
Graphics supportDRM*زیرساخت گرافیکی
Graphics supportDRM driver for Intel/AMD/NVIDIAبسته به GPUدرایور گرافیکی
Sound card supportAdvanced Linux Sound Architecture*صدا
Networking supportTCP/IP networking*شبکه
General setupinitramfs support* اگر initramfs داریدپشتیبانی از initramfs

درایور ریشه باید built-in باشد

اگر هستهٔ شما بدون initramfs بوت می‌شود، درایور کنترلر دیسک (مانند AHCI یا NVMe) و سیستم‌فایل ریشه (مانند ext4) حتماً باید به‌صورت built-in (با *) باشند، نه ماژول. در غیر این صورت هسته نمی‌تواند ریشه را سوار کند و با خطای VFS: Unable to mount root fs متوقف می‌شود.

ساخت هسته#

پس از پیکربندی، هسته را بسازید:

# ساخت کرنل و ماژول‌ها (با -jN برای موازی‌سازی)
make -j$(nproc)
# خروجی:
#   CALL    scripts/checksyscalls.sh
#   DESCEND objtool
#   BUILD   arch/x86/boot/bzImage
# Kernel: arch/x86/boot/bzImage is ready
 
# نصب ماژول‌ها
make modules_install
# خروجی:
#   INSTALL /lib/modules/6.6.21-gentoo/kernel/drivers/...
#   DEPMOD  6.6.21-gentoo
 
# نصب کرنل (کپی bzImage, System.map, .config به /boot)
make install
# خروجی:
#   INSTALL /boot
# bzImage is ready in /boot/vmlinuz-6.6.21-gentoo
# System.map is ready in /boot/System.map-6.6.21-gentoo
# config is ready in /boot/config-6.6.21-gentoo

برای معماری‌های دیگر، هدف build متفاوت است:

# برای ARM64
make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- -j$(nproc)

ساخت initramfs با genkernel#

اگر از LVM، LUKS یا سیستم‌فایل پیچیده استفاده می‌کنید، به initramfs نیاز دارید:

# نصب genkernel
emerge --ask sys-kernel/genkernel
 
# ساخت و نصب initramfs فقط
genkernel --install initramfs
# خروجی:
# * Gentoo Linux Genkernel; Version 4.3.16
# * Running with options: --install initramfs
# * Using genkernel.conf from /etc/genkernel.conf
# * initramfs: >> Initializing...
# *         >> --initramfs-overlay...
# *         >> Appending devices cpio data...
# *         >> Appending base_layout cpio data...
# *         >> Compressing cpio data (.lz4)...
# *         >> Created initramfs at /boot/initramfs-6.6.21-gentoo.img

برای سفارشی‌سازی، /etc/genkernel.conf را ویرایش کنید:

# /etc/genkernel.conf
# فشرده‌سازی با zstd
COMPRESS_INITRD="yes"
COMPRESS_INITRD_TYPE="zstd"
# پشتیبانی از LUKS
LUKS="yes"
# پشتیبانی از LVM
LVM="yes"
# بارگذاری microcode
MICROCODE="all"

نصب هسته با روش دستی (دستور cp)#

برای کنترل کامل، می‌توانید به‌جای make install فایل‌ها را دستی کپی کنید:

# کپی bzImage
cp arch/x86/boot/bzImage /boot/vmlinuz-6.6.21-gentoo
 
# کپی System.map
cp System.map /boot/System.map-6.6.21-gentoo
 
# کپی فایل پیکربندی
cp .config /boot/config-6.6.21-gentoo
 
# ساخت initramfs با dracut
emerge --ask sys-kernel/dracut
dracut --kver 6.6.21-gentoo

savedconfig برای پیکربندی قابل بازتولید#

Gentoo از قابلیت savedconfig پشتیبانی می‌کند که پیکربندی هسته را در /etc/portage/savedconfig/ ذخیره می‌کند تا نصب‌های بعدی همان پیکربندی را داشته باشند:

# فعال کردن USE flag savedconfig
echo "sys-kernel/gentoo-sources savedconfig" >> /etc/portage/package.use/kernel
 
# ذخیره پیکربندی فعلی
mkdir -p /etc/portage/savedconfig/sys-kernel
cp /usr/src/linux/.config /etc/portage/savedconfig/sys-kernel/gentoo-sources-6.6.21
 
# نصب بعدی از همین پیکربندی استفاده می‌کند
emerge --ask sys-kernel/gentoo-sources

مزیت savedconfig

با savedconfig، هر بار که Gentoo سورس هستهٔ جدید را ارائه می‌دهد، می‌توانید با make oldconfig تنها گزینه‌های جدید را انتخاب کنید و پیکربندی قدیمی حفظ می‌شود. این روش برای سرورها و نصب‌های تکرارپذیر عالی است.

مدیریت وابستگی‌های هسته با make oldconfig#

وقتی سورس هستهٔ جدیدی نصب می‌کنید، پیکربندی قبلی را روی آن اعمال کنید:

# کپی پیکربندی قدیمی
cp /boot/config-6.6.16-gentoo /usr/src/linux/.config
 
# اعمال روی سورس جدید
make olddefconfig    # گزینه‌های جدید با پیش‌فرض
# یا
make oldconfig       # گزینه‌های جدید را تعاملی می‌پرسد

make oldconfig و config drift

اگر فاصلهٔ بین دو نسخهٔ هسته زیاد باشد (مثلاً از 5.15 به 6.6)، make oldconfig ممکن است گزینه‌های جدید زیادی را به‌صورت تعاملی بپرسد و انتخاب اشتباه می‌تواند منجر به بوت نشدن شود. همیشه پس از make oldconfig با make menuconfig پیکربندی نهایی را بازبینی کنید.

خطاهای رایج#

۱. هسته بوت نمی‌شود — Unable to mount root fs#

VFS: Unable to mount root fs on unknown-block(0,0)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

دلیل: درایور کنترلر دیسک یا سیستم‌فایل ریشه به‌صورت ماژول است و initramfs هم ندارید. راه‌حل:

cd /usr/src/linux
make menuconfig
# بررسی کنید:
# Device Drivers -> SATA/PATA -> AHCI = * (built-in)
# File systems -> ext4 (یا سیستم‌فایل ریشه خود) = * (built-in)
make -j$(nproc) && make modules_install && make install

۲. نبودِ درایور گرافیکی#

[drm] *ERROR* GPU HANG: ecode 9:1:...

دلیل: درایور DRM برای GPU شما داخل هسته نیست یا نسخهٔ اشتباه است. راه‌حل:

make menuconfig
# Graphics support -> DRM -> خود GPU را روشن کنید
# برای Intel: DRM_I915
# برای AMD: DRM_AMDGPU
# برای NVIDIA (Nouveau): DRM_NOUVEAU

۳. خطای ماژول‌های خارجی پس از به‌روزرسانی#

FATAL: Module nvidia not found

دلیل: ماژول‌های خارجی (NVIDIA، VirtualBox) برای هستهٔ جدید ساخته نشده‌اند. راه‌حل:

emerge --ask @module-rebuild
# یا
module-rebuild rebuild

۴. خطای nvme در initramfs#

dracut: FATAL: Module nvme not found

دلیل: درایور NVMe را به‌صورت built-in ساخته‌اید اما dracut آن را در initramfs جستجو می‌کند. راه‌حل: درایور را به ماژول (M) تغییر دهید یا add_drivers را در /etc/dracut.conf.d/ خالی کنید.

خلاصه و مرحله بعد#

ساخت دستی هسته در Gentoo یکی از ارزشمندترین مهارت‌هاست. شما کنترل کاملی روی سخت‌افزار و ویژگی‌های هسته دارید، اما مسئولیت بیشتری هم بر دوش شماست. همیشه پس از پیکربندی، با make menuconfig بازبینی کنید و یک initramfs مناسب بسازید.

برای مقایسه با روش آماده، آموزش Distribution Kernel را ببینید. پس از نصب هسته، باید GRUB را نصب کنید. اگر هنوز وارد chroot نشده‌اید، آموزش chroot را مرور کنید. برای مرور کلی مسیرهای نصب، آموزش نصب Kernel را ببینید.

اشتراک‌گذاری:

این صفحه در تاریخ ۱ تیر ۱۴۰۵ به‌روزرسانی شده است.