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/gruborqali qanday qo'shishni tushunasiz; - muammo qaysi bosqichda yuz berganini (bootloader, kernel, initramfs, systemd) taxminiy aniqlay olasiz.
Beshta asosiy bosqich
- 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.
- Bootloader (GRUB) — diskdan kernel obrazini topib xotiraga yuklaydigan dastur. Foydalanuvchiga boot menyusi va kernel parametrlarini vaqtincha o'zgartirish imkonini beradi.
- Kernel — Linux yadrosi xotiraga yuklanadi, apparatni ishga tushiradi va birinchi foydalanuvchi maydonidagi jarayonni — initramfs ichidagi
initni — ishga tushiradi. - 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.
- 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.
- Server qayta yuklanayotganda GRUB menyusi chiqqanda
Shift(BIOS) yokiEsc(UEFI) tugmasini bosib menyuni to'xtating. - Kerakli qatorni tanlab
etugmasini bosing — GRUB shu yozuvning buyruqlarini tahrirlash rejimiga o'tadi. linuxbilan boshlanuvchi qatorni toping va oxiriga kerakli parametrni qo'shing, masalan:
Ctrl+XyokiF10bosib 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:
Masalan, kernel loglarini boot vaqtida to'liq ko'rish uchun quiet ni olib tashlash:
O'zgarishni faylga saqlagach, konfiguratsiyani qayta generatsiya qilish shart:
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:
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
- Disposable test VM'da GRUB menyusini
Shift/Escbilan to'xtating va mavjud yozuvlar ro'yxatini ko'ring. - Kernel qatoriga
eorqali vaqtinchasystemd.log_level=debugparametrini qo'shib yuklang, so'ngjournalctl -bbilan qo'shimcha loglarni ko'ring. /etc/default/grubfaylidagiGRUB_TIMEOUTqiymatini o'zgartiring,update-grubbajaring vagrub.cfgda o'zgarish qanday aks etganini tekshiring.- 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.