Hlavní navigace

BIOS cucá, Linux je chladný

Tomáš Znamenáček

Někteří lidé tvrdí, že na počátku bylo slovo. Na počátku ovšem nebylo slovo - na počátku bylo odkašlání a hned po něm pravděpodobně následovala věta: What the hell is the fucking BIOS good for when we've got Linux?". Tedy volně přeloženo: "Ale božíčku, proč vlastně používat ten nešťastný BIOS, vždyť přeci máme Linux."

A přesně v tom to je. K čemu je v počítači s moderním operačním systémem zastaralý BIOS, jehož jediná úloha spočívá v podpoře slepých střev vývoje z minulého tisíciletí (ano, myslím DOS :) a ve špatné podpoře hardwaru? Prakticky jediná věc, kterou musí nutně provést BIOS, je základní inicializace hardwaru – konkrétně nastavení paměti a sběrnice. O zbytek se s naprostým klidem může postarat operační systém. Z tohoto celkem příjemného faktu vychází projekt LinuxBIOS, který se snaží o (…chvilka napětí…) nahrazení BIOSu linuxovým jádrem. Že jste to nečekali?

Hlavní nevýhody BIOSu

  • Ubohoučká podpora hardware. Spousta BIOSů je schopná nastavit přerušení jednotlivých zařízení takovým způsobem, že samotný OS potom nestačí kulit očka. Některá zařízení nejsou pod standardním BIOSem zprovoznitelná vů­bec.
  • Malá spolehlivost. BIOS spoléhá na externí zařízení (disketová mechanika, CD-ROM, pevný disk) a pokud se s nimi něco stane, je prakticky bezmocný. Mohlo by se zdát, že tohle je u BIOSu naprosto nutná situace, nicméně není tomu tak.
  • Obtížná správa. Mít například cluster ze stovky klasických PC a nastavovat jejich parametry tak, že mezi nimi budu chodit s klávesnicí a monitorem… eh. Už vůbec nemluvím o tom, že bych v takovéto situaci chtěl provést upgrade BIOSu – chodit dokola s monitorem, klávesnicí a systémovou disketou DOS 6.2 s flashovací utlititou… :)
  • Malá přizpůsobivost. Řada BIOSů nenastartuje bez grafické karty (případně klávesnice) a jsou tedy poměrně nepohodlné pro práci se serverem, jenžto je musíte pracně přemlouvat ke startu bez periferií.
  • Malá přenositelnost a efektivita. To není vtip – hodně zařízení potřebuje rozumně veliký kód, který si poradí s atypickým hardware. Většina klasických BIOSů je kompletně napsaná v šestnáctibitovém assembleru, takže jejich portování (nebo i jen malá úprava na daném stroji) je noční můra.
  • Drobných nedostatků je na každém BIOSu celá kupa: Po každém restartu nuluje BIOS paměť, takže hledání chyb po zamrznutí OS je prakticky nemožné; upgrade BIOSu často znamená slušný hazard apod. A navíc, ve většině případů BIOS není Open Source :)

Nu, a do tohoto beznadějného stavu přichází na scénu za víření bubnů a svíjení se tanečnic se silikonovým poplicím mocný LinuxBIOS.

LinuxBIOS – základní architektura

I v tomto případě zapracoval hlavní strůjce dějin a vývoje – lenost. Proč přepisovat hromadu kódu, která již existuje a je poměrně vyspělá? LinuxBIOS je totiž klasické jádro Linuxu (momentálně verze ~2.4) s několika řádky patchů. Základní idea je tato: po startu počítače se vykoná několik desítek instrukcí, které nahrají GDT a přepnou procesor do chráněného režimu. Následuje několik stovek řádek v assembleru (ovšem teď už v chráněném, nikoli v reálném režimu 8086), které nastaví paměť. Zbytek LinuxBIOSu už je staré dobré C. Podrobně to vypadá takhle:

  1. Start počítače, reálný mód 8086. Něco kolem dvaceti instrukcí v assembleru natáhne GDT, nastaví registry a zapne ochranu paměti.
  2. Chráněný mód. Stále ještě assembler, nastavení SDRAM. Momentálně nejošklivější část kódu LinuxBIOSu, řádově může jít o stovky instrukcí.
  3. Šťastné přepnutí do C; inicializace základního hardware. Probíhá zapnutí cache (gunzip jádra by bez ní trval řádově minuty), zpřístupnění celé flash paměti procesoru a základní nastavení PCI sběrnice. Celkem několik set řádek kódu.
  4. Gunzip jádra uloženého v NVRAM (opět standardní kód převzatý z jádra, pouze decentní úpravy), předání parametrů jádru.
  5. Skok na jádro.

