fakta24

Windows, macOS i Linux vychází z principů navržených před několika desítkami let. Historická rozhodnutí a nutnost zachovat kompatibilitu limitují jejich rozvoj. LiberSystem ukazuje, jak může operační systém vypadat, když vzniká od začátku podle současných požadavků na bezpečnost, stabilitu a přenositelnost.

Není to další linuxová distribuce

Označení „nový operační systém“ se dnes často používá pro projekty, které jsou ve skutečnosti pouze další linuxovou distribucí. Mohou mít jiné uživatelské prostředí, vlastní systémové nástroje nebo odlišnou sadu aplikací. Jejich technickým základem však nadále zůstává linuxové jádro.

To není případ LiberSystemu. Projekt není založený na Linuxu a neusiluje ani o vytvoření dalšího systému kompatibilního s Unixem. Jeho jádro, systémové služby, ovladače i bezpečnostní model vznikají jako součást samostatné architektury budované od základů. Jeho autoři nevzali existující linuxové jádro ani jiný unixový systém, ale začali vyvíjet vlastní otevřený operační systém napsaný v programovacím jazyce Rust.

Za systémem stojí čeští vývojáři v čele s Jiřím Kreibichem ze sdružení kolem open-source organizace LiberSoft. Ta se věnuje tvorbě svobodného softwaru a decentralizovaných technologií. Autoři projektu jsou z České republiky, ale systém je od počátku určen mezinárodní komunitě.

Staré systémy nelze snadno inovovat

Zavedené operační systémy mají náskok, disponují totiž obrovským množstvím aplikací, ovladačů a vývojářských nástrojů. Současně ale musí zachovávat kompatibilitu s programy a rozhraními, která mohou být stará desítky let.

Zásadní změna některých principů by mohla způsobit, že velká část existujícího softwaru přestane fungovat. LiberSystem takové omezení nemá a může si dovolit navrhovat jednotlivé části bez ohledu na historickou kompatibilitu.

Jedním z principů, od kterého se odklání, je známá unixová myšlenka „všechno je soubor“. Unixové systémy zpřístupňují prostřednictvím souborů nebo textových rozhraní nejen běžná data, ale také zařízení, informace o procesech a některé systémové funkce.

Tento přístup byl historicky praktický a umožnil používat stejné nástroje pro různé účely. Podle autorů LiberSystemu však současně spojuje velmi odlišné typy prostředků do jediné struktury, která může být zejména pro běžného uživatele nepřehledná.

LiberSystem proto rozlišuje jednotlivé objekty podle jejich skutečného významu. Soubor zůstává souborem, proces je samostatným systémovým objektem a síťové spojení má vlastní rozhraní. Každý typ objektu určuje, jaké operace je s ním možné provádět.

Místo neomezeného správce konkrétní oprávnění

Výrazně odlišný má být také bezpečnostní model. V tradičních operačních systémech existuje privilegovaný účet správce, který může získat prakticky neomezenou kontrolu nad počítačem. Pokud taková oprávnění získá škodlivý program, může zasáhnout kteroukoliv část systému.

LiberSystem je založený na mechanismu označovaném jako capabilities. Jeho princip lze zjednodušeně přirovnat ke svazku klíčů. Program nezíská automaticky všechna oprávnění uživatele, který jej spustil. Systém mu předá pouze konkrétní možnosti (klíče) potřebné k vykonání dané úlohy.

Například komunikační aplikace určená pro zasílání zpráv a volání, nemusí mít přístup ke všem diskům ani ostatním procesům. Může obdržet pouze oprávnění ke svému nastavení, případně vlastní složce, použití mikrofonu a k přehrávání zvuku.

Pokud by se útočníkovi podařilo takovou aplikaci ovládnout, měl by zůstat omezen jejími oprávněními. Neměl by tedy automaticky získat kontrolu nad celým systémem nebo možnost číst všechna uživatelská data.

Princip nejmenších oprávnění není v tomto případě volitelným bezpečnostním doplňkem. Patří mezi základní vlastnosti architektury LiberSystemu.

Mikrojádro odděluje ovladače od zbytku systému

LiberSystem využívá mikrojádrovou architekturu. Samotné jádro se má starat pouze o nejnutnější funkce, mezi které patří správa paměti, plánování procesů, komunikace mezi systémovými komponentami a kontrola oprávnění.

Funkce, které bývají u monolitických systémů součástí jádra, mají běžet jako oddělené služby. Týká se to například ovladačů zařízení, souborových systémů, síťových funkcí nebo zvukového subsystému.

Výhodou tohoto uspořádání má být lepší izolace chyb. Pád jednoho ovladače nemusí znamenat selhání celého operačního systému. Poškozená služba může být ukončena a automaticky restartována bez nutnosti restartovat celý počítač.

Jádro zde tedy nevystupuje jako rozsáhlá vrstva obsahující většinu funkcí systému, ale především jako malý rozhodovací prvek, který zajišťuje izolaci, komunikaci a dodržování bezpečnostních pravidel.

Rust omezuje část chyb spojených s pamětí

