Přechod z Linuxu na FreeBSD

27.08.2003 18:27

Linux a FreeBSD. Oba tyto operační systémy jsou unixového typu (BSD je dokonce,přestože se to nesmí říkat, OPRAVDOVÝ unix), nicméně existují mezi nimi jisté rozdíly. Rozdíly, které způsobují, že si člověk oblíbí jeden z těchto systému. V následujícím textu se budu snažit popsat některé rozdíly, které by člověka mohly zarazit, když se rozhodne přejít (např.) z Linuxu na FreeBSD. Nebudu si všímat všech, pouze těch, které mi připadají zásadnější povahy (tj. ty příznivé pro FreeBSD). Budu s držet domněnky, že linux znáte a (proto) rozhodly jste se ho nahradit FreeBSD (ovšem 90 procent je stejné i pro ostatní BSD).

Instalace
Linuxové instalce jsou povětšinou jednoduché, obvykle se stačí proklikat přes cosi o čem nevíte co znamená (protože je to buď česky nebo v manažerštině) a je to. FreeBSD po vás vyžaduje jisté znalosti (gramotnost). Instalace je sice menu-driven, ale je nutné znát jisté pojmy. Silně doporučuji, pokud to neznáte, něco o sítích a počítačích obecně. Rozhodně si přečtěte dodávanou dokumentaci! Z těch technických rozdílů bych zmínil to co se lidem hodně plete - nomenklatura v /dev. BSD totiž vychází se starších (prePC) standardů. Jednoduše by se to dalo shrnout takto. To co se v PC světě nazývá partition se v BSD nazývá slice. Každá instalace BSD obsadí právě jeden slice, který si \"rozparceluje\" na partitions. Je zavedeným pravidlem, že partition (v BSD smyslu) a je root, b je swap, c je celá partition a zbytek je dle ctěné libosti. Další věcí (toto je striktně FreeBSD záležitost) jsou přímo ony názvy. FreeBSD je promyšlený systém (narozdíl od zmateniny linuxu) a tak má i logické názvosloví. Detaily viz man MAKEDEV, ale pro ukázku: ata disky se nazývají ad (=ata device), a jsou číslovány od nuly, poté následuje písmeno s (=slice) s číslem od jeničky a názvem partition. Výsledek tedy vypadá např. takto ad0s1a - první disk (=primary master), první slice, root partition. Další věcí, která je hodna poznamenání je filosofie systému (na rozdíl od linuxu BSD něco takového
mají) - FreeBSD je v podstatě rozděleno do dvou částí - systém a doplňky. Systém je to co je shrnuto pod názvem FreeBSD, tj. základní utility, man stránky atd. Doplňky jsou programy od třetích stran, resp. jejich podpora v FreeBSD. Toto rozdělení se STRIKTNĚ dodržuje! Znamená to tedy, že po nainstalováni systému (balík base + popř. co ještě chcete, třeba ten man) máte kompletní minimální unixový systém. Je nutné si toto oddělení uvědomit, např. v tom, že \"vi\" je doopravdy vi, vim si musite doinstalovat z doplňků.

Konfigurace
Budu zmiňovat pouze konfiguraci systému, protože konfigurace doplňků je daná oním programem, který chcete konfigurovat (tj. NE FreeBSD neumí a nikdy umět nebude konfigurovat apache).

- Konfigurace běhu systému - userspace
Se provádí přes soubor /etc/rc.conf, zde si nastavíte cokoliv chcete, viz. man rc.conf. Uvědomte si, že máte jedno místo odkud se všechno konfiguruje, navíc tato konfigurace je syntakticky (a v podstatě i semanticky)konzistentní. No, někdy se tomu taky říká čistý systém.
- Konfigurace běhu systému - kernel
Zde si neodpustím poznámku. To co se v linuxu předvádí s /proc je prasárna nejhoršího druhu. On ten systém /proc byl nahovno už v době kdy ho do SYSV zaváděli, ale tam to aspoň udělali jasně a konzistentně. To jak /proc zneužívá linux je trestuhodné. (cite: As procfs is considered deprecated due to its inherited security risks.) Ostatně jen málokdo na BSD /proc používá,je to prostě zbytečné a vlastně i škodlivé. V BSD (oprava, v UNIXu) máme na konfiguraci kernelu (myslím za běhu) systém sysctl (=system control). Ty se nastavují buď ručně nebo přes /etc/systl.conf (viz. man). Ovšem zde je menší problém v tom, že některé sysctl jsou read-only a jdou nastavit pouze před spuštěním kernelu, tyto se musí nastavovat přes /boot/loader.conf (viz. man)
- Konfigurace správy systému
Pod tímto zmateným názvem mám na mysli to, když chcete překompilovat celý systém. K nastavéní různých atributů této činosti slouží /etc/make.conf. Tento soubor je, nemýlím-li se, využíván i ostatními systémovýmy makefiles.

Ostatní konfigurace se dělá normálně jako v unixu - adduser přidá uživatele etc. Ještě bych si dovolil menší poznámku - existuje program sysinstall (/stand/sysinstall), který vám toto všechno (myslím, já ho nepoužívám) dovolí nastavit i přes různá menu. Ale to je jak známo nepřehledné a zmatené, nicméně ta možnost tu je.

