Porovnání BSD a Linuxu

19.01.2003 19:50 | blackhole

V následujícím porovnání budu popisovat systém BSD převážně ve formě FreeBSD (verze 4.x popř. 5.x), Linux bude popisován nezávisle na distribuci s výjmečným přihlédnutím k distribuci RedHat (bez udání verze).

Technické aspekty:
Spolehlivost - Je težké posoudit, který systém je spolehlivý. Věřím, že oboje jde \"udělat\" jak ultra-robustně tak ála windows. Ovšem s přihlédnutím k filosofii vývoje systému bych si dovolil tvrdit, že BSD je spolehlivější. Vývoj
a distribuce Linuxu probíhá na komerční bází (přestože PR kecy tvrdí něco jiného). Distribuce jsou vydávány v několikaměsíčních intervalech, přičemž se dodržuje pravidlo - čím vyšší číslo verze software tím lépe. Je to daň za
komerční úspěch systému (manažeři jsou pitomci, kteří věří reklamě a hype). Systémy BSD oproti tomu mají vývoj vymyšlen jinak - systém je uvolňován cca jednou za půl roku. Tyto releasy jsou ovšem jen minoritní - opravy chyb, nové drivery apod. Dodávaný software je updatován jen v minor verzích. Jednou za čas (2-3 roky u FreeBSD a NetBSD u OpenBSD nikdy) je vydán major release, kde je přepsán kód, nove features a contributed software je updatnut i v major verzích. Toto má za následek větší stabilitu systémů BSD (řady -STABLE).