Pro vývoj systému byl zvolen jazyk Rust, který kombinuje nízkoúrovňové možnosti a vysoký výkon s důrazem na bezpečnou práci s pamětí.

Mnoho závažných chyb v operačních systémech souvisí s přístupem mimo vyhrazenou paměť, chybnou manipulací s ukazateli nebo použitím dat, která již byla uvolněna. Rust dokáže velkou část těchto problémů odhalit během kompilace, tedy ještě před spuštěním.

Použití Rustu samozřejmě samo o sobě nezaručuje bezchybný nebo nezranitelný systém. Může však výrazně omezit některé kategorie bezpečnostních problémů, které se pravidelně objevují v rozsáhlých systémech napsaných v jazycích C a C++, včetně Linuxu.

x86-64, ARM64 i RISC-V

LiberSystem není svázán s jediným typem procesoru. Jeho přenositelné jádro lze překládat pro architekturu x86-64 používanou v počítačích s procesory Intel a AMD, pro ARM64 rozšířenou v mobilních a dalších zařízeních i pro otevřenou architekturu RISC-V, která se objevuje v poslední době v různých IoT zařízeních a jednodeskových počítačích.

Verze pro všechny tři architektury se již spouštějí ve virtualizačním prostředí QEMU a dokážou zobrazit interaktivní příkazový řádek se základními systémovými příkazy.

Současná implementace obsahuje také základní podporu disků, grafiky, zvuku, počítačových sítí, USB a vstupních zařízení, jako jsou klávesnice a myši.

LiberSystem již není pouze teoretickým návrhem nebo souborem architektonických dokumentů. Zdrojové kódy lze sestavit, systém spustit ve virtuálním stroji, testovat a vytvořit z něj ISO nebo IMG obraz disku.

Jedna aplikace pro různé procesory

Součástí připravovaného aplikačního prostředí je využití technologií WebAssembly a WASI. WebAssembly vzniklo především jako způsob spouštění výkonného kódu ve webových prohlížečích, postupně se však používá také pro samostatné aplikace, servery a modulární systémy.

Pro LiberSystem je důležitá zejména jeho přenositelnost. Stejná aplikace by mohla fungovat na počítači s procesorem Intel nebo AMD, na zařízení s ARM64 i na platformě RISC-V bez nutnosti distribuovat samostatný program pro každou architekturu. Tuto vlastnost ocení zejména vývojáři, kteří tak nemusí přepisovat svůj software pro různé architektury.

WebAssembly zároveň poskytuje přirozeně izolované prostředí. Aplikace nemá automatický přístup k funkcím hostitelského systému a může používat pouze rozhraní, která jí operační systém zpřístupní. Tento model odpovídá architektuře založené na přesně přidělovaných oprávněních.

LiberSystem však nemá být na WebAssembly zcela závislý. Půjde o jednu z aplikačních vrstev postavených nad vlastním nativním rozhraním systému. V budoucnu tak mohou vzniknout také další možnosti spouštění programů.

Cesta vede od IoT přes servery k desktopům

LiberSystem zatím nemá ambici okamžitě nahradit Windows, macOS nebo Linux na běžných počítačích. Autoři jej označují za ranou vývojovou verzi určenou především vývojářům, technologickým nadšencům a výzkumným či specializovaným projektům.

Největší problém nových operačních systémů obvykle nepředstavuje samotné jádro, ale vytvoření použitelného ekosystému. Uživatelé potřebují ovladače, aplikace, grafické prostředí, podporu běžného hardwaru a dostatek vývojářských nástrojů.

Prvním praktickým cílem LiberSystemu jsou proto jednodušší zařízení z oblasti internetu věcí (IoT). V dalších etapách vývoje by se systém měl zaměřit na serverové využití a teprve později na stolní počítače a mobilní zařízení.

Operační systém navržený bez historické zátěže

LiberSystem se snaží odpovědět na otázku, jak by mohl vypadat operační systém vytvořený podle dnešních požadavků, který nemusí zachovávat kompatibilitu s rozhodnutími učiněnými před několika desítkami let.

Jeho odpovědí je malé mikrojádro, samostatně běžící systémové služby, bezpečnostní model založený na konkrétních oprávněních, jazyk Rust a aplikační prostředí přenositelné mezi různými procesorovými architekturami.

O budoucnosti projektu rozhodne mimo jiné to, zda se kolem něj podaří vytvořit dostatečně aktivní komunitu a postupně vybudovat potřebný softwarový ekosystém. Už současná verze však ukazuje, že vývoj operačních systémů nemusí spočívat pouze v dalších úpravách Linuxu, Windows nebo macOS.

Někdy může být zajímavější, než pokračující rekonstrukce starého systému, postavení zcela nového.

LiberSystem je vyvíjen jako bezplatný open-source software. Jeho zdrojové kódy i technická dokumentace jsou veřejně dostupné na GitHubu.

Odkazy

Web projektu: https://libersystem.com
Zdrojové kódy: https://github.com/libersoft-org/libersystem
Oficiální stránky společnosti: https://libersoft.org

Nezapomeňte sdílet