Bosh sahifa Wiki Boot Stage

Boot Stage

Boot Stage — yuklanish jarayonidagi aniq vazifa va privilege chegarasiga ega alohida bosqich. Katta firmware yoki operatsion tizim bir yo‘la ishga tushmaydi: kichik ishonchli kod keyingi, imkoniyati kengroq stage’ni tayyorlaydi va unga nazorat beradi. Stage’lar ROM, birlamchi bootloader, DRAM initializer, ikkilamchi bootloader, kernel va user-space init shaklida tashkil etilishi mumkin.

Bosqichlarga ajratish sababi

Resetdan keyin RAM, storage driver va filesystem hali mavjud bo‘lmasligi mumkin. ROM kodi faqat kichik ichki xotira va sodda flash interfeysi bilan ishlaydi. U minimal keyingi image’ni yuklaydi; bu image DRAMni tayyorlab, kattaroq bootloaderni ishga tushiradi.

Har stage hajmi va dependency’si shu paytdagi resursga mos bo‘ladi. Barcha driverlarni ROMga joylash firmware update va chip maydonini qimmatlashtiradi. Modullilik platforma variantlarini ham ajratadi.

Topshirish shartnomasi

Stage keyingisiga faqat entry address emas, machine state va metadata topshiradi. CPU mode, stack, cache, MMU, interrupt holati, memory map, device tree, command line va measurement log hujjatlashtirilgan handoff contractga kiradi.

Oldingi stage cache’da yozilgan data’ni memoryga chiqarmasa yoki keyingisi kutgan alignmentni buzsa, xato ancha kech ko‘rinadi. Handoff structure magic, version, size va checksum bilan tekshiriladi. Noma’lum yangi maydonlar backward compatibility qoidasi bo‘yicha o‘tkaziladi.

Ishonch zanjiri

Immutable ROM public key yoki uning hashiga tayanib birinchi mutable stage imzosini tekshiradi. Har tasdiqlangan stage keyingisini tekshirsa chain of trust hosil bo‘ladi. Measurement-only model image hashini TPM yoki secure logga yozadi, enforcement modeli esa noma’lum image’ni ishga tushirmaydi.

Version counter rollback qilingan, ammo to‘g‘ri imzolangan zaif firmware’ni rad etadi. Update paytida yangi stage bilan eski keyingi stage ABI’si mosligi tekshiriladi. Bir qismini yangilab qolgan tizim recoverable bo‘lishi kerak.

Erta va kech stage

Erta bosqichlar allocation, thread va to‘liq console’siz ishlaydi; xatolar LED code, UART yoki reset register orqali bildiriladi. Kech bootloader filesystem, USB, network va grafik menyuga ega bo‘lishi mumkin. Imkoniyat ko‘paygani sari attack surface ham kengayadi.

Kernelning early init qismi ham ichki stage’larga bo‘linadi. Memory allocator va scheduler tayyor bo‘lishidan oldingi funksiya keyingi API’larni chaqira olmaydi. Initialization annotationlari vaqtinchalik kod va data’ni bootdan so‘ng bo‘shatishga imkon beradi.

A/B va recovery

A/B tizimda stage slot metadata’dan active image’ni tanlaydi. Har urinish boot counterini kamaytiradi, user space success marker qo‘ygach slot “good” bo‘ladi. Recovery stage asosiy storage buzilganda minimal update yo‘lini beradi.

Recovery image uchun ham authentication, physical-presence policy va rate limit zarur. Aks holda u normal bootdan zaifroq kirish eshigiga aylanadi. Fault injection elektr uzilishi va metadata’ning yarmi yozilgan holatni sinaydi.

Memory ownership

Har stage foydalanadigan xotira diapazoni handoff hujjatida rezerv qilinadi. Keyingi bootloader oldingi stage kodi yoki measurement logini allocatorga erta bermaydi. Firmware runtime service’lari OS ishlayotgan paytda ham ayrim sahifalarni saqlashi mumkin. Device tree reserved-memory yoki UEFI memory type bu chegarani bildiradi. Xato classification keyingi kernelning firmware stackini ustiga yozishiga, tasodifiy crash yoki kalit sizishiga olib kelishi mumkin.

Bog‘liq tushunchalar

bootloader, chain of trust, handoff, A/B update, recovery image, firmware stage