GRUB — Linux 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:
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:
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;
/bootko‘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:
- firmware mode;
- disk ko‘rinishi;
- ESP yoki MBR;
/boot;- UUID;
grub.cfg;- kernel va initramfs;
- Secure Boot;
- NVRAM entry;
- filesystem modul
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