نصب GRUB — بوتلودر Gentoo
آموزش کامل نصب و پیکربندی GRUB2 در Gentoo: نصب برای UEFI و BIOS، grub-install، grub-mkconfig، دوالبوت با os-prober و سفارشیسازی.
GRUB (GRand Unified Bootloader) نسخهٔ ۲، بوتلودر استاندارد Gentoo و اکثر توزیعهای لینوکس است. وظیفهٔ آن بارگذاری هستهٔ لینوکس در حافظه و سپردن کنترل به آن است. بدون بوتلودر، سیستم پس از روشنشدن نمیداند کدام سیستمعامل را اجرا کند. در این آموزش نصب و پیکربندی GRUB در Gentoo را برای هر دو حالت UEFI و Legacy BIOS میآموزید.
GRUB چیست و چرا؟
پس از نصب هسته، باید بوتلودر را نصب کنید تا سیستم بتواند بوت شود. GRUB2 ویژگیهای زیر را ارائه میدهد:
- پشتیبانی از UEFI و BIOS
- منوی بوت با چندین گزینه (هستههای مختلف، دوالبوت)
- پشتیبانی از فایلسیستمهای مدرن (ext4، btrfs، zfs، FAT، NTFS)
- خط فرمان تعاملی برای رفع مشکل
- پشتیبانی از رمزنگاری دیسک (LUKS)
- قابلیت بوت از RAID و LVM
نصب بسته GRUB
ابتدا بستهٔ GRUB را نصب کنید:
# نصب GRUB
emerge --ask sys-boot/grub
# خروجی:
# [ebuild N ] sys-boot/grub-2.12-r5
# [ebuild N ] sys-boot/os-prober-1.81
# بررسی نسخه
grub-install --version
# خروجی:
# grub-install (GRUB) 2.12USE flagهای مهم
برای پشتیبانی کامل، USE flags زیر را در /etc/portage/package.use/grub فعال کنید:
# /etc/portage/package.use/grub
sys-boot/grub device-mapper mount sdl truetypeاین فلگها به ترتیب پشتیبانی از LVM، mount و رابط گرافیکی Plymouth را اضافه میکنند.
تشخیص UEFI یا BIOS
پیش از نصب، باید بدانید سیستم شما UEFI است یا BIOS:
# بررسی وجود efivars (نشانه UEFI)
ls /sys/firmware/efi/efivars 2>/dev/null
# اگر خروجی لیست فایلها باشد، یعنی UEFI فعال است
# اگر خطای "No such file or directory" داد، یعنی BIOS
# بررسی ابزارهای موجود
which efibootmgr
# /usr/sbin/efibootmgr (در UEFI باید نصب باشد)اگر سیستم شما UEFI است، باید بستههای زیر را نصب داشته باشید:
# برای UEFI
emerge --ask sys-boot/efibootmgr
# بررسی پارتیشن ESP
findmnt /boot/efi
# خروجی:
# TARGET SOURCE FSTYPE OPTIONS
# /boot/efi /dev/sda1 vfat rw,relatime,fmask=0077,dmask=0077,codepage=437,...نصب GRUB برای UEFI
در سیستمهای UEFI، GRUB بهصورت یک برنامه EFI نصب میشود:
# نصب GRUB برای UEFI (amd64)
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Gentoo
# خروجی:
# Installing for x86_64-efi platform.
# Installation finished. No error reported.پارامترها:
--target=x86_64-efi— هدف UEFI 64 بیتی (برای ARM64 ازaarch64-efiاستفاده کنید)--efi-directory=/boot/efi— مسیر پارتیشن ESP سوارشده--bootloader-id=Gentoo— نام GRUB در منوی بوت UEFI
پس از نصب، فایل GRUB به مسیر زیر کپی میشود:
ls /boot/efi/EFI/Gentoo/
# خروجی:
# grubx64.efiبرای بررسی ورودی در NVRAM:
efibootmgr
# خروجی:
# BootCurrent: 0001
# Timeout: 5 seconds
# BootOrder: 0001,0000
# Boot0000* Gentoo HD(1,GPT,...)/File(\EFI\Gentoo\grubx64.efi)اگر efibootmgr نصب نیست
اگر efibootmgr نصب نیست، grub-install هشدار میدهد اما همچنان فایل EFI را کپی میکند. در این حالت میتوانید با --removable یک مسیر استاندارد بسازید که اکثر سیستمهای UEFI از آن استفاده میکنند:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --removable
# فایل در /boot/efi/EFI/BOOT/BOOTX64.EFI کپی میشودنصب GRUB برای Legacy BIOS
در سیستمهای BIOS، GRUB در MBR یا sector بوت پارتیشن نصب میشود:
# نصب GRUB در MBR دیسک (دقت کنید: روی دیسک نه پارتیشن!)
grub-install /dev/sda
# خروجی:
# Installing for i386-pc platform.
# Installation finished. No error reported.هرگز روی پارتیشن نصب نکنید!
دستور grub-install /dev/sda1 اشتباه است — باید روی دیسک (/dev/sda) نصب کنید، نه پارتیشن (/dev/sda1). نصب روی پارتیشن ممکن است فایلسیستم را خراب کند و در برخی تنظیمات GRUB کار نخواهد کرد. اگر پارتیشن بوت جداگانه دارید، آن را با --boot-directory مشخص کنید، اما grub-install همچنان باید روی دیسک باشد.
مقایسه UEFI و BIOS
جدول زیر تفاوتهای اصلی را نشان میدهد:
| ویژگی | UEFI | Legacy BIOS |
|---|---|---|
| دستور grub-install | --target=x86_64-efi --efi-directory=/boot/efi | grub-install /dev/sda |
| محل نصب | پارتیشن ESP (FAT32) | MBR دیسک |
| نوع پارتیشنبندی | GPT (پیشنهادی) | MBR یا GPT با bios_grub |
| ابزار اضافی | efibootmgr | — |
| Secure Boot | پشتیبانی (با وصله) | ندارد |
| سرعت بوت | سریعتر | کندتر |
| رابط | گرافیکی یا متنی | متنی |
ساخت فایل پیکربندی grub.cfg
پس از نصب GRUB، باید فایل پیکربندی آن را بسازید:
# ساخت grub.cfg
grub-mkconfig -o /boot/grub/grub.cfg
# خروجی:
# Generating grub configuration file ...
# Found linux image: /boot/vmlinuz-6.6.21-gentoo
# Found initrd image: /boot/initramfs-6.6.21-gentoo.img
# Found linux image: /boot/vmlinuz-6.6.16-gentoo
# Found initrd image: /boot/initramfs-6.6.16-gentoo.img
# doneاین دستور بهطور خودکار تمام هستههای موجود در /boot را پیدا کرده و منوی بوت میسازد. هر بار که هستهٔ جدیدی نصب میکنید، باید این دستور را اجرا کنید.
grub-mkconfig و emerge
اگر sys-boot/grub با USE flag --config یا پکیجهای installkernel مناسب نصب شده باشد، emerge بهطور خودکار grub-mkconfig را پس از نصب هسته اجرا میکند. در غیر این صورت باید دستی اجرا کنید.
دوالبوت با os-prober
اگر ویندوز یا توزیع لینوکس دیگری کنار Gentoo نصب دارید، میتوانید آنها را به منوی GRUB اضافه کنید:
# نصب os-prober
emerge --ask sys-boot/os-prober
# فعالسازی os-prober
# /etc/default/grub
# در این فایل، خط زیر را از کامنت خارج یا اضافه کنید:
# GRUB_DISABLE_OS_PROBER=falseسپس فایل پیکربندی را دوباره بسازید:
# ساخت مجدد grub.cfg
grub-mkconfig -o /boot/grub/grub.cfg
# خروجی (نمونه):
# Found linux image: /boot/vmlinuz-6.6.21-gentoo
# Found initrd image: /boot/initramfs-6.6.21-gentoo.img
# Found Windows Boot Manager on /dev/sda1@/EFI/Microsoft/Boot/bootmgfw.efi
# Found Ubuntu 22.04 LTS on /dev/sda3
# doneos-prober در GRUB 2.06 و جدیدتر
از GRUB 2.06 به بعد، os-prober بهطور پیشفرض غیرفعال است. باید GRUB_DISABLE_OS_PROBER=false را در /etc/default/grub تنظیم کنید، در غیر این صورت سایر سیستمعاملها در منو ظاهر نمیشوند.
سفارشیسازی /etc/default/grub
فایل اصلی پیکربندی GRUB در /etc/default/grub قرار دارد:
# /etc/default/grub
# زمان نمایش منو (ثانیه)
GRUB_TIMEOUT=5
# ورودی پیشفرض (0 = اولین، "saved" = آخرین انتخابشده)
GRUB_DEFAULT=0
# یا آخرین انتخاب:
# GRUB_DEFAULT=saved
# GRUB_SAVEDEFAULT=true
# پارامترهای خط فرمان کرنل
GRUB_CMDLINE_LINUX="root=/dev/sda2 quiet"
# برای initramfs با LVM/CRYPT:
# GRUB_CMDLINE_LINUX="dolvm crypt_root=UUID=..."
# رزولوشن گرافیکی GRUB
GRUB_GFXMODE=1920x1080,auto
# فونت گرافیکی
GRUB_FONT=/boot/grub/fonts/unicode.pf2
# رابط گرافیکی بهجای متنی
GRUB_TERMINAL=gfxterm
# پسزمینه (اختیاری)
# GRUB_BACKGROUND=/boot/grub/background.png
# فعالسازی os-prober
GRUB_DISABLE_OS_PROBER=falseپس از هر تغییر، فایل پیکربندی را دوباره بسازید:
grub-mkconfig -o /boot/grub/grub.cfgنمایش منو حتی با یک هسته
اگر فقط یک هسته دارید، ممکن است GRUB منو را نمایش ندهد و مستقیم بوت کند. برای نمایش همیشگی منو:
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=5خطاهای رایج
۱. خطای efibootmgr not found
grub-install: error: efibootmgr not foundدلیل: در حالت UEFI، efibootmgr نصب نیست. راهحل:
emerge --ask sys-boot/efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Gentoo۲. خطای grub-mkconfig finds no OS
Generating grub configuration file ...
# (هیچ کرنلی پیدا نشد)
doneدلیل: GRUB نمیتواند /boot را بخواند یا هسته در /boot نیست. راهحل:
# بررسی mount بودن /boot
mount | grep /boot
# اگر نبود:
mount /boot
# بررسی فایلهای کرنل
ls /boot/vmlinuz-*
ls /boot/initramfs-*
# بررسی فایل سیستم (مثلاً اگر /boot روی btrfs است)
grep GRUB_BTRFS /etc/default/grub۳. خطای will not proceed with blocklists
grub-install: warning: Attempting to install GRUB to a partition disk instead of the MBR. This is a BAD idea.
grub-install: error: will not proceed with blocklistsدلیل: GRUB روی یک پارتیشن نصب میشود، نه روی MBR. راهحل:
# نصب روی دیسک، نه پارتیشن
grub-install /dev/sda # درست
# grub-install /dev/sda1 # اشتباه۴. منوی GRUB ظاهر نمیشود
دلیل: یا GRUB_TIMEOUT=0 است یا سیستم از Boot Stub دیگری استفاده میکند. راهحل:
# ویرایش /etc/default/grub
nano /etc/default/grub
# تنظیم: GRUB_TIMEOUT=10
# تنظیم: GRUB_TIMEOUT_STYLE=menu
grub-mkconfig -o /boot/grub/grub.cfg۵. خطای unknown filesystem پس از نصب
grub rescue> error: unknown filesystem.دلیل: GRUB از فایل سیستم پارتیشن بوت پشتیبانی نمیکند (مثلاً ZFS یا فایل سیستمهای خاص). راهحل: از یک /boot جداگانه با ext4 یا btrfs استفاده کنید.
خلاصه و مرحله بعد
نصب GRUB در Gentoo شامل سه مرحله است: نصب بستهٔ sys-boot/grub، اجرای grub-install (با هدف مناسب UEFI یا BIOS) و ساخت grub.cfg با grub-mkconfig. سفارشیسازی با فایل /etc/default/grub و دوالبوت با os-prober از قابلیتهای اصلی GRUB بهشمار میرود.
برای جزئیات پارتیشنبندی UEFI، آموزش UEFI را ببینید. برای Legacy BIOS، آموزش Legacy BIOS را مطالعه کنید. برای مرور کلی نصب هسته پیش از GRUB، آموزش نصب Kernel را ببینید.
این صفحه در تاریخ ۱ تیر ۱۴۰۵ بهروزرسانی شده است.