Skip to content

Boot jarayoni va GRUB

Kompyuter tugmasi bosilgandan tortib login ekrani chiqquncha bo'lgan oraliqda bir nechta alohida bosqich ketma-ket ishga tushadi. Har bir bosqich o'zidan keyingisini yuklaydi va nazoratni unga topshiradi. Bu ketma-ketlikni bilish — ayniqsa server yuklanmay qolganda, muammo qaysi bosqichda ekanini aniqlash uchun zarur.

Bu maqola init va systemd mavzusidan oldingi bosqichlarni yoritadi: systemd ishga tushishidan oldin nima bo'ladi. Kernel yuklangandan keyingi qadamlar esa kernel modullari va rescue/emergency mode maqolalarida davom etadi.

O'quv maqsadlari

Maqolani tugatgach:

  • BIOS/UEFI → bootloader → kernel → initramfs → systemd bosqichlarini ketma-ket aytib bera olasiz;
  • GRUB nima qilishini va uning konfiguratsiya fayllari qayerda joylashganini bilasiz;
  • boot vaqtida kernel parametrini vaqtincha o'zgartirish yo'lini bilasiz;
  • doimiy kernel parametrini /etc/default/grub orqali qanday qo'shishni tushunasiz;
  • muammo qaysi bosqichda yuz berganini (bootloader, kernel, initramfs, systemd) taxminiy aniqlay olasiz.

Beshta asosiy bosqich

1. BIOS/UEFI  →  2. Bootloader (GRUB)  →  3. Kernel  →  4. initramfs  →  5. systemd (PID 1)
  1. BIOS/UEFI — quvvat kelgach ishga tushadigan firmware. Apparat komponentlarini (POST — Power-On Self-Test) tekshiradi, so'ng belgilangan tartibdagi boot qurilmasini (disk, USB, tarmoq) qidiradi va undan bootloaderni yuklaydi.
  2. Bootloader (GRUB) — diskdan kernel obrazini topib xotiraga yuklaydigan dastur. Foydalanuvchiga boot menyusi va kernel parametrlarini vaqtincha o'zgartirish imkonini beradi.
  3. Kernel — Linux yadrosi xotiraga yuklanadi, apparatni ishga tushiradi va birinchi foydalanuvchi maydonidagi jarayonni — initramfs ichidagi init ni — ishga tushiradi.
  4. initramfs (initial RAM filesystem) — kichik, vaqtinchalik fayl tizimi bo'lib, asosiy root fayl tizimini (masalan, LVM yoki RAID ustidagi) mount qilish uchun zarur drayver va vositalarni o'z ichiga oladi.
  5. systemd (PID 1) — asosiy root fayl tizimi mount qilingach, kernel nazoratni PID 1 sifatida systemdga topshiradi. Bu yerdan boshlab tizim init va systemd maqolasida ko'rilgan target va unit mexanizmi orqali ishga tushadi.

Info

UEFI tizimlarda GRUB o'rniga ba'zan systemd-boot kabi soddaroq bootloader ishlatilishi mumkin. Ubuntu Server'da odatiy holat — GRUB, shu sababli bu maqola GRUB'ga qaratilgan.

GRUB nima qiladi

GRUB (GRand Unified Bootloader) ikkita vazifani bajaradi:

  • foydalanuvchiga boot vaqtida qaysi kernel yoki operatsion tizimni yuklashni tanlash imkonini beradi (boot menyu);
  • tanlangan kernelni parametrlar bilan xotiraga yuklaydi va nazoratni unga topshiradi.

GRUB'ning asosiy fayllari:

Fayl Vazifasi
/etc/default/grub Foydalanuvchi tomonidan tahrirlanadigan asosiy sozlamalar (default kernel, timeout, kernel parametrlari)
/etc/grub.d/ Menyu qatorlarini generatsiya qiluvchi skriptlar to'plami
/boot/grub/grub.cfg Yuqoridagi ikkalasidan avtomatik generatsiya qilinadigan yakuniy konfiguratsiya

Danger

/boot/grub/grub.cfg faylini qo'lda tahrirlamang — u update-grub ishga tushganda qayta yoziladi va qo'lda kiritilgan o'zgarish yo'qoladi. Doimiy o'zgarish har doim /etc/default/grub orqali kiritiladi, so'ng update-grub bilan qayta generatsiya qilinadi.

Boot vaqtida kernel parametrini vaqtincha o'zgartirish