To nejlepší na LinuxBIOSu se ovšem vyjeví v okamžiku, kdy všechno dobře dopadne a rozběhne se jádro. Protože jde o klasické jádro (s případnými lehkými úpravami), má podporu všeho, o čem si můžete nechat zdát – TCP/IP, NFS, Coda, HTTP, SSH… V tom je největší síla LinuxBIOSu – zatímco obyčejný BIOS nastartuje a zavede pouze nějaký kód z masterboot sektoru (případně začne primitivně komunikovat přes síť), LinuxBIOS má možností spousty.

Nejčastější scénář bude zřejmě variací na renesanční téma: LinuxBIOS kontaktuje pomocí SSH DHCP démona, požádá ho o detaily a bude čekat na odpověď. DHCP démon ho může nasměrovat k jádru (dostupnému přes nějaký síťový souborový systém), sám mu jádro poslat přes šifrovaný kanál, nebo ho může nechat pokračovat v bootu jádra z flash paměti.

Výhod oproti klasickému schématu síťového bootu je několik:

  • Uzel není závislý na kódu uloženém v nespolehlivé diskové paměti. Pokud se něco zvrtne, ví server, co se na uzlu děje, a může na dálku zasáhnout.
  • Proces bootování je velice dobře řiditelný. DHCP démon nesděluje jen údaje o konfiguraci, ale může poskytnout i jádro, které se má (pomocí LOBOS) spustit. Toto jádro může být dostupné přes libovolný Linuxem podporovaný protokol.
  • DHCP démon může dokonce požádat uzel o spustění SSH démona na určitém portu. Následně může být na uzlu napácháno prakticky libovolné interaktivní zvěrstvo – přerozdělení disku, instalace nového kořenového systému, flash nového BIOSu (!) apod. Omezení na SSH není podmínkou, takže lze bez problémů flashnout nový BIOS z browseru :) [ale to už by byla asi prvotřídní zvrhlost]

Pokud má být použita komunikace pomocí SSH, je samozřejmě nutné, aby byly v „BIOS“ jádru přítomny kousky kódu, které jsou normálně v klientských a serverových částech SSH. Za tímto účelem vyvíjí LinuxBIOS tým malou SSH knihovnu založenou na OpenSSH.

Samotné flashování nového BIOSu z Linuxu není samozřejmě úplně bezpečné – pokud ovšem bude ve flash paměti dost místa (prodávají se desky se 4MB flash), není problém mít jeden „bells&whistles“ kernel a jeden kernel nouzový, který se nabootuje v případě chyby.

Výhod LinuxBIOSu je ovšem mnohem víc – všechno plyne z faktu, že už po startu BIOSu disponuje počítač všemi ovladači, ke kterým by se normálně dostal až po startu OS. Takže není problémem nainstalovat nově koupený počítač do firemní sítě tak, že jednoduše přinesete holé železo k zástrčce ve zdi, připojíte a pustíte ho. Proběhne tradiční rozhovor s DHCP démonem, přičemž stanice prohlásí „já jsem ta nová“ a dostane po síti celý kořenový souborový systém, do kterého rovnou nabootuje.

Vyústění

V analogii článku s trávicím traktem je poloha tohoto odstavce nezáviděníhodná, nicméně pokusím se ho neodbýt. Když pominu všechny své vize, jak je na tom LinuxBIOS teď?

