bútováníTakéBoot proces, Startovací sekvence, Bootstrap (systému), NabootováníPokročilý
Definice
Bootování je proces, kterým se počítač po zapnutí dostane od několika instrukcí v paměti ROM až k plně běžícímu operačnímu systému. Firmware (UEFI nebo BIOS) otestuje a inicializuje hardware, najde bootovatelné zařízení, spustí zavaděč a ten načte jádro systému do RAM a předá mu řízení.
Nezaměňujte: Bootování označuje start počítače, zatímco „bootstrapping“ ve statistice znamená metodu opakovaného vzorkování a v programování také úvodní inicializaci aplikace či frameworku.
Než se na to spolehnete: Detaily rychlého startu Windows a chování CSM se liší podle verze a výrobce desky; hodnoty ve výpisu systemd-analyze jsou ilustrativní, nikoli měřené.
Proč počítač nemůže začít rovnou operačním systémem
Procesor po zapnutí umí jen jedno: číst instrukce z pevně dané adresy. Operační systém přitom leží na disku jako soubor, o kterém procesor sám o sobě nic neví: nezná souborový systém, nezná řadič disku, nezná rozložení paměti. Bootování je řetěz stále schopnějších programů, kde každý článek zná jen tolik, aby dokázal spustit ten následující. Odtud i původní název bootstrapping, tedy obraz vytažení se za vlastní tkaničky.
Články řetězu od zapnutí po přihlašovací obrazovku
Firmware uložený v paměti na základní desce se spustí jako první. Provede základní kontrolu a inicializaci hardwaru (u starších strojů známou jako POST), nastaví řadiče, paměť a sběrnice a sestaví seznam bootovatelných zařízení.
UEFI proti staršímu BIOSu
Starší BIOS načetl prvních 512 bajtů disku, tedy MBR, a slepě jim předal řízení. UEFI místo toho čte oddíl ESP naformátovaný jako FAT a spouští z něj přímo spustitelný soubor zavaděče, typicky \EFI\BOOT\BOOTX64.EFI. Rozdíl není kosmetický: UEFI zvládne disky nad 2 TB, má vlastní ovladače, proměnné uložené v NVRAM a mechanismus Secure Boot, který ověřuje podpis spouštěného binárního souboru.
Zavaděč a jádro
Zavaděč (GRUB, systemd-boot, Windows Boot Manager) nabídne volbu systému, načte obraz jádra a u Linuxu i initramfs, dočasný kořenový souborový systém s ovladači potřebnými k připojení skutečného disku. Jádro převezme řízení, inicializuje své subsystémy, připojí kořenový oddíl a spustí první uživatelský proces s PID 1: systemd, launchd nebo init. Ten už startuje služby, síť a grafické prostředí.
Kde bootování končí a začíná bezpečnost
Čím dřív v řetězu se útočník usadí, tím hůř se odhalí: kód spuštěný před jádrem vidí všechno, co přijde po něm, a klasický antivirus běžící v systému ho nemá jak zachytit. Proto Secure Boot ověřuje podpisy jednotlivých článků a Measured Boot zapisuje otisky každé fáze do čipu TPM. Šifrovaný disk pak lze odemknout jen tehdy, když otisky sedí, což je princip odemykání BitLockeru bez zadání hesla.
Boot mimo klasický počítač
Stejný princip platí v cloudu i na telefonu, jen se mění články. Virtuální stroj v AWS nebo GCP startuje z obrazu disku přes emulovaný firmware, kontejner naopak nebootuje vůbec: sdílí jádro hostitele a rovnou spouští svůj vstupní proces, což je hlavní důvod jeho startu v řádu milisekund. Vestavěná zařízení používají vícestupňový bootloader typu U-Boot a Android má ověřený řetěz od bootROM přes bootloader k jádru.
Praktický důsledek pro provoz: dlouhý start serveru se skoro nikdy neschovává v jádře, ale v inicializaci hardwaru firmwarem a v čekání služeb na síť či disk. Než optimalizujete aplikaci, vyplatí se změřit, kolik času spolykala která fáze.
Příklady z praxe
Změření, co start Linuxu skutečně zdržuje
Server startuje 90 sekund a tým podezřívá aplikaci. Nástroj systemd-analyze ale ukáže, že 40 sekund spolykal firmware a dalších 20 sekund služba čekající na přidělení adresy z DHCP. Oprava spočívá ve vypnutí zbytečné inicializace řadičů v UEFI a v uvolnění závislosti služby na síti, nikoli v úpravě kódu aplikace.
$ systemd-analyze Startup finished in 41.2s (firmware) + 3.1s (loader) + 4.8s (kernel) + 22.6s (userspace) = 71.7s $ systemd-analyze blame | head -3 20.114s NetworkManager-wait-online.service 3.902s docker.service 1.221s postgresql.serviceVlastní jádro a Secure Boot na notebooku
Vývojář si zkompiluje vlastní linuxové jádro s doplněným ovladačem a po restartu firmware odmítne systém spustit s hláškou o neplatném podpisu. Příčinou je aktivní Secure Boot, který u nepodepsaného obrazu jádra přeruší řetěz důvěry. Řešením je jádro podepsat vlastním klíčem zaregistrovaným přes MOK, nebo Secure Boot v UEFI vypnout a přijmout nižší úroveň ochrany.
Časté omyly
- MýtusRestart počítače a vypnutí a zapnutí je totéž.
- Ve skutečnostiWindows ve výchozím nastavení používají u vypnutí takzvaný rychlý start, kdy stav jádra uloží na disk a při zapnutí ho jen načtou zpět. Skutečný úplný boot proběhne až při restartu, proto některé problémy s ovladači zmizí po restartu, ale ne po vypnutí a zapnutí.
- MýtusBootování řeší BIOS, UEFI je jen jeho nové jméno.
- Ve skutečnostiUEFI je jiná architektura, ne přejmenovaný BIOS. Má vlastní spustitelné soubory na oddílu ESP, proměnné v NVRAM, podporu GPT a Secure Boot. Kompatibilní režim CSM sice uměl napodobit chování starého BIOSu, ale novější platformy ho už neobsahují.
- MýtusKontejner v Dockeru bootuje jako malý virtuální stroj.
- Ve skutečnostiKontejner žádný boot neprovádí: nemá vlastní jádro ani firmware a sdílí jádro hostitele. Po startu se rovnou spustí proces uvedený jako vstupní bod, což vysvětluje rozdíl mezi milisekundami u kontejneru a desítkami sekund u virtuálního stroje.
Časté dotazy
- Proč se u nového disku objeví hláška, že chybí bootovatelné zařízení?
- Hláška o chybějícím bootovatelném zařízení znamená, že firmware prošel seznam disků a na žádném nenašel platný zavaděč. Nejčastější příčiny jsou tři: disk nemá EFI systémový oddíl s příslušným souborem zavaděče, systém byl nainstalován v režimu starého BIOSu a firmware nyní běží v čistém UEFI režimu (nebo naopak), případně je disk připojen k řadiči, jehož režim se v nastavení změnil, například z AHCI na RAID. Pomáhá zkontrolovat pořadí bootovacích položek a režim řadiče v UEFI.
- Jak dlouho má bootování trvat a co je normální?
- Bootování běžného notebooku s SSD trvá řádově pět až dvacet sekund od zapnutí po přihlašovací obrazovku. Serverové platformy startují výrazně déle, klidně minutu i dvě, protože firmware testuje velké množství paměti, inicializuje řadiče, síťové karty a diskové pole. Pomalý start proto sám o sobě neznamená závadu. Když se doba náhle prodlouží, vyplatí se rozdělit měření na fázi firmwaru, zavaděče, jádra a uživatelských služeb a hledat konkrétní zdržení, typicky službu čekající na síť nebo vadný disk s opakovanými pokusy o čtení.
- Je bezpečné Secure Boot vypnout?
- Vypnutí Secure Bootu odstraní ověřování podpisu zavaděče a jádra, takže systém spustí i neověřený kód, včetně bootkitu, který se do řetězu vloží před operační systém. Na běžné pracovní stanici jde o citelné snížení ochrany a řada funkcí, například odemykání BitLockeru bez zadání hesla, na měření integrity startu závisí. Na vývojářském stroji, kde je potřeba vlastní jádro nebo nepodepsaný ovladač, bývá lepší cestou podepsat modul vlastním klíčem a ten zaregistrovat, než ochranu úplně vypnout.
- Co je initramfs a proč ho Linux při bootování potřebuje?
- Initramfs je malý dočasný kořenový souborový systém, který zavaděč načte do paměti spolu s jádrem. Slouží k vyřešení problému slepice a vejce: jádro potřebuje ovladač k připojení skutečného kořenového oddílu, ale ten ovladač leží právě na tom oddílu. Initramfs proto obsahuje moduly pro řadiče disků, softwarový RAID, LVM nebo dešifrování šifrovaného svazku. Jakmile se skutečný kořen podaří připojit, jádro na něj přepne a initramfs se z paměti uvolní.
Zdroje
- Booting(otevře se v novém okně)
- The Linux Kernel documentation(otevře se v novém okně)
- Secure Boot(otevře se v novém okně)
- UEFI(otevře se v novém okně)
- BIOS boot mode for Amazon EC2 instances(otevře se v novém okně)