Bu usul faqat joriy yuklanish uchun amal qiladi, reboot'dan keyin yo'qoladi — shu sababli xavfsiz tajriba uchun qulay.

  1. Server qayta yuklanayotganda GRUB menyusi chiqqanda Shift (BIOS) yoki Esc (UEFI) tugmasini bosib menyuni to'xtating.
  2. Kerakli qatorni tanlab e tugmasini bosing — GRUB shu yozuvning buyruqlarini tahrirlash rejimiga o'tadi.
  3. linux bilan boshlanuvchi qatorni toping va oxiriga kerakli parametrni qo'shing, masalan:
linux   /boot/vmlinuz-... root=UUID=... ro quiet splash single
  1. Ctrl+X yoki F10 bosib shu o'zgargan holatda yuklang.

Bu — masalan, single yoki systemd.unit=rescue.target kabi parametrni rescue/emergency mode maqolasida ko'rilgan tiklash stsenariylarida vaqtincha qo'shishning standart usuli.

Doimiy kernel parametrini qo'shish

Har bir yuklanishda amal qiladigan parametr /etc/default/grub faylidagi GRUB_CMDLINE_LINUX_DEFAULT qatoriga qo'shiladi:

sudo nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Masalan, kernel loglarini boot vaqtida to'liq ko'rish uchun quiet ni olib tashlash:

GRUB_CMDLINE_LINUX_DEFAULT="splash"

O'zgarishni faylga saqlagach, konfiguratsiyani qayta generatsiya qilish shart:

sudo update-grub

Ubuntu/Debian'da bu buyruq grub-mkconfig -o /boot/grub/grub.cfg ni chaqiradi. Buyruq muvaffaqiyatli tugagach, o'zgarish keyingi reboot'dan boshlab amal qiladi.

Warning

update-grub bajarilgandan keyin, real reboot qilishdan oldin, natijaviy /boot/grub/grub.cfg faylida kutilgan parametr borligini tekshiring:

grep -m1 'linux ' /boot/grub/grub.cfg

Noto'g'ri kernel parametri (masalan, mavjud bo'lmagan root= qiymati) tizimni yuklanmay qolishiga olib kelishi mumkin. Production serverda bu amal konsolga jismoniy yoki KVM/iLO orqali kirish imkoni bo'lgan holatdagina bajarilishi kerak.

Muammo qaysi bosqichda ekanini taxminlash

Belgi Ehtimoliy bosqich
Ekranda hech narsa yo'q, quvvat chiroqlari ham o'chiq BIOS/UEFI yoki apparat
GRUB menyusi chiqadi, lekin tanlangandan keyin qotib qoladi Kernel yoki initramfs
"Gave up waiting for root device" xabari initramfs asosiy fayl tizimini topa olmayapti
Kernel xabarlari ko'rinadi, keyin systemd xatolari bilan to'xtaydi systemd target yoki unit muammosi — systemd troubleshooting ga qarang

Amaliy mashqlar

  1. Disposable test VM'da GRUB menyusini Shift/Esc bilan to'xtating va mavjud yozuvlar ro'yxatini ko'ring.
  2. Kernel qatoriga e orqali vaqtincha systemd.log_level=debug parametrini qo'shib yuklang, so'ng journalctl -b bilan qo'shimcha loglarni ko'ring.
  3. /etc/default/grub faylidagi GRUB_TIMEOUT qiymatini o'zgartiring, update-grub bajaring va grub.cfg da o'zgarish qanday aks etganini tekshiring.
  4. Beshta boot bosqichini (BIOS/UEFI, GRUB, kernel, initramfs, systemd) xotiradan, o'z so'zlaringiz bilan tartib bilan aytib bering.

Xulosa

Har bir yuklanish BIOS/UEFI'dan boshlanib, GRUB orqali kernelga, undan initramfs orqali asosiy fayl tizimiga va nihoyat systemdga o'tadi. GRUB'ning haqiqiy sozlamasi /etc/default/grub da, generatsiya qilingan natija esa /boot/grub/grub.cfg da saqlanadi — ikkinchisi qo'lda tahrirlanmaydi. Kernel parametrini boot vaqtida vaqtincha (GRUB menyusida e) yoki doimiy (/etc/default/grub + update-grub) qo'shish mumkin. Keyingi kernel modullari maqolasi kernel ishga tushgandan keyin uning drayverlarini qanday boshqarishni ko'rsatadi.

Manbalar