NetBSD

24. 7. 2001
Doba čtení: 10 minut

Sdílet

NetBSD je volně šiřitelný Unix-like operační systém z rodiny BSD. Tento článek se pokusí o úvodní seznámení s tímto operačním systémem, s tím, jaké má cíle, co zhruba umí a proč ho používat třeba místo Windows či Linuxu.

Historie

Během roku 1991/1992 začali manželé Jolitz pracovat na projektu 386BSD postaveném na 4.3BSD Net/2 z produkce CSRG Univerzity v Berkeley. 386BSD 0.1 bylo k dispozici 28.7.1992. Na­neštěstí William a Lynne Jolitz poměrně nešťastně zvolili uzavřený způsob vývoje systému – pracovali na projektu prakticky sami bez spolupráce s dalšími vývojáři a komunitou. Nebylo tedy příliš jasné, kam se vlastně projekt ubírá. Po dlouhé měsíce nebyly integrovány ani patche od uživatelů, které tak zůstaly k dispozici jako samostatné balíčky – patchkity.
Skupina frustrovaných uživatelů a administrátorů tedy dala v roce 1993 dohromady projekt NetBSD, který byl na 386BSD 0.1 založen, integroval nejen všechny dostupné opravy, ale i některé věci z 4.3BSD Net/2, které v 386BSD chyběly. Během krátké doby vznikla první release NetBSD – NetBSD 0.8, která byla k dispozici 20.4.1993. Tato první verze byla pouze pro i386 systémy. 23.8.1993 bylo k dispozici NetBSD 0.9, kde se mj. re-integroval port pro hp/300 z 4.3BSD Net/2. V NetBSD 1.0 (16.10.1994) byly mj. integrovány změny z 4.4BSD Lite2 a zbavili jsme se tak kódu patentovaného USL. Vývoj dále pokračoval až k zatím poslední verzi – NetBSD 1.5.1 (11.7.2001), která obsahovala binární distribuci pro 22 počítačových architektur, přičemž pro asi desítku dalších existovala podpora ve zdrojových kódech.

NetBSD je dnes moderním open source unix-like systémem podporujícím 44 rozdílných architektur šestnácti odlišných rodin procesorů, od Compaq Alpha přes i386, PowerPC a embedded Hitachi SuperH ke stařičkým Digital Vaxům nebo Sun sun3, od desktopů a handheldů k multiprocesorovým minipočítačům. NetBSD je dnes jeden z nejbezpečnějších a nejstabilnějších operačních systémů vůbec. Mimo tradiční desktop/server řešení je stále populárnější i NetBSD pro embedded systémy, zejména díky široké podpoře různých hardwarových platforem.

NetBSD je systém tradičně používaný i pro vývoj a implementaci nových standardů. Bylo prvním operačním systémem, pro který byl dostupný IPv6 stack, a v kvalitě integrace IPv6 do systému je dnes druhý těsně za Solarisem. Podpora USB byla v NetBSD jako prvním Open Source operačním systému vůbec a i dnes je jedna z nejlepších ve světě Open Source.

Cíle NetBSD

Žádný projekt nemůže existovat bez cílů. My naštěstí máme dost práce pro to, aby nás to zaměstnalo ještě na dost dlouho ;-) Zhruba řečeno, NetBSD projekt si klade za hlavní cíl poskytovat volně dostupný a redistribuovatelný systém, který mohou profesionálové, experimentátoři, výzkumníci i kdokoli jiný požívat, jak se jim zamane.

Trochu podrobnější popis našich cílů následuje.

„Čistý“ design

NetBSD se zaměřuje na čistý design a architektonicky dobře navržená řešení. V tom nám velmi pomáhá dědictví BSD – unixoví znalci potvrdí, že BSD je z unixových systémů obecně „nejčistší“ a nejlépe navržené, v mnohém nesrovnatelně lepší než SVR4 nebo mišmaš Linuxu.
Pro počítačového neznalce je těžké vysvětlit, v čem je rozdíl v „čistotě“ jednoho systému v porovnání s jiným. Pro programátora je kvalitativní rozdíl mezi „čistým“ a „nečistým“ designem velmi důležitý. „Nečistý“ design je velmi často mnohem snadnější, levnější a rychlejší na nabušení, tak jako je často jednodušší a levnější postavit budovu bez ohledu na funkčnost, pohodlí obyvatel nebo kvalitu materiálů. Ale podobně jako tato budova nevydrží působení času, špatně navržený design programu nebo systému vede k pozdějším problémům a nutnosti přepisovat daný kód znovu.

