Piateho augusta som napísal článok o mojom ThinkPade , kde po jeho napísaní mi napadlo, že by som mohol urobiť dlhodobú recenziu o tomto stroji. Hárdvér: Dostatočne výkonný na to, aby rozbehal 99% mojej knižnice na Steame a veľmi rýchlo skompiloval MatuushOS. Ako prvé mi napadlo, že by som mohol otestovať jeho výkon v rôznych hrách, ktoré som vtedy hral na Steame. Testoval som ich na Fedore 42. Poznámka autora: Všetky hry, ktoré som testoval, mali skompilované shadery, čiže ak by vám náhodou vaše hry išli horšie, tak počkajte, kým tie shadery Steam skompiluje Ako prvú hru som vyskúšal Haste . Je to v podstate Sonic, ale so ženou a s perkami. Keď som to po prvý krát zapol na tomto laptope, tak som mal niekde medzi 10 a 20 FPS. Ale po nastavení FSR v Steame a v hre (plus po znížení grafických nastavení na Medium a znížení rozlíšenia na 1280x720) som mal niekde medzi 30 až 60 FPS. Po nainštalovaní a spustení Factoria som okamžite videl tú optimalizáciu, ktorú tí naši brat...
Podľa mojich štatistík, ktoré si pozerám, tak mojou druhou najväčšou skupinou su tí, ktorí sú na nejakej linuxovej distribúcií (mne sa to tam zobrazuje iba ako ,,Linux˝). Prečo som práve toto napísal? Lebo práve táto skupina ľudí nepriamo štartuje svoj systém cez niečo, čo sa volá initramfs. Poďme sa to pozrieť na to, čo to je a ako to využiť v náš prospech.
Čo to je?
V skratke je initramfs pico-operačný systém, ktorý je skomprimovaný cez program, ktorý sa volá cpio, a ktorý sa pri spustení systému rozbalí do operačnej pamäte. Je to starý, ale spoľahlivý spôsob, ako skomprimovať súbory a používa sa od nepamäti. Väčšinou sa komprimuje do formátu, ktorý sa volá Gzip.
Initramfs sa využíva na rôzne veci. Či už na resetovanie hesla, pripojenia obskúrne nastaveného média (napríklad 40 diskov, ktoré sú v MergerFS zväzku (MergerFS = súborový systém, ktorý slúži na vytvorenie jedného superdisku z viacero menších diskov) zašifrované cez LUKS + polovica diskov má iný súborový systém), alebo v našom prípade na reset/obnovu/aktualizáciu operačného systému.
Ako to funguje?
Najskôr sa z operačného systému nastavia potrebné parametre (v našom prípade sú to názov obrazu, server, odkiaľ sa ten obraz bude sťahovať bez názvu obrazu, SHA256 kontrolný súčet, cieľový disk na reset/obnovu/aktualizáciu a či chcemé preformátovať disk), ktoré sa dávajú v prípade GRUBu dávajú ako Bashu-podobná funkcia typu menuentry za cestu k linuxovému jadru, kde druhý riadok slúži na špecifikáciu cesty ku initramfs cez keyword initrd.
Keď sme ten súbor uložili, tak stačí reštartovať počítač a reset/obnova/aktualizácia sa začne. Akonáhle sa tento proces dokončí, tak sa zvyšné miesto rozdelí medzi zavádzajúcou partíciou a a partíciou, kde má používateľ priečinok.
A nakoniec program, ktorý toto spravil, reštartuje systém.
Existuje toto vôbec?
Áno, existuje. Ja som to nazval recenv, čo je skratka pre Recovery Environment. Ale na to, aby sa dalo toto ,,zneužité˝ initramfs prostredie použiť, tak potrebujeme disk s troma partíciami a internetové pripojenie cez kábel (taktiež známe ako Ethernet).
Funguje to následovne:
- Keď linuxové jadro uvidí program/skript (nezáleží, hlavne aby bol označený predtým, že ho môže spustiť každý cez príkaz chmod +x), ktorý sa volá init, tak ho spustí.
- Tento program/skript pripojí devtmpfs, procfs a sysfs (špeciálne súborové systémy, ktoré mal ešte prvý Unix) na /dev, /proc a na /sys.
- V normálnom prípade by zavolal switch_root a cezeň by spustil reálny init, ale keďže jadru je jedno, čo spúšťa (hlavne nech sa to volá init a je to spustiteľné), tak tento program/skript zavolá program, ktorý obnoví/aktualizuje/zresetuje disk podľa parametrov, ktoré jadro uloží v /proc/cmdline.
Záver
Initramfs je jedna z najlepších vecí, čo existuje na linuxovom systéme. Pokiaľ viem, tak ani BSD systémy, ani MacOS (a Windows už vôbec, ale aj tak to nie je Unixu podobný operačný systém) nemajú toto tu, čo sa tu dá urobiť.
Ak sa vám tento článok páčil, tak ho neváhajte zdieľať svojej rodine, priateľom, jednoducho každému.
Ahoj Matúš, super blogy! Veľmi dobre spracované! Určite budem čítať daľej! Ak budeš mať čas napíš mi do DM ako sa ti darí… Filip D.
OdpovedaťOdstrániť