# Spuštění GNU/Linux

<span style="vertical-align: inherit;">Dovolte mi nejprve vyjasnit firmware a partition schéma. </span>

### <span style="vertical-align: inherit;">Firmware </span>

<span style="vertical-align: inherit;">Firmware je to, co se spustí, když stisknete tlačítko napájení, jeho hlavním účelem je inicializovat váš hardware a poté načíst bootloader. Dva nejpoužívanější jsou: </span>

**<span style="vertical-align: inherit;">BIOS: </span>**<span style="vertical-align: inherit;"> To je to, co najdete ve starých počítačích (téměř všechny počítače před rokem 2010), byl velmi základní až do té míry, že postrádá standardy, takže jinými slovy nepořádek. Vše, co dělá, je inicializovat základní hardware a načíst první sektor na spouštěném disku. </span>

**<span style="vertical-align: inherit;">UEFI: </span>**<span style="vertical-align: inherit;"> Standardizováno v roce 2007, aby nahradilo BIOS, má nad hardwarem mnohem větší kontrolu, než jen jeho inicializaci (jako přetaktování, nastavení křivek ventilátoru,...). UEFI může běžet v režimu kompatibility (CMS) pro zpětnou kompatibilitu se stávajícími instalacemi MBR, kde funguje jako BIOS, který načítá pouze první sektor spouštěcího disku. </span>

<span style="vertical-align: inherit;">Podle specifikací UEFI: </span>

<div class="preview" id="bkmrk-mus%C3%AD-b%C3%BDt-schopen-%C4%8D%C3%ADs"><div class="preview">- <span style="vertical-align: inherit;">Musí být schopen číst souborový systém FAT (FAT12/16/32) </span>
- <span style="vertical-align: inherit;">Musí mít oddíl naformátovaný pomocí FAT 12/16/32 a označený ESP (EFI System Partition), který funguje jako kontejner pro bootloadery. </span>
- <span style="vertical-align: inherit;">Musí být schopen číst zaváděcí položky </span>

</div></div>### <span style="vertical-align: inherit;">Partition Schéma </span>

<span style="vertical-align: inherit;">Partition schémá je to, co organizuje celý váš disk (budu mu říkat disk, protože to znamená pevné disky, disky SSD, flash disky, optické disky...), a řídí, kolik oddílů může mít disk a dokonce jak velké jsou. Dva, které se používají hlavně: </span>

**<span style="vertical-align: inherit;">GPT: </span>**<span style="vertical-align: inherit;"> Toto je moderní schéma rozdělení, které řeší předešlé chyby staré varianty (hlavně limit oddílů a disk větší než 2 TB), většinou je spojeno s UEFI. </span>

**<span style="vertical-align: inherit;">MBR: </span>**<span style="vertical-align: inherit;"> Toto je tradiční schéma rozdělení dat do éry IBM, MBR je první sektor (512 bajtů), ve kterém je uložen primární zavaděč (zavaděč fáze 1, více později) a tabulka oddílů, která organizuje 4 primární oddíly disku. Nepleťte si to s tabulkou souborového systému, která organizuje vaše data uvnitř jednoho oddílu.</span>

<span style="vertical-align: inherit;"> </span><span style="vertical-align: inherit;">Nyní pojďme k těm fázím: </span>

**<span style="vertical-align: inherit;">V čistém UEFI/GPT </span>**<span style="vertical-align: inherit;"> může UEFI číst tabulku GPT a najít oddíl ESP (podle příznaku ESP) a poté spustit GRUB (**fáze 1**), GRUB pak načíst OS (**fáze 2**) pomocí svého konfiguračního souboru (`/boot/grub/ grub.cfg`). </span>

**<span style="vertical-align: inherit;">V systémech BIOS/MBR a BIOS/GPT </span>**<span style="vertical-align: inherit;"> BIOS načte spouštěcí kód do MBR (fáze 1), ale protože je tak malý, aby se vešel do jakéhokoli zavaděče, obsahuje pouze ukazatel na základní grub (fáze 1.5), který se nachází: </span>

<div class="preview" id="bkmrk-v-p%C5%99%C3%ADpad%C4%9B-biosu%2Fmbr%3A"><div class="preview">- <span style="vertical-align: inherit;">V případě BIOSu/MBR: volné místo bez oddílů hned po MBR </span>
- <span style="vertical-align: inherit;">V případě BIOSu/GPT speciální oddíl bez souborového systému (obvykle po 1. oddílu) </span>

</div></div><span style="vertical-align: inherit;">Protože BIOS je tak základní, že nezná žádnou představu o oddílech nebo souborových systémech, tento zavaděč **fáze 1.5** (`core.img`) obsahuje primární ovladače potřebné ke čtení tabulky souborového systému oddílu` /boot` a vyhledání konfiguračního souboru grub (`/boot/grub /grub.cfg`), který pak GRUB volitelně používá, nabízí uživateli zaváděcí nabídku se seznamem nainstalovaných OS/kernelů, poté načte jádro výchozího OS nebo to, co uživatel vybere v zaváděcí nabídce (**stage2**). </span>

## <span style="vertical-align: inherit;">Co přijde po GRUB? </span>

<span style="vertical-align: inherit;">GRUB načte jádro a </span>`initramfs`<span style="vertical-align: inherit;">do paměti ( </span>`initrd`<span style="vertical-align: inherit;">byl používán ve starších systémech, ale nahradit jej `initramfs` kvůli jeho omezením). Jádro poté připojí obsah `initramfs` (po jeho dekomprimaci) a připojí jej jako počáteční kořenový souborový systém (**který je uložen v paměti**), tento počáteční kořenový souborový systém obsahuje data potřebná pro jádro k inicializaci zařízení a spuštění programu nazvaného init, že připojení skutečný kořenový souborový systém ( </span>`/`<span style="vertical-align: inherit;">) a převezměte kontrolu nad zaváděním zbytku systému. </span>

### <span style="vertical-align: inherit;">Starší obrázek boot procesu</span>

<span style="vertical-align: inherit;">Tady ještě přikládám **starý obrázek boot procesu**, který by se mohl hodit pro pozdější úpravy. Některé části jsou pravdivé i dnes.</span>

[![Linux startup process.jpg](https://wiki.arch-linux.cz/uploads/images/gallery/2023-01/scaled-1680-/linux-startup-process.jpg)](https://wiki.arch-linux.cz/uploads/images/gallery/2023-01/linux-startup-process.jpg)