V NetBSD věříme, že je lepší a dlouhodobě výhodnější udělat věci napoprvé (skoro) správně, než věci (třebaže užitečné) narychlo slepit bez velkého přemýšlení nad budoucími problémy nebo následky pro zbytek systému. To může někdy znamenat, že v NetBSD jsou některé věci implementovány o něco později než jinde; na druhou stranu je tak pravděpodobnější, že pak implementace bude dobře sloužit i po letech, bez potřeby přepisování subsystému v každé verzi systému. I toto je jeden z důvodů, proč je NetBSD velice dobře spravovatelný a stabilní systém, v mnohém nesrovnatelně více než jiné Open Source operační systémy.
Tento přístup je pro nás svým způsobem i nutností – nemáme k dispozici tisíce programátorů jako Linux a nemůžeme si tedy dovolit plýtvat programátorským potenciálem na reimplementaci už hotových věcí.

Právě důraz na čistotu řešení je jeden z důvodů, proč mnoho lidí považuje NetBSD za „nejvíc BSD“ operační systém z rodiny systémů založených na BSD.

Vyhnout se svazujícím licencím

I přesto, že používáme gcc a některé další GNU nástroje, celý kernel a drtivá většna uživatelských programů jsou šířeny pod licencí BSD. Jak bylo řečeno výše, chceme, aby kdokoli byl schopen používat NetBSD pro cokoli chce, pokud dodrží několik jednoduchých pravidel naší licence (viz. v angličtině např. na stánkách NetBSD, kde je i další vysvětlení našeho přístupu).
Samozřejmě vítáme, když společnosti nebo individuální jednotlivci zpětně dají své změny či vylepšení k dispozici. Veříme ale, že rozhodnutí, zda tak udělají nebo ne, má být na nich samotných. Proto BSD licence (narozdíl např. od GPL) neobsahuje žádné nepřijatelné podmínky pro používání a šíření kódu.

Široká podpora platforem

NetBSD je navrženo a spravováno tak, aby využívalo nejnovějších vlastností high-end hardware dostupného v Alpha, PC or PowerPC, a přitom stále podporovalo starší architektury. Toto vše je zahrnuto z jedněch zdrojových kódech, což je umožněno jen díky důrazu na správný design a čistý kód. Při rozhodování se klade důraz na technickou správnost a použitelnost pro více platforem; nesnažíme se (narozdíl od jiných systémů) o rychlé řešení pro i386 a následné přizpůsobení všech ostatních platforem tak, aby i386 chování emulovaly.

Hodně úsilí bylo investováno do toho, aby se kód čistě rozdělil na strojově závislý (machine-dependant, MD) a strojově nezávislý (machine-independant, MI). Jedním příkladem může být například systém NetBSD driverů, jehož API je prakticky kompletně platformově nezávislé a drivery jsou přehledně rozděleny na části závislé na architektuře, sběrnici a část sdílenou – obecný, na sběrnici nezávislý kód.

Je tak například možné, aby port na nový hw nebo sběrnici byl jen otázkou dopsání patřičných MD háčků a příslušných sběrnicových frontendů, místo kompletní reimplementace popř. složité analýzy stávajícího driveru pro jinou sběrnici a rozmotávávání interních závislostí, jak je dnes v jiných systémech běžné.
Jediný zdrojový kód tak pohání hw posazený na PCI, ISA, VESA, TurboChannel nebo Sbus. A také např. driver pro PCI SCSI adaptér funguje jak pro i386, tak třeba pro Alpha, PowerPC nebo UltraSparc systémy s PCI sběrnicí, bez nutnosti nepřehledných a neudržovatelných #ifdefů.

Toto vše jsem si osobně ověřil v poslední době při psaní podpory MCA pro NetBSD – vytváření většiny driverů bylo opravdu pouze otázkou napsání MCA frontendu, pro vlastní ovládání hw bylo možno použít dříve napsaný a již léty ověřený kód.