Na webu projektu lze najít seznam podporovaných desek (detailní definice „podporovanosti“ viz web :), který momentálně (13. 3.) obsahuje:

  • L440GX+
  • Winfast 6300
  • Procom BST1B
  • Gigabit GA-6BXC
  • VIA VT5292A
  • Desky založené na 430TX

Je asi nesmyslné očekávat, že se LinuxBIOS rozšíří na všechny desky na trhu a že „nebude BIOSu jiného“. Osobně si myslím, že k tomu se LinuxBIOS ani nehodí – na domácím nezasíťovaném počítači je asi celkem k ničemu (lépe řečeno: jeho výhody proti klasickému BIOSu jsou, alespoň zatím, pouze rázu kosmetického). Ovšem třeba u sítě nebo clusteru o desítkách/stov­kách uzlů se už o využitelnosti mluvit dá – a pro ten případ stačí, že bude na výběr několik slušných desek LinuxBIOS podporujících.

Velice pozitivní fakt je ten, že rekord v bootu (od zapnutí počítače po připojení kořenového svazku) je jedna vteřina (!). Čas bootu klasického Linuxu asi nebude tak horký, ale i tak to zní docela impresivně (v porovnání s klasickým bootem za použití BIOSu).

Odkazy:
http://www.li­nuxbios.org – hlavní stránka projektu LinuxBIOS

Existují další projekty, které se snaží nahradit stávající BIOSy nějakou rozumnější alternativou. Osobně si myslím, že s těmi už to tak růžové není, ale udělejte si obrázek sami:

http://www.fre­iburg.linux.de/o­penbios – OpenBIOS
http://freebi­os.sourceforge­.net – FreeBIOS

Podtrženo, sečteno: LinuxBIOS vypadá velice nadějně a pokud se dostatečně prosadí (jako že pro to má nejlepší předpoklady, včetně jednání s výrobci desek), čeká Linux zase o fous lepší budoucnost: Je potřeba vybudovat cluster? Linux. Je potřeba port malého pružného stabilního systému do PDA nebo toustovače? Linux. Chcete mít workstation v grafickém módu od bootu po ukončení? Linux… Ještěže alespoň ten sex mají pořád na svědomí lidi.

--
Autor článku by chtěl poděkovat firmě Microsoft, která mu úrovní svých produktů umožnila seznámení s krásou UNIXových operačních systémů.

Našli jste v článku chybu?

8. 8. 2007 11:27

MiK (neregistrovaný)
Hezky clanek, zajimava myslenka... bylo by sqele, kdyby byli BIOSy jako ve "starych" Alfach.
A jak bylo naznaceno, verim dost tomu, ze se da poresit komunikace mezi OS a BIOSem, kdy vzhledem ke stari BIOSu uz musi byt takovato komunikace dost "standartizovana".

2. 7. 2005 15:06

Jedna zasadni nevyhoda takovehoto BIOSu je vlastne ztrata kompatibility se soucasnymi OS: neexistuje specialni rozhrani mezi LinuxBIOSem a soucasnymi zavadeci systemu. Tyto zavadece vyuzivaji volani "klasickeho" BIOSu a, pokud dobre chapu LinuxBIOS, ty v tomto projektu nenajdou. Nerikam, ze je to spatne, v pripade velkych serverovych/clusterovych/podnikovych systemu je to vcelku jedno, ale prece jen, kdyby LinuxBIOS poskytoval nejake "zakladni" rozhrani pro zavadece dalsich s…
Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

DigiZone.cz: Flix TV startuje i na Slovensku

Flix TV startuje i na Slovensku

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

DigiZone.cz: „Black Friday 2016“: závěrečné zhodnocení

„Black Friday 2016“: závěrečné zhodnocení

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?

Vitalia.cz: Když přijdete o oko, přijdete na rok o řidičák

Když přijdete o oko, přijdete na rok o řidičák

Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Vitalia.cz: Co pomáhá dítěti při zácpě?

Co pomáhá dítěti při zácpě?

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky