Bosh sahifa Wiki Bootloader

Bootloader

Bootloader — qurilma ishga tushganda operatsion tizim yadrosi yoki asosiy firmware’ni xotiraga yuklab, boshqaruvni unga topshiradigan dastur.

Bootloader apparat yoqilgandan keyingi dastlabki bosqichlardan birida ishlaydi. Kompyuterda u UEFI yoki BIOSdan keyin, mikrokontrollerda esa to‘g‘ridan-to‘g‘ri reset vektoridan ishga tushishi mumkin.

Bootloaderning asosiy vazifasi kerakli image’ni topish, tekshirish, xotiraga joylashtirish va to‘g‘ri boshlang‘ich parametrlar bilan ishga tushirishdir.

Boot zanjiri

Oddiy kompyuter boot jarayoni:

Quvvat yoqiladi
↓
CPU reset
↓
UEFI yoki BIOS
↓
Bootloader
↓
Kernel
↓
Init tizimi
↓
Foydalanuvchi muhiti

Har bosqich keyingi bosqichni tayyorlaydi.

Birinchi bosqich

Eski BIOS tizimida diskning dastlabki sektoridagi kichik kod ishga tushirilgan. Bu joy juda kichik bo‘lgani sababli bootloader bir nechta bosqichga bo‘lingan.

Birinchi bosqich:

  • keyingi kod joyini topadi;
  • minimal disk o‘qish funksiyasidan foydalanadi;
  • katta bootloader qismiga boshqaruv beradi.

UEFI tizimida bootloader odatda EFI System Partition ichidagi .efi executable fayl bo‘ladi.

Kernelni yuklash

Bootloader kernel image’ni xotiraga joylashtiradi.

U qo‘shimcha ravishda:

  • initramfs yoki initrd;
  • device tree;
  • kernel command line;
  • ACPI yoki firmware ma’lumoti;
  • memory map

ni tayyorlaydi.

Kernel qayerda va qanday formatda joylashgani platformaga bog‘liq.

Initramfs

Linux boot jarayonida initramfs vaqtinchalik root filesystem beradi.

Unda:

bo‘lishi mumkin.

Kernel haqiqiy root filesystemni topgach, initramfsdan asosiy tizimga o‘tadi.

Boot menu

Bootloader bir nechta tizim yoki kernel variantini tanlash menyusini ko‘rsatishi mumkin.

Misollar:

Default entry va timeout konfiguratsiyada belgilanadi.

Kernel command line

Bootloader kernelga matnli parametrlar uzatadi.

Misollar:

root=/dev/mapper/system
ro
quiet
console=ttyS0
init=/bin/sh

Bu parametrlar root disk, console, log darajasi va boot xatti-harakatini boshqaradi.

Noto‘g‘ri parametr kernel panic yoki root filesystem topilmasligiga sabab bo‘ladi.

UEFI bootloader

UEFI bootloader firmware service’laridan foydalanadi.

UEFI:

EFI System Partition odatda FAT filesystem bilan formatlanadi.

Secure Boot

Secure Boot bootloader imzosini tekshiradi.

Ishonch zanjiri:

UEFI trust database
↓
Bootloader imzosi
↓
Kernel yoki keyingi loader
↓
Kernel modullari, siyosatga qarab

Imzo mos bo‘lmasa, firmware bootni rad etishi mumkin.

Chainloading

Bootloader boshqa bootloaderni ishga tushirishi mumkin.

Masalan, GRUB Windows Boot Manager’ga chainload qiladi.

Bu holatda birinchi bootloader ikkinchi tizimning ichki yuklash tafsilotini bilishi shart emas.

Embedded bootloader

Embedded qurilmada bootloader:

  • flash image tekshiradi;
  • firmware update qabul qiladi;
  • serial console beradi;
  • recovery mode;
  • A/B slot;
  • rollback;
  • hardware initialization

vazifalarini bajarishi mumkin.

U-Boot embedded Linux tizimlarda keng tarqalgan misol.

Network boot

Bootloader tarmoqdan image yuklashi mumkin.

Texnologiyalar:

Bu disk o‘rnatmasdan OS deploy qilish, server provisioning va recovery uchun ishlatiladi.

A/B boot

Qurilmada ikki boot slot mavjud bo‘lishi mumkin.

Yangilanish faol bo‘lmagan slotga yoziladi. Bootloader yangi slotni sinaydi.

Agar tizim health checkdan o‘tmasa, oldingi slotga qaytadi.

Bu OTA update’da qurilmaning ishlamay qolish xavfini kamaytiradi.

Boot counter

Bootloader yangi image necha marta muvaffaqiyatsiz ishga tushganini hisoblaydi.

Belgilangan urinishdan keyin:

tanlanishi mumkin.

Konfiguratsiya

Bootloader konfiguratsiyasi quyidagilarni saqlaydi:

  • default entry;
  • timeout;
  • kernel path;
  • initramfs;
  • command line;
  • video mode;
  • serial console;
  • password;
  • fallback.

Konfiguratsiya o‘zgarganda syntax va fayl yo‘llari tekshiriladi.

Xavfsizlik

Bootloaderga ruxsatsiz kirish hujumchiga kernel parametrini o‘zgartirish yoki boshqa image yuklash imkonini berishi mumkin.

Himoya:

Bootloader paroli disk ichidagi ma’lumotni o‘zi shifrlamaydi.

Diagnostika

Boot muammosida qaysi bosqichgacha yetgani aniqlanadi.

  • firmware bootloaderni topdimi;
  • boot menu chiqadimi;
  • kernel yuklandimi;
  • initramfs ishga tushdimi;
  • root filesystem topildimi;
  • init process boshlandimi.

Xabarlar:

  • No bootable device;
  • grub rescue;
  • kernel panic;
  • unable to mount root fs

turli qatlamdagi muammoni bildiradi.

Tiklash

Bootloader buzilganda:

ishlatilishi mumkin.

Disk partition va boot entrylar o‘zgartirilishidan oldin ma’lumot backup qilinadi.

Bootloader va disk partitionlari

Bootloader disk partition jadvalini o‘qib, kernel va konfiguratsiya joylashgan filesystemni topadi. BIOS tizimida MBR va BIOS Boot Partition, UEFI tizimida esa GPT va EFI System Partition muhim bo‘lishi mumkin.

Disk klonlash yoki partition ko‘chirishdan keyin:

  • UUID;
  • filesystem identifikatori;
  • boot entry;
  • loader yo‘li;
  • root parametr

moslashtirilmasa, bootloader menu chiqsa ham kernel root diskni topolmaydi.

Bootloader yangilanishi

Bootloader paketi yangilanganda disk yoki EFI partitiondagi executable ham yangilanishi kerak. Faqat konfiguratsiya faylini yangilash executable kodni almashtirmaydi.

Bir nechta disk mavjud tizimda qaysi diskdan firmware boot qilayotgani aniqlanadi. Yangilanish boshqa diskka yozilsa, eski bootloader ishlashda davom etishi mumkin.

Bog‘liq tushunchalar

UEFI, BIOS, GRUB, Kernel, Initramfs, Secure Boot, EFI System Partition, PXE, U-Boot, Chainloading