U-Boot — embedded tizimlar va ko‘plab ARM, RISC-V, PowerPC hamda boshqa platformalarda operatsion tizimni yuklash uchun ishlatiladigan ochiq kodli bootloaderdir. Uning to‘liq nomi Das U-Boot. U protsessor va xotirani dastlabki sozlash, kernel hamda device tree ni storage yoki tarmoqdan yuklash, boot argumentlarini berish va diagnostika buyruqlarini bajarish vazifalarini bajaradi.
Yuklash bosqichlari
Chip resetdan keyin odatda ROM ichidagi kodni bajaradi. Boot ROM pin yoki fuse sozlamasiga qarab eMMC, SD, SPI flash, NAND yoki USBdan keyingi bosqichni topadi. Resurs cheklangan platformada U-Boot SPL kichik birinchi bosqich bo‘lib, DRAM controllerini ishga tushiradi va to‘liq U-Boot image ni xotiraga yuklaydi.
To‘liq U-Boot console, storage driver, network stack va fayl tizimi o‘quvchilarini taqdim etadi. U kernel image, initramfs va Device Tree Blobni RAM manzillariga joylaydi, command line ni tayyorlaydi va nazoratni kernel entry pointga beradi. UEFI qo‘llovi mavjud buildlarda EFI application yoki OS Boot Manager ham ishga tushirilishi mumkin.
Environment
U-Boot environment bootcmd, bootargs, server manzili va boshqa key–value sozlamalarni saqlaydi. U flashning alohida qismida yoki default build ichida bo‘lishi mumkin. saveenv noto‘g‘ri ishlatilsa boot yo‘lini buzadi; redundant environment elektr uzilishida zaxira nusxa beradi.
Boot script buyruqlar ketma-ketligini avtomatlashtiradi. Misol tariqasida U-Boot storage ni tanlaydi, ext4 yoki FATdan kernelni o‘qiydi, keyin booti yoki bootm bilan ishga tushiradi. Aniq buyruq image formati va arxitekturaga bog‘liq.
Tarmoq va diagnostika
TFTP kernel yoki firmware ni development vaqtida tez yuklashga imkon beradi. DHCP manzil va boot parametrlarini berishi mumkin. ping, md, mw, mmc, usb, sf kabi buyruqlar tarmoq, xotira va storage ni tekshiradi. Production buildda keraksiz buyruq hamda tarmoq imkoniyatlari hujum yuzasini oshirmasligi uchun cheklanadi.
Console UART orqali ochiq qolsa, hujumchi bootni to‘xtatib, kernel argumentini o‘zgartirishi yoki xotirani o‘qishi mumkin. Boot delayni nol qilish yetarli himoya emas. Fizik access, console autentifikatsiyasi, command allowlist va apparat debug portlari siyosati birga ko‘riladi.
Secure boot va yangilanish
Verified boot U-Boot, kernel, device tree va root filesystemning imzosi yoki hashini tekshiradi. Ishonch zanjiri immutable ROM key yoki fuse dan boshlanadi. Faqat kernelni tekshirib, boot scriptni himoyasiz qoldirish argumentlarni almashtirish imkonini berishi mumkin.
A/B update ikki firmware slotidan foydalanadi. Yangi slot sinov tariqasida yuklanadi, OS sog‘lomligini tasdiqlasa permanent bo‘ladi; aks holda boot counter eski slotga qaytaradi. Counter va environment elektr uzilishiga chidamli yozilishi kerak. Anti-rollback eski zaif, ammo to‘g‘ri imzolangan firmwarega qaytishni cheklaydi.
Portlash va build
U-Boot board konfiguratsiyasi SoC, DRAM timing, pinmux, storage layout va device tree bilan mos bo‘ladi. Noto‘g‘ri DRAM sozlamasi tasodifiy crash, noto‘g‘ri partition offset esa firmware ustiga yozish keltiradi. Cross-compiler va reproducible build artifact provenance ni yaxshilaydi. Yangilanishdan oldin recovery mode, serial console va flashni qayta tiklash yo‘li sinovdan o‘tkaziladi.
Device tree tanlovi
Bir firmware bir nechta board revisionni qo‘llasa, U-Boot EEPROM, fuse yoki strapdan modelni aniqlab mos device tree ni tanlaydi. Noto‘g‘ri DT kernelni yuklashi, ammo regulator, GPIO yoki xotira diapazonini xato boshqarishi mumkin. Overlay qo‘shimcha modulni tavsiflaydi; base tree va overlay versiyasi mos bo‘ladi. U-Boot ba’zan kernelga uzatishdan oldin memory size, MAC address yoki reserved-memory node larini fixup qiladi.
Bog‘liq tushunchalar
Bootloader, SPL, Device tree, Secure boot, Firmware, TFTP, Embedded Linux