Konkrétním příkladem může být překladač GCC. Tento je v systému FreeBSD 4.x (-STABLE verze) je ve verzi 2.95.x a VŽDY tomu tak bude. V linuxové distribuci RedHat byla velmi dlouho developement (!!!) verze gcc 2.96 o jejíž chybovosti netřeba dlouze hovořit. Podotýkám, že překladač je velmi důležitou součástí unixového systému. Něco ukazuje také to, že v linuxu se standardně mountují disky asynchronně (tj. rychle a nebezpečně

Výkon - Nelze určit který ze systému je rychlejší. BSD bývají lépe konfigurovány, Linux se velmi rychle mění a je kódován přímo na HW (i386). Osobně považuju BSD za výkonější ve všech oblastech, nicméně to bude nejspíš
zpusobeno konfigurací. Dovolím si udělat reklamu BSD: největší servery internetu běží na FreeBSD (www.yahoo.com, www.apache.com, www.microsoft.com, www.hotmail.com - informace z FreeBSD handbooku). Na FreeBSD byl taky dosažen rekord v rychlosti stahování dat (1.2TB/den??). Nicméně je pravda, že linux se
pomalu zlepšuje (spoustu subsystémů konvertují na BSD-like). Také je pravda, že Linux má (měl, přichází FreeBSD 5.0) lepší podporu SMP (o NUMA nemluvě). Linux má výhodu v tom, že jej vyvíjí mnoho lidí. Ovšem pokud bude vývoj probíhat způsobem jakým dosud (napsat systém X, za rok ho přepsat na systém Y, který je o 10 procent lepší, za rok a půl ho přepsat na systém Z, který je sice o 60 procent rychlejší než původní X, ale postrádá features z Y aby se za další rok vrátili k přepsanému X a tak pořád dokola) pak nikdy nedosáhnou kvalit jiných systémů. V linuxu se upřednostňují mikrooptimalizace oproti dobrému designu a to je vždy špatné.

Bezpečnost - Zde bezesporu vede BSD. A to ze dvou důvodů. Za prvé je to dostupnost binárních exploitů. Toto není chyba linuxu jako takového (děravý bind je nebezpečný jak na linuxu tak na bsd tak na VMS) ovšem je nutné to
přiznat. Také je většina \"méně zkušených\" hackerů zvyklá na linux. Druhý důvod je, že BSD má pokročilejší systémy na zajištění bezpečnosti. Např. kernel security levels - oproti SYSV derivátům (jako linux) disponují BSD
bezpečnostními úrovněmi na úrovni kernelu, což je nepochybně výhoda oproti user-space (jakou poskytuje sysV-style init). Nebo jail - jistě znáte chroot. Jenže ten lze VELMI jednoduše breaknout (např. pomocí lkm) a jste venku. V BSD
místo chroot použijete jail, což je jakési \"vězení\" pro procesy. Přístup do jailu je jen pomocí virtuálního síťového rozhraní, navíc každý jail může mít vlastní kernel security level (v FreeBSD 5.0). Takže když vám někdo \"rootne\"
řekněme ftpd a vy jste onen ftpd spustili v jail tak dostal roota pouze v onom jailu (kde běží pouze ftpd), nemůže používat kld, nemá přístup do /dev. Jak vidno jail je velmi užitečná věc. Obdobou by snad mohl být v linuxu UML (který je ale určen k něčemu úplně jinému), to by ovšem mělo velmi silný dopad na výkon. BSD je systém starší a vyspělejší s více \"interesting features\", které (mimojiné) velmi pomáhají v oblasti bezpečnosti.

Filesystém - Mohlo by se zdát zvláštní popisovat přímo filesystém, ale mám k tomu důvod - data jsou to NEJDŮLEŽITĚJŠÍ co na počítači máte (tedy, někteří)!!! Linux podporuje velkou spoustu filesystémů a myslím, že v dnešní době má smysl uvažovat jen o několika z nich (těch journalovacích). Osobně nepovažuji podporu takového množství FS za něco úžasného. V reálu stejně člověk používá dva, maximálně tři a navíc takové množství FS znamená, že se vývojáři nemůžou žádnému věnovat pořádně. Dobré je, že fs jsou konečně trošku bezpečné (díky
journalingu) BSD používají UFS (vlastně UFS+FFS+popř. softupdates). sám o sobě není tento fs ničím zajímavý (snad kromě historie). Co jej činní zajímavým je soft-updates. Jedná se o systém přeskupování požadavků a jejich asynchronizaci. Toto vede k něčemu podobnému jako použití meta-data journalingu (ovšem rychlost narozdíl od
journalingu neklesa ale vzrůstá!) - tj. k zabezpečení meta-dat. UFS umožnuje (díki softupdates) takové věci jako background fsck (název mluví sám za sebe), fs snapshots (za běhu systému si \"vyfotíte\" fs a na něm pak např. zálohujete - zbytek systému o ničem neví a v klidu běží dál

Jak vidno heslem linuxu je kvantita, heslem BSD kvalita. (osobně jsem ale zvědav na ReseirFS v4

Drivery - zde je očividně lepší Linux. Driverů má prostě víc. Sice se říká, že BSD drivery jsou kvalitnější, já ovšem tu zkušenost nemám a účelově si vymýšlet nebudu.

Aplikace - zde není jasného vítěze přestože by se to mohlo zdát. Vše přece běží na linuxu, že? Ano, linux má větší podporu ISV, ovšem jednak platí zlaté pravidlo kvality (nekvalitně napsaný soft - nejede na bsd - nebude ani po
užitné stránce stát za moc) jednak v BSD existuje linuxová emulační vrstva, která funguje prakticky bezchybně. Jediný problém je v closed-source programech. Není to sice problém tak markantní vzhledem ke kvalitě dnešních open-source programů ale problém to je. Tohle bych nechal nerozhodně s jistým náskokem linuxu.

Podpora - zde je linux lepší. Pro linux existuje spousta placených podpor (ovšem kvalita se různí). Zase na druhou stranu je pravda, že BSD většinou spravují \"lepší\" adminové a ti tolik podpory nepotřebují. Nicméně linux je lepší.

Pokud bych to měl shrnout nějak dohromady, pak bych řekl asi toto: oba systémy jsou vhodné pro někoho jiného. Pokud jste \"lama\" nejspíš pro vás bsd nebude. Pokud jste člověk, kterého vzrušuje vrtat se v pitomostech (je dokumentace v /usr/doc nebo v /usr/share/doc??) pak také ne. Pokud klikáte v KDE a srdce vám buší vzrušením \"jak jste to tomu majkrosoftu natřeli\" pak už určitě ne.

Systémy BSD jsou sofistikovanejší. Umožňují uživateli podstatně víc věcí (jak díki features tak díki čistotě systému) za menší cenu než Linux. Ovšem je pravda, že nejspíš nikdy nebude žádný systém BSD nějak certifikován a tudíž
\"povolen\" k užití v enterprise. Také nejspíš nikdy nedostanete předkonfigurované BSD (třeba špatně, ale to je fuk) jako web-server (např.). BSD také postrádá takové ty klikací kokotiny na konfiguraci - ano, jsou brutálně na hovno, ale plebs to chce ;

Nechci nějak snižovat význam či kvalitu (no, tu možná ano) Linuxu, ale podle mne je BSD lepší. Ano, i z Linuxu jde udělat fajn systém, ale stojí mne to spoustu námahy a času. Taky je to otravné...

P.S. tento clanek jsem psal na Linuxu, pze jsem nedokazal sprovoznit ceskou klavesnici ve FreeBSD ;-)))neologism