Kompletní, integrovaný, stabilní a rychlý

NetBSD je „kompletní“ v tom smyslu, že základní systém obsahuje všechny základní části unixového systému, včetně například schopnosti své rekompilace a standardních unixových utilit. Všechno ostatní je k dispozici pomocí systému balíčků pkgsrc, který umožňuje jednoduše instalovat software třetích stran. Toto rozdělení na „základ“ a „ostatní“ umožňuje nám, vývojářům, soustředit se na vývoj základních komponent systému a poskytovat nepřebujelý systém. Přitom uživatelé mohou využít veškerého dalšího software, který shledají užitečným.

Narozdíl např. od stovek Linuxových distribucí, NetBSD je jen jedno a je spravováno skupinou vývojářů, kteří prokázali dostatečnou zodpovědnost, angažovanost a um. NetBSD není jen kernel; Kromě kernelu obsahuje i celý základní systém, který je spravován našimi lidmi. Je tak zaručeno, že každá část systému si „rozumí“ s jinou, userland je správně adaptován na změny kernelu a je dodržována zpětná kompatibilita API (programovací aplikační rozhraní) a ABI (binární aplikační rozhraní). Což také přispívá k tomu, že se dá stále udržovat kompatibilita se staršími verzemi systému – pokud se do kernelu zahrnou příslušné volby, je možné bez problémů spouštět a používat programy např. z NetBSD 0.8, BSDi nebo 4.4BSD.
Nikoli nepodstatné je také to, že je zaručeno, co daná verze NetBSD X.Y obsahuje. Je-li nějaká vlastnost implementována nebo oprava integrována, příští verze to bude obsahovat také, ať už máte systém z jakéhokoliv zdroje. Neexistuje chaos světa Linuxu, kde se mezi distribucemi dají nalézt stovky drobných i větších rozdílů ve verzích kernelu, glibc nebo aplikovaných neoficiálních záplat.

NetBSD podporuje širokou škálu zařízení s nespočetnými možnými kombinacemi hardware. Proto je dobrý, na architektuře nezávislý design naprostou nutností pro náš úspěch. Výsledkem je pak systém, který je v produkčním prostředí nasazen na tuctech odlišných hardwarových platforem po celé zeměkouli a který se snadno přenáší na platformy další.

NetBSD běží od některých nejpomalejších platforem, jako jsou vax nebo hp/300, až k největším systémům AlphaServer 8×00. Je nutno dbát na udržování akceptovatelného výkonu na strojích s limitovanými procesory nebo pamětí, množství přebytečného kódu se musí udržovat na minimu. Tento přístup se vyplatí i pro výkonnější platformy – třebaže v obvyklém provozu se výkonnostní rozdíl nemusí projevit (CPU stejně asi není využito na 100%), při zátěži je každá (ne)provedená instrukce vidět.
I přesto, že mikrooptimizace hrají svou roli v každém systému, design je zde ještě mnohem důležitější. Může znít působivě, když se rutina přepsáním zrychlí o 80%; tato rutina může ale ve skutečnosti používat jen 5% času CPU. Když se podíváme na problém z trochu většího odstupu a ušetříme 10% změnou algoritmu, získáme víc než dvakrát tolik. V NetBSD je jistě místo pro oba způsoby; preferujeme ale správný design před úpravami neoptimální implementace.

Bezpečnost

V NetBSD se velmi dbá na celkovou bezpečnost. Výsledek je, že počet bezpečnostních problémů nalezených v NetBSD a publikovaných na veřejných fórech jako BugTraq je nejmenší ze všech operačních systémů. Při nalezení problému s bezpečností jsou uživatelé informováni o dopadech a řešení (viz archiv).

Jednotlivé služby jsou defaultně nastaveny na bezpečné volby, nové instalace mají nebezpečné služby jako telnet nebo ftp defaultně vypnuté. V systému je integrována podpora Kerberos 4 (KTH), Kerberos V (Heimdal), ssh. NetBSD také obsahuje plnou podporu pro IPsec, jak pro IPv4, tak pro IPv6, včetně podpory šifrovacího algoritmu AES – Rijndael.

Spolupráce s jinými systémy

