</>

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

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

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

Command Palette

Search for a command to run...

نصب 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.12

USE 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#

جدول زیر تفاوت‌های اصلی را نشان می‌دهد:

ویژگیUEFILegacy BIOS
دستور grub-install--target=x86_64-efi --efi-directory=/boot/efigrub-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
# done

os-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 را ببینید.

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

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