Feeling systému
Nevím jak vy, ale já si u linuxu (potažmo všeho GNU) připadám jako by mne ten systém měl za blbečka co nemá vlastní názory - všechno je \"nějak\" nastavené,buhví jak se to mění (no doc boy). BSD se k vám chová s úctou, stejně jako dobrý sluha vás donutí si systém nakonfigurovat sám k vašemu největšímu pohodlí, ovšem pomůže vám jak se to jen dá, nicméně rozhodování je na vás. Koneckonců vy máte mozek, comp ne. Další věcí, které si na BSD nesmírně považuju je nesmírná čistota a konzistentnost celku. Prostě systém máte v /, ostatní (doplňky) v /usr/local, nemáte žádné nekonzistentnosti mezi include jádra a zbytku systému, všechno je tam kde má být (když jsem v linuxu našel syscall open v adresáři fs myslel jsem, že dostanu infarkt). Systém se vám snaží usnadnit vše co se dá, ale nezachází do extrému. Navíc se nedá BSD upřít půvab, který neandrtálec linux absolutně postrádá. Viz. KSE, softupdates atd.Zkuste se na systému BSD, podívat do adresáře /usr/share/examples, nebo /usr/share/misc. Nemluvě o tom, že pro vás (resp. vaše programy) připravily VELMI dobré makefiles. Tohle jsou věci, které nejsou zjevné na první pohled,ale dělají pro dojem ze systému hrozně moc... mimochodem, existuje jedno místo (oficiální) odkud se distribuují takzvané security advisors (SA) - a je VELMI
dobré vědet co na vašem systému byste měli upgradnout(viz. announce@freebsd.org) BSD je propracovaný a promyšlený systém, zatímco linux je kupa sraček, které pouze náhodou smrdí vedle sebe.

Správa doplňků
V tomto je linux dost zmatený - nacházi se zde velmi dobré (debian), \"akceptovatelné\" (rpm) ale i extrémně špatné (slackware) balíčkovací systémy. BSD používá pro binární distribuci systém velmi podobný systému slackware. Ovšem dopracovaný do konce! Tj. nabízí jednoduchost slacku se schopnosti debianu (pkg_add -r balik, tohle kdo uvidí nedá na bsd dopustit). Další (extrémně ceněnou) věcí je, že BSD má systém \"ports\", jedná se o sadu specielně připravených patchů a makefiles. Tyto vám umožní pouhým
\"cd /usr/ports/soft/co/chci;make install\" stahnout, skompilovat a nainstalovat nějaký software... celkem úžasná věcička.

Správa systému jako takového
Pokud nepoužíváte Gentoo, LFS apod. tak nejspíš ani netušíte co to je (at žije open-source!!). Jde o to, že si skompilujete celý systém, ze zdrojáků. Má to několik výhod - systém je \"napasován\" na váš HW, je obvykle aktuální atd. atd. Ovšem v linuxu je to problém - protože základní systémové věci jsou v každé distribuci jiné tak si prostě nemůžete zvolit \"to nejlepší\", navíc source-based distribuce jsou docela minoritní a nemají tak moc developerů, takže je to nic moc.. BSD je integrovaný systém se vším všudy takže vám umožní několika příkazy zaktualizovat celý systém. Existuje jediné místo distribuce (resp. je jich víc, ale jsou to jen mirrory) takže je zachována konzistentnost. Navíc to má jednu opomíjenou výhodu - když se něco pokazí tak víte komu si stěžovat! Další věc je konfigurace kernelu. V linuxu máte v podstatě dvě možnosti - config a menuconfig (xconfig je kokotina, kvuli kernelu pouštět Xka...), config je utrpeni a menuconfig je zmatenina (pokud chcete klikací konfiguraci existuje operační systém Windows). V BSD se vše konfiguruje \"normálně unixově\", tj. máte textový soubor a ten přepisujete... komentovaný soubor. Takz samotná kompilace o něčem svědčí. Půjdu na to oklikou - kernel obou systému je psán v C, když se zeptáte nějakého \"Céčkaře\" jak si skomiluje program tak vám řekne \"make\"... voila! v BSD to samozřejmě takto funguje, pouze linux si zase zavádí svou cestu

Kernel
head /usr/src/sys/kern/init_main.c - je to unix (to jen tak na okraj)Né, že by to bylo pro normální použití důležité, ale něco tak škaredého jako linuxový kernel se jen tak nevidí. Zmatené, nesmyslné a špatně nadesignované. Vím, že to uživateli asi nevadí, ale stojí za úvahu jestli se nebojíte něco tak děsného používat. No, to asi doopravdy není důležité, ale důležité je, že v případě linuxu se vlastně nemáte kam obrátit pokud se vám něco pokazí. LKML je špatný vtip, ta jejich verze bugtraqu (název si nepamatuju) je absolutně opomíjená, prostě \"do it on your own\". V BSD máte správu chyb na bázi GNATS (něco jako bugtraq, man send-pr), a je tam docela i šance, že se toho někdo chytne - navíc existují oficiální mailing listy kam můžete psát. Prostě organizace BSD je o velký kus dál než to co má linux...

Závěr
No, linux jsem pošlapal myslím docela slušně a očekávám ukřižování od linux-zealots ale to co jsem napsal je pravda. Ano, pokud systém funguje tak je hloupost ho přeinstalovávat, ale na domácích mašinách apod. bych docela i o přechodu od linuxu na BSD zauvažoval... Minimálně vyzkoušení si tak kvalitnísystémy jako BSD zaslouží. Během mesíce výjde nová velká verze FreeBSD (resp. bude se z -current tagovat -stable) a je určitě škoda u toho nebýt...neologism