Samozřejmě dobrý design a správná implementace samy o sobě nestačí. NetBSD není jediným používaným operačním systémem, a je tedy nutná dobrá spolupráce s ostatními systémy.

Binární emulace

Existuje množství aplikací, které jsou dostupné pouze v binární podobě a nemusí být dostupné v nativní, NetBSD verzi. NetBSD proto obsahuje emulační subsystém, aby pod ním bylo možné spouštět programy z jiných operačních systémů pro stejný procesor; pro dynamicky linkované programy je ovšem třeba mít příslušné sdílené knihovny mateřského operačního systému (viz třeba manuálová stránka compat_linux(8)). Emulační podpora existuje například pro Linux, SunOS/Solaris, OSF/1, HP-UX, Ultrix, SVR4. Pravděpodobně nejpoužívanější je emulace Linuxu, která nám umožňuje používat populární aplikace jako Opera, RealPlayer, Netscape, Oracle nebo StarOffice. Podle některých jsou linuxové aplikace pod NetBSD dokonce stabilnější než přímo pod samotným Linuxem ;-)

Zdrojová kompatibilita

Přestože NetBSD není oficiálně certifikováno, snažíme se, je-li to praktické, být kompatibilní se zavedenými standardy, jako je POSIX nebo XPG/SUS. NetBSD je extrémně blízko plné kompatibilitě s POSIX.1, velmi blízko plné POSIX.2 kompa­tibilitě. Podpora pro POSIX.4 real-time extensions je momentálně implementována.

Kromě toho se snažíme dodržovat i kompatibilitu s de-facto standardy, jako je BSD nebo Linux API.

Lokální filesystémy

Kromě nativního, 64bitového souborového systému FFS podporuje NetBSD i souborové systémy ostatních operačních systémů, jako jsou ext2fs, FAT/VFAT, iso9660, ntfs, filecorefs, adosfs.

Síťové protokoly

NetBSD podporuje velké množství síťových protokolů, zahrnujíc TCP/IP (IPv4 i IPv6), SMTP, NFS, AppleTalk, SMB.

Negativa

Samozřejmě není všechno úplně ideální a i NetBSD má své zápory. Počet uživatelů NetBSD je momentálně mnohem nižší než počet uživatelů Linuxu nebo Windows, je tedy nižší i počet vývojářů pracujících na systému jako takovém nebo na jeho podpoře v aplikacích. Některé věci tedy zatím prostě nejsou. Absolutní počet ovladačů a podporovaného hardware je menší než v Linuxu, není zatím implementována podpora DRI pro XFree86 4.0, RT extensions se teprve začínají implementovat. pkgsrc obsahuje kolem 2200 různých aplikací, což je asi méně než nabízí typická linuxová distribuce založená na rpm nebo deb. Lokalizace systému zahrnuje v tuto chvíli prakticky jen LC_CTYPE, tj. rozpoznání a kvalifikace znaků národních abeced. Podpora SMP také potřebuje další vylepšování; prozatím je dobře a plně funkční jen pro procesory alpha a vax, podpora pro i386 SMP se stabilizuje na experimentální větvi. Započala se i práce na podpoře SMP pro sparc a PowerPC, ale SMP na m68k a mips zatím není podporováno vůbec.

Na většině opravdu chybějících věcí se ale pracuje – potřebné věci jsou poměrně známy a v tuto chvíli je to jen otázka vývojářských priorit.

Závěr

NetBSD je operační systém, který se velice dobře používá. Je stabilní a výkonný a pomocí systému balíčků pkgsrc podporuje mnoho populárních aplikací (mj. např. KDE, Gnome aj.). Jedná se o čistě napsaný operační systém, který si experimentátoři, unixoví programátoři i znalci mohou vychutnat také díky výborné dokumentaci a standardizovanému, kvalitnímu a předvídatelnému prostředí.

Pokud vám nevadí Unix, s NetBSD je radost pracovat. Doporučují ho čtyři unixoví guru ze tří ;-)

bitcoin školení listopad 24

Feedback

Nezodpověděl tento článek některý váš dotaz, zajímalo by vás něco dalšího ohledně NetBSD? Dejte mi vědět a pokusím se zodpovědět v případném dalším pokračování.

Zdroje