Bosh sahifa Wiki GRUB

GRUB

GRUBLinux va boshqa operatsion tizimlarni yuklash uchun ishlatiladigan bootloader. Uning to‘liq nomi GNU GRand Unified Bootloader hisoblanadi.

GRUB bir nechta kernel, operatsion tizim va recovery variantini menyu orqali tanlash imkonini beradi. U BIOS va UEFI muhitlarida ishlashi mumkin.

Zamonaviy distributivlarda odatda GRUB 2 ishlatiladi.

GRUB bosqichlari

Eski BIOS diskida boot kodi kichik joydan boshlanadi. GRUBning katta qismi diskdagi boshqa joydan yuklanadi.

GRUB 2 modulli tuzilishga ega:

  • platformaga mos boshlang‘ich image;
  • core image;
  • filesystem modullari;
  • konfiguratsiya;
  • normal menu;
  • kernel loader.

UEFI holatda GRUB .efi executable sifatida ESPdan ishga tushadi.

Konfiguratsiya

Asosiy yaratilgan konfiguratsiya ko‘pincha:

/boot/grub/grub.cfg

yoki distributivga qarab boshqa yo‘lda bo‘ladi.

Bu fayl odatda qo‘lda tahrir qilinmaydi. Template va scriptlardan avtomatik yaratiladi.

Foydalanuvchi sozlamalari:

/etc/default/grub

faylida bo‘lishi mumkin.

Menu entry

Har boot varianti menuentry blok bilan ifodalanadi.

U quyidagilarni ko‘rsatadi:

  • kernel image;
  • initramfs;
  • root filesystem;
  • kernel parametrlari;
  • platforma modullari.

Misol mazmuni:

linux /boot/vmlinuz root=UUID=... ro
initrd /boot/initramfs.img

UUID

GRUB root filesystemni disk nomi o‘rniga UUID orqali topishi mumkin.

/dev/sda nomi hardware tartibi o‘zgarsa almashishi mumkin. UUID barqarorroq.

Disk klonlanganda bir xil UUID muammo tug‘dirishi mumkin.

Modul

GRUB kerakli imkoniyatlarni modul orqali yuklaydi.

Modullar:

  • ext2/ext4;
  • xfs;
  • btrfs;
  • lvm;
  • luks;
  • mdraid;
  • part_gpt;
  • normal;
  • linux;
  • chainloader;
  • network.

Core image kerakli disk va filesystem modulini topishi kerak.

Initramfs

GRUB kernel bilan birga initramfsni xotiraga yuklaydi.

Initramfs root diskka kirish uchun kerakli driver va scriptlarni o‘z ichiga oladi.

Kernel update’dan keyin GRUB config va initramfs mos yangilanadi.

Kernel tanlash

Menyuda:

  • eng yangi kernel;
  • oldingi kernel;
  • recovery mode;
  • advanced options

bo‘lishi mumkin.

Yangi kernel ishlamasa, eski versiya bilan boot qilib muammo tuzatiladi.

Command line

GRUB menu ichida entry vaqtincha tahrirlanishi mumkin.

Kernel parametriga:

  • nomodeset;
  • single;
  • systemd.unit=...;
  • init=/bin/sh;
  • console=...

qo‘shilishi mumkin.

Bu o‘zgarish faqat shu boot uchun amal qiladi.

GRUB console

Normal menu yuklanmasa, GRUB command line yoki rescue prompt chiqishi mumkin.

Asosiy buyruqlar:

  • ls;
  • set;
  • insmod;
  • linux;
  • initrd;
  • boot;
  • search.

Disk va partition GRUB sintaksisida (hd0,gpt2) kabi ko‘rinadi.

GRUB rescue

grub rescue> odatda core image kerakli modul yoki konfiguratsiyani topa olmaganda chiqadi.

Sabablar:

  • partition o‘chirilgan;
  • disk tartibi o‘zgargan;
  • /boot ko‘chirilgan;
  • core image buzilgan;
  • filesystem modul yo‘q;
  • boot sector ustiga yozilgan.

Rescue muhitida buyruqlar soni cheklangan.

UEFI va GRUB

UEFI firmware GRUB EFI executable’ni ishga tushiradi.

Zanjir:

UEFI → shim → GRUB → Linux kernel

Secure Boot ishlatilganda shim Microsoft yoki platforma ishonadigan key bilan imzolangan bo‘lishi mumkin. Shim distributiv keyi bilan GRUB va kernelni tekshiradi.

BIOS va GRUB

Legacy BIOS MBR yoki BIOS Boot Partition orqali GRUB core image’ni topadi.

GPT diskda BIOS mode uchun kichik BIOS Boot Partition talab qilinishi mumkin.

UEFI va BIOS usullari aralashtirilsa, boot repair noto‘g‘ri targetga o‘rnatilishi mumkin.

Chainloading

GRUB boshqa boot managerni ishga tushiradi.

Windows misolida UEFI executable yoki partition boot sectoriga chainload qilinadi.

GRUB Windows kernelini bevosita yuklamaydi.

os-prober

Ba’zi distributivlar boshqa OSlarni aniqlash uchun os-prober ishlatadi.

Xavfsizlik yoki dizayn sabab avtomatik aniqlash default o‘chirilgan bo‘lishi mumkin.

Menu entry qo‘lda yoki generator orqali qo‘shiladi.

Parol

GRUB menu va command line parol bilan himoyalanishi mumkin.

Aks holda fizik kirish huquqiga ega shaxs kernel command line orqali single-user yoki boshqa recovery rejimiga o‘tishga urinishi mumkin.

GRUB paroli disk encryption o‘rnini bosmaydi.

Disk encryption

Agar /boot shifrlanmagan bo‘lsa, bootloader va kernel tashqi tomondan o‘zgartirilishi mumkin. Secure Boot imzoni tekshiradi.

GRUB ayrim LUKS formatlarini o‘qib, shifrlangan bootdan kernel yuklashi mumkin. Qo‘llov versiya va modulga bog‘liq.

Yangilash

Kernel paketi o‘rnatilganda menu avtomatik yangilanadi.

Administrator distributivga mos buyruq orqali GRUB config yaratadi va bootloaderni disk yoki ESPga o‘rnatadi.

Noto‘g‘ri diskka o‘rnatish boshqa tizim bootini buzishi mumkin.

Diagnostika

GRUB muammosida:

tekshiriladi.

Live media bilan tizimga kirib, root filesystem mount va chroot orqali GRUB qayta o‘rnatilishi mumkin.

GRUB va Btrfs

Btrfs ishlatilgan tizimda root filesystem snapshotlari mavjud bo‘lishi mumkin. Ayrim distributivlar GRUB menu’ga snapshotdan boot qilish entrylarini qo‘shadi.

GRUB Btrfs subvolume va compressionni tushunishi kerak. /boot alohida partitionda bo‘lsa, uning mount holati kernel update vaqtida tekshiriladi.

Serial console

Serverda monitor bo‘lmasa, GRUB menu va kernel log serial portga chiqarilishi mumkin.

Bu uchun GRUB terminal va kernel console= parametri mos sozlanadi. Baud rate ikki tomonda bir xil bo‘lishi kerak.

Bog‘liq tushunchalar

Bootloader, Linux kernel, Initramfs, UEFI, BIOS, EFI System Partition, Secure Boot, Shim, Chainloading, Recovery