Uvedené články jsou duševním vlastnictvím pana Bajbaka. Text byl zpracován pro časopis PC Revue.
FreeBSD je operačný systém unixového typu. Nie je to však UNIX, ako si mnohí myslia. Aby mohol akýkoľvek operačný systém niesť pomenovanie UNIX, musí sa podrobiť náročnému testovaniu a hlavne drahému prideleniu tejto ochrannej známky spoločnosťou X/Open. Operačný systém FreeBSD síce spĺňa požiadavky kladené na UNIX, ale nakoľko je vyvíjaný neziskovou organizáciou, k zaplateniu tejto ochrannej známky pre FreeBSD pravdepodobne nedôjde.
História operačného systému FreeBSD je dlhá, zaujímavá a v počiatkoch bola dokonca aj dosť bolestná. Jeho pôvod sa odvíja od UNIXu BSD-4.4 a je nerozlučne spätý s Kalifornskou univerzitou v Berkeley – odtiaľ pochádza i názov BSD: Berkeley Software Distribution. Na začiatku vývoja voľne šíriteľnej verzie BSD podstúpila Kalifornská univerzita v Berkeley podobné „ťahanice“ s telekomunikačnou spoločnosťou AT&T, aké má v súčasnosti operačný systém GNU/Linux so spoločnosťou Santa Cruz Operations ohľadom autorských práv zdrojových kódov. Našťastie sa tieto spory urovnali hneď v počiatku v podobe operačného systému BSD-4.4-Lite2, ktorý bol východiskovým bodom pre takmer všetky súčasné BSD systémy, tak komerčné ako aj voľne šíriteľné. Výsledkom spomínaných sporov je okrem iného aj BSD licencia na zdrojové kódy, ktorá je najliberálnejšia, aká existuje. Preto sa BSD jadro stalo základom pre mnohé operačné systémy; niektoré komerčné sa k tomuto jadru otvorene priznávajú (napr. OS X), u iných (napr. MS Windows) možno množstvo integrovaného BSD kódu iba nejasne odhadovať.
Okrem FreeBSD existuje ešte niekoľko majoritných operačných systémov založených na jadre BSD. V prvom rade je to systém NetBSD, zameriavajúci sa na čo najväčšiu prenositeľnosť. Kým FreeBSD podporuje iba najrozšírenejšie počítačové platformy (IA32, IA64, PowerPC, SPARC, VAX), NetBSD je portovaný aj na zriedkavejšie sa vyskytujúci hardvér ako PocketPC či iPag. Od projektu NetBSD sa oddelil projekt OpenBSD, ktorý si kladie za svoj prvoradý cieľ bezpečnosť. Podporuje rôzny kryptografický hardvér a vyznačuje sa silným zabezpečením štandardnej inštalácie; okrem toho sa však údajne vyznačuje zložitejším používaním ako napr. FreeBSD. Operačný systém BSD/OS je už čiastočne uzavretým systémom, čo mu umožňuje získať od výrobcov hardvéru špecifikácie, ktoré nechcú zverejňovať otvoreným systémom. Preto je v BSD/OS podporované veľké množstvo zariadení, pre ktoré v otvorených systémoch ovládače neexistujú. Niektoré časti kódu BSD/OS sú voľne prístupné - za zmienku stojí fakt, že vylepšená implementácia symetrického multiprocesoringu vo FreeBSD-5 pochádza práve z BSD/OS.
FreeBSD je veľmi kvalitný voľne šíriteľný operačný systém. Je možné si ho kúpiť, stiahnuť z internetu, „prepáliť“ si ho od kolegu. Je k dostaniu za symbolickú cenu čistého kompaktného disku, teda v porovnaní s komerčnými operačnými systémami je prakticky zadarmo. Prečo potom nie je známejší a rozšírenejší, keď je kvalitný a lacný? Môže byť vôbec kvalitné niečo, čo je lacné alebo dokonca zadarmo? Krátka odpoveď znie: „Nie, nemôže!“ A dlhá odpoveď? Tu je:
Operačný systém FreeBSD je vyvíjaný dobrovoľníkmi. Kto sa mal možnosť v živote zúčastniť rôznych projektov vyžadujúcich koordináciu väčšieho množstva ľudí vie, že - napodiv - ďaleko lepšie fungujú spoločné ľudské aktivity založené na dobrovoľnosti, oproti tým, ktoré sú založené na direktívnom riadení. Preto aj vývoj systému FreeBSD funguje dobre. Dôvera, vzájomná úcta a iné morálne hodnoty BSD komunity motivujú ľudí ku kvalitnej práci. Otvorenosť zdrojových kódov poskytuje priestor kontrolovať prácu kohokoľvek kýmkoľvek. Dostupnosť systému pre všetkých zasa umožňuje systém testovať v rozličných podmienkach a pri použití na rozmanité účely. Predpoklady pre zabezpečenie kvality v prípade FreeBSD teda existujú. Ako je to z jeho cenou?
Cena je vždy priamo úmerná kvalite; neraz dokonca cena stúpa strmšie ako kvalita (príklad: značkové výrobky sú sčasti drahšie ako neznačkové preto, lebo sú kvalitnejšie, ale sčasti aj preto, lebo sú jednoducho „značkové“). FreeBSD ponecháva používateľovi obrovskú slobodu: poskytuje mu natoľko kvalitný systém, nakoľko je používateľ ochotný do neho investovať. FreeBSD nie je zadarmo. Stojí ochotu učiť sa nové veci, často hľadať odpoveďe na mnohé otázky, obetovať mu svoj čas. A to je mnohokrát ťažšie, ako zaplatiť niekoľko tisíc korún za komerčný operačný systém, v ktorom sa používateľ nemusí veľa učiť, pretože sa prakticky nemá čo, v ktorom nepotrebuje mať hlboké technické vedomosti, pretože i keby ich mal, systém mu ich nedovolí využiť. Používať FreeBSD vyžaduje postaviť si operačný systém na svoj obraz, pre svoje potreby, poznať ho do detailov, vedieť si nastavenia svojho systému zdôvodniť a obhájiť. Pre koho je teda operačný systém FreeBSD vhodný?
FreeBSD je pre ľudí, ktorí nemajú radi polovičné riešenia. FreeBSD im poskytuje možnosť vytvoriť si operačný systém pre svoje potreby a neuspokojiť sa so systémom, ktorý síce možno vyhovuje drvivej väčšine používateľov, ale nevyhovuje práve im. FreeBSD je pre ľudí, ktorí chcú vedieť, ako veci fungujú. Odhaľuje svoje vnútro, umožňuje experimentovať so všetkými svojími nastaveniami. FreeBSD je pre ľudí vyžadujúcich spoľahlivosť. Je všeobecne známe, že systémy založené na BSD jadre sú spoľahlivé nielen pri bežnej prevádzke, ale aj v extrémnych situáciách a pri veľkých záťažiach. FreeBSD umožňuje používateľovi pripraviť sa na prípadné problémy pri jeho prevádzke a poskytuje mu prepracované mechanizmy už na úrovni jadra operačného systému, ako takéto situácie riešiť. FreeBSD je pre ľudí, ktorým nie je ľahostajná bezpečnosť. Poskytuje im vysoko kvalitné programy na zabezpečenie sieťovej prevádzky, aplikačne nezávislý spôsob regulácie prenosových rýchlostí, vysoko výkonný a vysoko konfigurovateľný súborový systém, vlastné atribúty súborov, ktoré umožňujú vysokú mieru ochrany a flexibility pri riadení práce s nimi, ochranu pamäte a procesov podľa štandardov POSIX, atď. V neposlednom rade je FreeBSD pre ľudí, ktorí majú radi poriadok. FreeBSD je vynikajúco zdokumentovaný systém. Jeho štúdium dáva možnosť aj úplným laikom pochopiť detaily fungovania operačného systému v celej jeho zložitosti. Ku cti vývojárov FreeBSD prispieva fakt, že dokumentácia ich operačného systému je dôsledne udržiavaná a aktualizovaná zároveň s vývojom softvéru. Ku takmer každej časti tohto operačného systému existuje dokumentácia popisujúca k nej sa vzťahujúcu teóriu, ako aj step-by-step návody popisujúce konfiguráciu jednotlivých častí.
FreeBSD nie je pre ľudí, ktorí nie sú ochotní sa učiť, ktorí potrebujú riešenia fungujúce jednoducho a bez námahy. Pre takých používateľov existujú iné operačné systémy, zväčša komerčné. Paradoxne veľkou skupinou odporcov FreeBSD sú niektorí (niektorí, v žiadnom prípade nie všetci!) administrátori a pokročilí používatelia operačného systému GNU/Linux: tvrdia, že FreeBSD je ťažkopádny, zložitý a veľmi ťažko spravovateľný systém. Toto ich presvedčenie má zvyčajne pôvod v ich prehnanom sebavedomí a neochote študovať návody, manuály a iné zdroje dokumentácie. Ovládajúc jeden operačný systém unixovského typu si myslia, že všetky podobné systémy musia fungovať rovnako. Zabúdajú pritom, že pokiaľ GNU/Linux má svoj pôvod v systéme System-V release-4, FreeBSD pochádza z BSD UNIXu, čo boli dve diametrálne odlišné verzie UNIXu. A potom sa čudujú, že aj jednoduchý systémový program top(1) funguje vo FreeBSD akosi zvláštne... GNU/Linux a FreeBSD sa totiž vzájomne podobajú iba vo veľmi hrubých rysoch. Vychádzajú síce z prapôvodnej unixovskej filozofie, ale implementujú ju odlišnými spôsobmi. Treba si dôsledne uvedomiť, pokiaľ siaha operačný systém a kde už začína oblasť používateľských aplikácií. Existuje množstvo aplikácií (rádovo tisíce), ktoré sú totožné pre GNU/Linux aj pre FreeBSD. Tieto aplikácie sa na oboch operačných systémoch správajú rovnako, preto vzniká dojem, že ide o systémy veľmi podobné. Podobné sú používateľské aplikácie, samotné operačné systémy sú však značne rozličné. Len pár príkladov: GNU/Linux pozná tzv. úrovne behu systému (angl. runlevels) a v jeho súborových systémoch sa čím ďalej tým viac používa žurnálovanie, ale pre FreeBSD sú tieto pojmy neznáme. FreeBSD zasa disponuje mocnými konfiguračnými schopnosťami v podobe sysctl(8) a pri prístupe k svojmu súborovému systému s úspechom používa režim softupdates. Cieľom týchto riadkov však nie je presviedčať potenciálnych používateľov o tom, ktorý zo spomínaných operačných systémov je lepší. Na danú problematiku možno nájsť veľmi peknú odpoveď v dokumentácii systému FreeBSD, kde sa píše približne toto: „Ak ste spokojní s tým operačným systémom, ktorý práve používate, nie je dôvod ho meniť. Ak práve žiadny nepoužívate a rozhodujete sa, ktorý si vybrať, môže byť FreeBSD dobrá voľba.“
...je dobré vedieť niektoré fakty. Najskôr sa treba rozhodnúť, čo vlastne inštalovať, t.j. ktorú verziu, resp. ktorú vývojovú vetvu operačného systému. Aktuálne sú k dispozícii dve hlavné vetvy vývoja operačného systému FreeBSD. Je to vetva 4, ktorá sa odporúča použiť na akékoľvek produkčné nasadenie, a potom je to vetva 5, v ktorej sa mnohé časti operačného systému vyvíjajú od úplného základu; je to tzv. new technology vetva vývoja. Vývojová vetva 5 sa zatiaľ na produkčné nasadenie neodporúča. Mnoho vecí v tejto vetve je ešte rozpracovaných a neuzavretých. I keď stabilita tejto vetvy sa hodnotí ako uspokojivá, vývojári nie sú spokojní s jej rýchlosťou, v ktorej zatiaľ za vetvou 4 zaostáva. O použití vývojovej vetvy 5 má cenu uvažovať, ak sa jedná o systém, v ktorom je hardvér nepodporovaný vetvou 4 a podporovaný vetvou 5, alebo ak sa jedná o multiprocesorový systém s predpokladaným vysokým zaťažením. Podpora symetrického multiprocesoringu je práve jedna z častí systému, ktoré boli vo vývojovej vetve FreeBSD 5 úplne prepracované.
Vývojové vetvy operačného systému FreeBSD sa zvyknú označovať aj -RELEASE, -STABLE a -CURRENT. -RELEASE verzia FreeBSD je to, čo si bežne pod verziou operačného systému alebo ľubovoľného programu možno predstaviť. Jedná sa o určitým spôsobom pevnú verziu, ktorej vlastnosti sú presne definované a dobre odskúšané. -RELEASE je zároveň jediná verzia, ktorá sa odporúča na produkčné nasadenie, kde je nepredvídateľné správanie sa systému, jeho výpadky či objavenie sa závažných chýb nanajvýš nežiadúce. Toto je zároveň verzia, ktorú nájdete na iso obrazoch stiahnutých z ftp serverov alebo ktorú je možné si zakúpiť u predajcov softvéru na DVD alebo sade CD. Z určitého hľadiska opakom verzie -RELEASE je verzia -CURRENT, ktorá obsahuje vždy ten najnovší kód, ktorý sa dostane na verejnosť. To má síce svoje výhody - niektorí ľudia si potrpia, aby mali vždy všetko najnovšie - ale spájajú sa s tým aj nezanedbateľné nevýhody: -CURRENT verzia nie je ešte dobre otestovaná, mnoho častí je rozpracovaných, polofunkčných a možno aj nefunkčných a nikto nezaručuje stabilitu takéhoto systému. Vo verzii -CURRENT sa často objavujú chyby a často sa mení správanie sa vyvíjaných častí systému. Táto verzia je pre tých, ktorí majú chuť byť na špici vývoja a sú preto ochotní testovať nové verzie programov, podieľať sa na nachádzaní chýb a ich odstraňovaní a takto napomôcť vývoju toho „svojho“ operačného systému. Je teda jasné, že používatelia -CURRENT verzie sú veľmi dôležitou súčasťou BSD komunity; nie každý má však dobrodružnú povahu a nie všetky (alebo skôr máloktoré) nasadenia dobrodružstvo pripúšťajú. Strednou cestou medzi -RELEASE a -CURRENT je vývojová vetva -STABLE. Do vetvy -STABLE sa presúvajú tie časti vetvy -CURRENT, ktorých vývoj bol ukončený a ktorých kvalita bola dostatočne otestovaná. Vetva -STABLE teda vyhovuje väčšine bežných používateľov, ktorí chcú používať novšiu verziu operačného systému, ale nechcú čakať až na najbližšie uvoľnenie -RELEASE verzie, čo býva približne dva-trikrát za rok.
Na najpohodlnejšiu inštaláciu postačuje tzv. mini-CD, ktorého iso obraz je možné si stiahnuť z ftp serverov FreeBSD, napr. rovno z ftp://ftp.freebsd.org. Je praktické aj z toho dôvodu, že sa dá napáliť na malé 8-centimetrové médium. Úplne najvýhodnejšie je napáliť si ho na prepisovateľné médium, však približne o pol roka aj tak príde nová -RELEASE verzia. Mini-CD je bootovateľné a inštalačný program sa spustí okamžite po zavedení operačného systému z neho. Podrobný návod inštalácie možno nájsť v príručke FreeBSD (FreeBSD Handbook), alebo aj v knihách, ktoré o FreeBSD vyšli v poslednom čase aj u nás; odporúčam najmä knihu Michaela Lucasa „FreeBSD - sieťový operačný systém“.
Tento článok nie je step-by-step popisom inštalácie operačného systému FreeBSD. Inštalačný program sysinstall(8) je dostatočne prehľadný nato, aby používateľ inštalujúci tento operačný systém vedel, kedy odpovedať yes a kedy no. Inštalácia operačného systému FreeBSD je podrobne zdokumentovaná v príručke tohto operačného sysému (FreeBSD Handbook na adrese www.freebsd.org/handbook) a v často kladených otázkach (FreeBSD FAQ na adrese www.freebsd.org/doc/faq). Tento článok opisuje niekoré problémy, na ktoré je možné naraziť pri inštaláci, ktoré potrebujú hlbšie vysvetlenie ako to, ktoré ponúkajú jednotlivé obrazovky inštalačného programu sysinstall(8), alebo na ktoré je jednoducho potrebné upozorniť.
Inštalácia operačného systému FreeBSD sa v podstate nijako nelíši od inštalácie iných operačných systémov, najmä operačných systémov unixovského typu. I keď sú inštalátory rozličných operačných systémov „zabalené“ do rôznych používateľských rozhraní - od sparťanských textových až po pohodlné grafické „klikátka“ - vždy to je o tom istom: pripraviť priestor pre inštaláciu, vybrať, čo všetko sa má vlastne inštalovať, skopírovať vybrané programy z inštalačného média na pevný disk a urobiť základnú poinštalačnú konfiguráciu.
Pred začiatkom inštalácie operačného systému FreeBSD je vhodné nastaviť BIOS počítača na „bezpečné“ hodnoty. Je potrebné nemať pretaktovaný procesor, zbernice či operačnú pamäť. Väčšina BIOSov obsahuje voľbu Plug and Play OS, ktorú je potrebné v prípade FreeBSD nastaviť na No. Toto nastavenie umožní BIOSu vykonať niektoré nastavenia hadrvéru tak, ako sú požadované štandardami. Operačný systém FreeBSD očakáva, že hadrvér sa bude správať presne podľa týchto štandardov. V prípade, že voľba Plug and Play OS bude nastavená na Yes, niektoré sieťové či iné prídavné karty nemusia fungovať. Zároveň je vhodné si všimnúť, či sú hodiny v BIOSe nastavené na lokálny alebo medzinárodný čas.
Existuje niekoľko komplikácií, ktoré majú čo dočinenia s hardvérom a zvyknú sa vyskytnúť počas inštalácie, obzvlášť pri samotnom kopírovaní súborov z inštalačného média na pevný disk počítača. Chybové hlásenia, ktoré tieto komplikácie sprevádzajú, sú často mierne zavádzajúce a takmer pravidelne sa v elektronických konferenciách vyskytujú otázky ohľadom nich. V prvom rade je to chybové hlásenie v zmysle:
filesystem is fullV tomto prípade ide o trochu nešťastne zvolené chybové hlásenie. Zvyčajne sa nejedná o problém so zapisovaním údajov na pevný disk počítača, ale o problém s čítaním zdrojového média. Môže ísť o chybný súbor na inštalačnom CD či poškodenie jeho povrchu; podobne táto chyba nastáva aj pri prerušení spojenia s ftp serverom, z ktorého sa operačný systém inštaluje. (Existuje viacero spôsobov inštalácie FreeBSD. Okrem „klasickej“ inštalácie z CD média ho možno inštalovať zo sieťového disku pripojeného cez NFS, z lokálneho disku, z ftp či http servera a pod.) Základy inštalačného programu sysinstall vznikali v dobách, keď pevné disky dosahovali zlomky kapacity tých súčasných, a preto ak sa nepodarilo previesť kopírovanie súborov na disk prirodzene sa predpokladalo, že najpravdepodobnejší dôvod je zaplnenie disku - odtiaľ pôvod uvedeného chybového hlásenia. V prípade jeho výskytu je potrebné skontrolovať čitateľnosť CD média, zvoliť iný ftp server na inštaláciu a pod. Ak samozrejme chybové hlásenie nehovorí pravdu a miesta na disku je dostatok...
Minimálna inštalácia operačného systému zaberá 35 MB na partícii, na ktorej je umiestnený koreňoný adresár (/) a 76 MB na partícii, na ktorej je umiestnený adresár /usr. Základná inštalácia operačného systému (t.j. približne všetko to, čo sa dá nainštalovať z FreeBSD mini-CD) zaberá 35 MB na partícii / a 454 MB na partícii /usr, z čoho je 199 MB v adresári /usr/ports. Uvedené údaje platia pre verziu FreeBSD 4.9-RELEASE, t.j. verziu aktuálne (december 2003) určenú na produkčné nasadenie. Je potrebné si uvedomiť, že v oboch prípadoch sa jedná iba o inštaláciu základného operačného systému bez používateľských aplikácií. Veľkosť konečného systému sa bude líšiť od účelu jeho použitia a teda od druhu a množstva inštalovaných aplikácií. Napríklad desktopový systém môže potrebovať až do 3GB priestoru na partícii, na ktorej je umiestnený adresár /usr. (Áno, FreeBSD je možné použiť ako desktopový systém, dokonca túto úlohu plní veľmi dobre a spoľahlivo.)
Iná chyba - podstatne závažnejšia - sa pri kopírovní súborov z inštalačného média na pevný disk počítača prejavuje chybovým hlásením
ktoré je nasledované nerastúcou postupnosťou čísel. I keď podľa popisu sa dá predpokladať nejaký problém s pevným diskom, zvyčajne je problém vo vyrovnávacích pamätiach počítača. Táto chyba nie je špecifická pre operačný systém FreeBSD, ale prejavuje sa aj pri inštalácii iných operačných systémov. Príznačná je pre lacné matičné dosky s nekvalitnými čipovými sadami; na matičných doskách s čipovou sadou MVP3 je jej výskyt skôr pravidlom ako výnimkou. V prípade výskytu tejto chyby je potrebné v BIOSe vypnúť vyrovnávaciu pamäť procesora druhej úrovne (L2 cache), v prípade pretrvávajúcich problémov aj vyrovnávaciu pamäť prvej úrovne (L1 cache). Po úspešnej inštalácii je možné vyrovnávacie pamäte zapnúť.
Pri inštalácii operačného systému FreeBSD na starší počítač vybavený prídavnými kartami zapojenými na ISA zbernici je potrebné venovať pozornosť hneď prvej obrazovke, ktorá sa zobrazí ešte pred zavedením operačného systému z inštalačného média a je nazvaná Kernel Configuration Menu. V tomto menu sa konfigurujú niektoré ISA karty, určuje sa, ovládače ktorých zariadení sa majú zaviesť do jadra a pod. Pri konfigurácii niektorých kariet sú potrebné údaje o čísle prerušenia a adrese pamäťového portu. Menu upozorňuje na možné konflikty zariadení. Pri inštalácii FreeBSD na relatívne nový počítač, t.j. taký, ktorý nie je vybavený žiadnymi ISA kartami ale len kartami pripojenými na zbernicu PCI, možno s vysokou pravdepodobnosťu túto úvodnú konfiguráciu jadra ignorovať. (Pozor, ide len o konfiguráciu toho jadra, na ktorom pobeží inštalácia, nie toho jadra, ktoré sa nainštaluje a bude sa používať v normálnej prevádzke.)
Čo však pri inštalácii ignorovať nemožno, je alokácia miesta na disku pre inštalovaný systém. Pre začiatočníka môže byť terminológia používaná vo FreeBSD mätúca (tento operačný systém používa inú hierarchiu úrovní, ako je tomu v niektorých iných operačných systémoch). Oddiely disku známe z iných operačných systémov ako partície, sa vo FreeBSD nazývajú slices. Pod pojmom partitions sa skrývajú hierarchicky nižšie oddiely, ktoré však zodpovedajú práve partíciám z iných operačných systémov. V praxi to znamená, že súborový systém FreeBSD (nazývaný FastFileSystem) používa o jednu hierarchickú úroveň viac ako je u iných systémov zvykom. Pre operačný systém FreeBSD je tak potrebné vyhradiť iba jedinú časť pevného disku (z hľadiska „iných“ operačných systémov), a jej delenie na FreeBSD-partície bude viditeľné iba pre operačný systém FreeBSD. Pre začiatočníkov je tento prístup dosť komplikovaný, po „zžití“ sa s ním sa však stane celkom prirodzeným a pochopiteľným. Uvádzať podrobnosti o spôsobe značenia slices a partitions je nad rámec tohto článku; navyše by to bolo „nosením dreva do hory“, nakoľko existuje obrovské množstvo manuálov, ktoré tieto technické podrobnosti opisujú. Najlepšie je začať v príručke operačného systému FreeBSD (FreeBSD Handbook na adrese www.freebsd.org/handbook). Je však dôležité sa s odlišnosťami organizácie súborového systému FreeBSD od organizácie súborových systémov v iných operačných systémoch zoznámiť ešte PRED samotnou inštaláciou.
Používateľ inštalujúci FreeBSD je naopak uchránený od nutnosti výberu vhodného systému súborov, nakoľko tu existuje iba jediný natívny súborový systém, a to už vyššie spomínaný Fast File System. Pri delení disku je možné nastavovať voľbu dangerously dedicated a pri vytváraní partícií zasa voľbu soft-updates. V drvivej väčšine prípadov štandardné nastavenia vyhovujú a neodporúča sa ich meniť, pokiaľ používateľ nemá dostatočné vedomosti nato, aby dokonale vedel, čo môže ich zmena spôsobiť. Režim dangerously dedicated sa vôbec neodporúča používať. Režim soft-updates je štandardne zapnutý na všetkých oddieloch okrem koreňového. Hoci to má svoje dôvody uvedené v dokumentáci (a opäť mnohokrát diskutované v elektronických konferenciách), spravidla ho možno používať aj na tomto koreňovom oddiele. Technológia soft-updates je BSD-alternatíva tzv. žurnálovania, ktoré sa čím ďalej tým viac používa v moderných súborových systémoch najmä pod operačným systémom GNU/Linux. Nejde však o žurnálovanie, toto prirovnanie je len veľmi „hrubé“. Vytvorením malého nepoužitého miesta na začiatku a konci pri použití celého disku pre FreeBSD sa netreba znepokojovať; je to črta, nie chyba. [It is not a bug, it is a feature.]
O rozdelení disku na pratície, voľbe ich veľkostí a rozhodovaní, ktoré časti adresárového stromu vyčleniť na samostatné partície sa v elektronických konferenciách vedú vášnivé diskusie snáď od momentu vzniku partícií a elektronických konferencií. Pravda je taká, že o tom, ktoré časti adresárového stromu budú vyčlenené na samostatné partície, aké budú tieto partície veľké a ako budú rozdelené na fyzické pevné disky, raid polia, súborové systémy pripájané zo siete (NFS, Samba), či dokonca pamäťové disky, musí rozhodnúť správca každého systému sám. Možno poskytnúť len určité odporúčania, ktoré sa v praxi osvedčili. Každý si ich však môže - ba priam musí - prispôsobiť pre svoje účely. Každopádne je potrebné vyčleniť samostatný diskový oddiel pre koreňový adresár /. Je potrebné mu vyhradiť 120-250 MB priestoru, čo je dostatočné na uloženie niekoľkých jadier pri experimentovaní s ich konfiguráciou. To samozrejme platí iba za predpokladu, že oddiely /usr a /home sú vyčlenené ako samostatné oddiely. Oddeliť adresár /usr na samostatný oddiel disku sa odporúča vždy, jeho veľkosť však nemožno nijako všeobecne určiť; závisí od určenia počítača. Na počítači plniacom úlohu mail- a web-servera, bude postačovať niekoľko málo stovák megabajtov, na desktope môže byť pre tento oddiel potrebných aj niekoľko gigabajtov. Na veľkom webovom serveri bude pravdepodobne žiadúce oddeliť na samostatný oddiel adresár s obsahom webu, na databázovom serveri oddiel s databázovými súbormi, na mailovom či logovacom serveri zasa adresár /var. Na desktope naopak vyčleňovať adresár /var na samostatný diskový oddiel nemá veľký význam; tu je naopak potrebné vyčleniť adresár /home resp. /usr/home, pretože je predpoklad, že tu bude umiestnená drvivá väčšina dôležitých používateľských údajov. Toto rozdelenie disku vyžaduje od správcu určité vedomosti a skúsenosti. Na druhej strane je naplnením slobody vyjadrenej i názvom tohto operačného systému.
Ohľadom voľby veľkosti odkladacieho priestoru sa vedú snáď ešte horlivejšie diskusie ako o rozdelení a veľkostiach diskových oddielov. Pre operačný systém FreeBSD sa odporúča minimálna veľkosť odkladacieho priestoru, ktorá je o 1 MB väčšia ako fyzická operačná pamäť inštalovaná v počítači. Toto odporúčanie vyplýva z toho, že do odkladacieho priestoru takejto veľkosti je jadro operačného systému schopné uložiť obraz pamäťe v prípade svojho neriešiteľného zlyhania (tzv. kernel panic). Tento obraz pamäťe má následne kľúčový význam pri určovaní príčiny tejto havárie. Optimálna veľkosť odkladacieho priestoru pre FreeBSD je 2-2,5 násobok fyzicky inštalovanej opračnej pamäťe; algoritmus spravujúci používanie odkladacieho súboru vtedy pracuje najefektívnejšie. Alokovať však neúmerne veľa odkladacieho priestoru len preto, aby algoritmus odkladania stránok pamäte pracoval efektívnejšie a pritom mať dostatok pamäte na väčšinu bežných aj zriedkavejšie sa vyskytujúcich situácií je plytvanie diskovým priestorom. Pri dostatku, resp. nadbytku operačnej pamäte k odkladaniu takmer nedochádza, takže je jedno, aké efektívne toto odkladanie je. Ak k odkladaniu dochádza často, riešením i tak nie je jeho zefektívnenie, ale zväčšenie množstva operačnej pamäte...
Čo sa týka výberu typu inštalácie, nie vždy je vhodné inštalovať všetko naraz. Spravidla je lepšie nainštalovať základ - operačný systém, tento dobre nakonfigurovať a až dodatočne doinštalovať používateľské aplikácie. V praxi to znamená asi toľko, že pri inštalácii treba nainštalovať približne len to, čo je možné nainštalovať z FreeBSD mini-CD: balíky bin, crypto, dict, info, man, catman, src/sys a ports. Takáto inštalácia zaberá približne 500 MB a po dobrom nakonfiguorovaní poskytuje základ pre vybudovanie počítača s akýmkoľvek poslaním: od webového servera až po notebookový desktop. Kto nemieni v budúcnosti inštalovať softvér zo zdrojových kódov a chce používať len binárne balíky, nemusí inštalovať balík ports. Ušetrí tak približne 200 MB diskového priestoru a nejaký čas pri inštalácii; ochudobní sa však o jednu z najpríťažlivejších čŕt BSD systémov, o pohodlnú kompiláciu aplikácií zo zdrojového kódu.
Poinštalačná konfigurácia sa tiež diametrálne nelíši napríklad od priemernej poinštalačnej konfigurácie niektorej z distribúcií operačného systému GNU/Linux. Čo môže začiatočníka prekvapiť je otázka inštalačného programu, či sú hadrvérové hodiny počítača - t.j. tie v BIOSe, ktoré udržujú správny čas aj po jeho vypnutí - nastavené na lokálny alebo medzinárodný čas. V prípade, že je na počítači inštalovaný aj operačný systém MS Windows, je pravdepodobné, že hardvérové hodiny sú nastavené na miestny čas. Unixovské operačné systémy sa vedia vyrovnať s obidvomi nastaveniami - s lokálnym aj svetovým časom, i keď za štandard sa v unixovskom svete považuje nastavenie hodín na Greenwichský čas (UTC). Ak bude počítač pripojený k Internetu, možno nastaviť jeho časovú synchronizáciu s niekorým z NTP (Network Time Protocol) serverov, ktorých zoznam je obsiahnutý priamo v programe sysinstall(8).
K poinštalačnej konfigurácii už len jedna poznámka na záver: skutočne nie je dobrý nápad nechávať rootovské konto bez hesla...
Operačný systém FreeBSD sa vyvíja a mení každou ubiehajúcou chvíľou. Jeho používatelia majú k dispozícii prepracované mechanizmy na udržiavanie svojho systému v aktuálnom stave. Aktualizácia operačného systému FreeBSD je pri zachovaní určitých zásad takmer bezbolestná a komplikácie sa vyskytujú iba ojedinele a zvyčajne nastanú pri porušení spomínaných zásad.
Po inštalácii – zvyčajne z CD média alebo ftp či http servera – je systém vo verzii -release. Niektorým používateľom takáto verzia systému vyhovuje, iní sa nechcú vzdať pokroku, ktorý bol vo vývoji dosiahnutý od vydania poslednej -release verzie operačného systému. Niekedy môže byť aktualizácia nevyhnutná aj kvôli oprave chýb v jadre operačného systému alebo v systémových aplikáciách. Aktualizovať možno na verziu -stable, čo je používané väčšinou používateľov, alebo na verziu -current, čo je dobré pre dobrodruhov, ktorí chcú mať vždy najnovšie verzie programov i napriek tomu, že tieto nemusia byť dokončené, dobre otestované, stabilné či dostatočne výkonné.
Aktualizáciu operačného systému FreeBSD možno urobiť dvomi spôsobmi. V prvom rade je to prostredníctvom inštalačného programu sysinstall(8); táto metóda sa však dá použiť iba v špecifických prípadoch (upgrade z jednej -release verzie na nasledudúcu), treba mať pri nej program sysinstall(8) (a teda vo všeobecnosti aj inštalačné médium) verzie, na ktorú sa operačný systém aktualizuje, a nakoniec ide o binárny upgrade, takže nainštalované súbory nemôžu byť optimalizované pre konkrétnu typ procesora (čo je pre mnohých veľmi silný argument). Preto bude tento článok popisovať druhú z alternatív aktualizácie operačného systému FreeBSD, pri ktorej dôjde k stiahnutiu jeho zdrojových kódov a ich následnej rekompilácii. Je treba pripomenúť, že nie je možné aktualizovať iba jadro operačného sysému bez aktualizácie systémových nástrojov, ako je to v operačnom systéme GNU/Linux. Pokiaľ jadro operačného systému GNU/Linux je vyvíjané samostatne, v operačnom systéme FreeBSD sú jadro a zvyšok operačného systému spojené veľmi tesne a tvoria jeden celok. Pokusy aktualizovať len jadro operačného systému bez aktualizácie zvyšných systémových nástrojov alebo aktualizácia len systémových nástrojov bez aktualizácie jadra vedú k záhadnému a nepredvídateľnému správaniu sa systému: zvyčajne prestanú správne fungovať monitorovacie aplikácie pristupujúce k štruktúram jadra ako sú top(1) alebo ps(1) a pod. V archívoch elektronických konferencií sa nachádza množstvo príspevkov riešiacich tento problém.
Na aktualizáciu operačného systému FreeBSD je teda potrebné funkčné pripojenie na internet kvôli aktualizácii zdrojových kódov. Pre funkčné sieťové pripojenie je treba urobiť niekoľko nastavení. V prvom rade musí byť v systéme prítomná sieťová karta, ktorá sa hlási jadru operačného systému pri jeho zavedení približne takýmto spôsobom:
rl0: <RealTek 8139 10/100BaseTX> port 0xe000-0xe0ff mem 0xd9400000-0xd94000ff irq 11 at device 12.0 on pci0
rl0: Ethernet address: 00:e0:4c:00:3c:88
PCI sieťové karty fungujú zvyčajne bez problémov, s niekorými ISA sieťovými kartami býva celkom zábava, kým sa ich podarí uviesť do prevádzky. Štandardné jadro (tzv. GENERIC kernel) obsahuje podporu pre široký rozsah sieťových kariet a bez úprav by s ním mala fungovať drvivá väčšina týchto kariet. Z uvedených údajov zobrazených pri štarte systému (alebo tiež zapísaných v súbore /var/run/dmesg.boot) je potrebný identifikátor zariadenia, v uvedenom prípade rl0. Ten sa neskôr použije pri konfigurácii siete v súbore /etc/rc.conf, do ktorého je potrebné pridať riadky:
ifconfig_rl0=“inet 192.168.0.4 netmask 255.255.255.0“
defaultrouter=“192.168.0.1“
hostname=“jablko.zelovoc.sk“
Uvedené údaje treba samozrejme modifikovať podľa konkrétneho prípadu. Ak sa napr. jedná o staršiu ISA sieťovú kartu NE2000 kompatibilnú, bude sa možno jadru hlásiť ako
ed1: <PnP ISA Ethernet Adapter> at port 0x280-0x29f irq 5 on isa0
ed1: address 00:80:ad:81:f0:c0, type NE2000 (16 bit)
a vtedy treba reťazec ifconfig_rl0 nahradiť reťazcom ifconfig_ed1; rovnako je potrebné nastaviť správnu IP adresu pre bránu siete. Nastavenie mena počítača nie je nevyhnutne potrebné. Nakoniec je potrebné do súboru /etc/resolv.conf (ktorý možno bude treba vytvoriť) pridať meno domény a IP adresu DNS servera:
domain zelovoc.sk
nameserver 192.168.64.7
Po uložení uvedených nastavení a reštarte počítača by malo pripojenie na sieť fungovať. V prípade problémov treba v prvom rade čítať manuálové stránky ifconfig(8), rc.conf(5), resolve.conf(5) a v prípade problémov s ISA sieťovou kartou kernel.conf(5) (a Google, ale na to treba mať funkčnú sieť, všakže...).
Na distribúciu zdrojových kódov operačného systému FreeBSD sa používa nástroj CVSup. Ide o kombináciu nástroja na správu verzií (Concurrent Version System) a protokolu na aktualizácie programov (Software Update Protocol). Nástroj na aktualizáciu zdrojových kódov žiaľ nie je v štandardnej inštalácii FreeBSD zvyčajne prítomný, a tak je potrebné ho doinštalovať, čo je však pri fungujúcom pripojení na sieť otázka skutočne len niekoľkých sekúnd:
# pkg_add -r cvsup-without-gui
Príklady konfiguračných súborov programu cvsup(1) sa nachádzajú v adresári /usr/share/examples/cvsup/. Na aktualizáciu na verziu -stable možno použiť súbor stable-supfile, v ktorom stačí nastaviť príslušný cvsup server, z ktorého sa má aktualizácia vykonať; napríklad to môže byť cvsup.sk.FreeBSD.org. Spomínaný konfiguračný súbor obsahuje mnohé ďalšie voľby spolu s komentármi o ich význame. Zvyčajne ich však nie je potrebné meniť. Po zadaní príkazu
# cvsup stable-supfile
sa program cvsup(1) pripojí na nastavený server a do adresára /usr/src/ sa stiahnu zdrojové kódy -stable verzie operačného systému FreeBSD. Sťahuje sa samozrejme iba to, čo v tomto adresári chýba, staršie verzie súborov sa nahradia novšími a pod. Ak je tento adresár prázdny, stiahne sa prirodzene všetko, ale tento spôsob sa neodporúča. Ak sa pri inštalácii operačného systému nainštalujú aj zdrojové kódy, tak ich aktualizácia je otázkou stiahnutia iba niekoľko málo megabajtov novších súborov (celé zdrojové kódy súčasnej vetvy -stable majú viac ako 300 MB).
Po aktualizácii zdrojových kódov si v prvom rade treba pozorne prezrieť súbor /usr/src/UPDATING; v elektronických konferenciách skutočne nemajú radi, keď sa ľudia pýtajú na problémy, ktorých riešenie je opísané v tomto súbore. Zväčša sa jedná o zmeny štandardných nastavení niektorých parametrov, systémových služieb a ďalších dôležitých zmien, ktoré spôsobujú odlišné správanie sa operačného sytému v porovnaní s jeho predchádzajúcimi verziami. Potom možno pristúpiť k samotnej kompilácii nového systému. Predtým je vhodné nastaviť v súbore /etc/make.conf (ak neexistuje, treba ho vytvoriť) voľby ovplyvňujúce kompiláciu napríklad takto:
CPUTYPE=k7Voľba CPUTYPE je dôležitá pre vygenerovanie binárnych súborov využívajúcich špecifické črty daného procesora, voľba CFLAGS definuje parametre prekladača, ktoré sa použijú pri kompilácii všetkých programov okrem jadra operačného systému (v tomto prípade je zapnutý prvý stupeň optimalizácie a medziprocesová komunikácia prostredníctvom pamäte namiesto použitia súborov). Voľba COPTFLAGS je identická s voľbou CFLAGS, ale použije sa práve pri kompilácii jadra. Informácie o mnohých ďalších voľbách povolených v súbore make.conf poskytne man 5 make.conf a ich prednastavené hodnoty sa nachádzajú v súbore /etc/defaults/make.conf. Čo sa týka volieb prekladača, žiadne prekvapenie sa nekoná: používa sa GNU C-compiler gcc(1). Nový systém sa prekompiluje:
# cd /usr/src
# make buildworld && make buildkernel
Pri makeb buildworld sa najskôr zostaví prekladač a súvisiace knižnice. Potom sa už s pomocou týchto nových nástrojov zostaví celý zvyšok systému. Výsledok sa umiestni do adresára /usr/obj/. (Ak máte superrýchly počítač, tak môžete ísť počas kompilácie na kávu. Ak je váš počítač veľmi rýchly, stihnete obed v závodnej či školskej jedálni. Ak je váš počítač priemerný, môžete navštíviť blízku pizzeriu a po dobrej večeri odprevadiť priateľa či priateľku domov. No a ak váš počítač už má svoje najlepšie roky dávno za sebou, je najlepšie nechať kompiláciu bežať cez noc; kompilácia systému a jadra na 150 MHz Pentiu trvá cca 7 hodín.) Počas kompilácie je možné systém normálne používať.
Po skončení kompilácie je nutné presvedčiť sa, či skončila bez chýb. Ak áno, možno pristúpiť k inštalácii aktualizovaného systému. Je predtým vhodné prejsť do jednopoužívateľského režimu:
# shutdown now
...
# cd /usr/src/
# make installkernel && make installworld
...
# shutdown -r now
Po reštarte systému nastáva najunavujúcejšia časť aktualizácie operačného systému FreeBSD. Jedná sa o inštaláciu nových konfiguračných súborov v adresári /etc/ a o vytvorenie nových uzlov zariadení v adresári /dev/. Problém je ten, že niektoré súbory v adresári /etc/ sú už prispôsobené pre konkrétny systém, niektoré sa zmenili prechodom na novú verziu operačného systému a v adresári /dev/ môže byť potrebné napríklad vytvoriť nové uzly zariadení pre hardvér, ktorý je podporovaný iba od práve inštalovanej verzie operačného systému. A keďže vo FreeBSD je zautomatizované všetko, čo može byť zautomatizované bezpečne, na aktualizáciu konfiguračných súborov a uzlov zariadení možno použiť príkaz
# mergemaster
Program najskôr zostaví dočasné verzie adresárov /etc/ a /dev/ pod /var/tmp/, a potom porovná tieto konfiguračné súbory s ich ekvivalentami v skutočnom /etc/. Ak sa súbory líšia, mergemaster(8) zobrazí ich rozdiely a používateľ môže rozhodnúť, či ponechať pôvodný súbor, použiť súbor z novej verzie operačného systému, alebo ich zlúčiť spolu. Naprvýkrát to môže byť trochu komplikované, ale môže pomôcť nasledujúca heuristika: Ak ide o súbor, ktorý bol editovaný a prispôsobovaný systému pred aktualizáciou operačného systému (typicky napr. /etc/rc.conf), ponechajte inštalovanú verziu. Ak ide o súbor, ktorý od inštalácie operačného systému nebol menený (takých bude väčšina, typicky napr. /etc/defaults/make.conf), inštalujte novú verziu. V prípade akýchkoľvek pochybností je potrebné dôkladne si prezrieť novoinštalované verzie konfiguračných súborov.
Súbory v adresári /dev/ tvoria rozhranie medzi hardvérom a softvérom počítača. Uzly zariadenia sa vytvárajú skriptom /dev/MAKEDEV, ktorý sa môže medzi verziami operačného systému FreeBSD nepatrne meniť. Ak mergemaster(8) zistí rozdiel medzi nainštalovanou a novou verziou skriptu MAKEDEV, ponúkne inštaláciu nového a vytvorenie všetkých uzlov zariadení nanovo. Ponuku treba prijať a nechať mergemaster(8) vytvoriť nové uzly zariadení. Potom už stačí iba reštartovať operačný systém a tešiť sa z jeho novej verzie. Adresár /usr/obj/ možno po aktualizácii systému zmazať, ušetrí sa tým približne 185 MB miesta na disku (údaj platí pre verziu FreeBSD 4.9-stable).
Základom dobre fungujúceho operačného systému je jeho jadro (angl. kernel). Niekedy sa za operačný systém v pravom slova zmysle považuje iba samotné jadro. Jadro je rozhraním medzi hardvérom počítača a aplikáciami. Prideľuje procesom pamäť a procesorový čas, zabezpečuje im prístup k pevným diskom, sieťovej karte či periférnym zariadeniam. Od kvality jadra operačného systému závisí stabilita počítača, efektívnosť využitia jeho prostriedkov či zaistenie bezpečnosti systému. I keď všetko toto závisí od kvality jadra, treba si uvedomiť, že jadro neposunie hardvérové obmedzenia systému. V elektronických konferenciách sa možno stretnúť aj s takými absurdnými tvrdeniami, že “operačný systém A využije lepšie hardvér ako operačný systém B, a preto je potrebné v prípade používania A viac dbať o dobré chladenie procesora“. To by znamenalo, že pri použití operačného systému A bude ten istý procesor schopný vykonávať viac operácií, ako by bol schopný vykonať za ten istý čas pri použití operačného systému B. Ľudia, ktorí podobné informácie šíria, ich zvyčajne nevedia podoprieť konkrétnymi faktami ani ich nijako inak zdôvodniť - spravidla ich tiež iba niekde čítali či počuli a bez zamyslenia sa nad nimi ich reprodukujú ďalej; v lepšom prípade iba nesprávne interpretujú tvrdenie (tentoraz už pravdepodobne opodstatnené), že “operačný systém A dokáže dostupné hardvérové zdroje výpočtového systému spravovať efektívnejšie ako operačný systém B“. Títo ľudia sa potom niekedy dostávajú do akejsi „binárnej schizofrénie“ tvrdiac, ten „ich“ operačný systém na jednej strane viac zaťažuje hardvér, ale na druhej strane ho chváliac, že dokáže rýchlo bežať aj na starších počítačoch či vnorených systémoch so skromným hardvérom. Kto sa už s podobnými argumentmi stretol, určite vie, o ktorých operačných systémoch sa takéto tvrdenia šíria. Kto sa s nimi zatiaľ nestretol, nech verí, že sa s času na čas vyskytujú a s obľubou sa používajú najmä pri osobných rozhovoroch obhajujúcich ten-ktorý operačný systém. Žiadny operačný systém, nech by bol akokoľvek kvalitný, však neurobí z procesora AMD k-5 procesor Pentium 4, nezdvojnásobí množstvo operačnej pamäte, ani neurobí diskové pole RAID-0 z dvoch ATA diskov pripojených na ten istý IDE radič. Teda vlastne to posledne menované operačný systém FreeBSD hravo dokáže, ale že to nie je práve najšťastnejšie riešenie, nech si každý nedôverčivý používateľ vyskúša sám (viď vinum(8)).
Jadrá komerčných operačných systémov sú pre ich používateľov neprístupné; sú tak transparentnou súčasťou zvyčajne monolitického systému, že používatelia o ich existencii nevedia a ani nepotrebujú vedieť. FreeBSD svoje jadro pred používateľmi nezatajuje, naopak, dáva im ho plne k dispozícii, ako je u kódovo otvorených systémov dobrým zvykom. Používatelia majú možnosť určovať, ktoré komponenty bude jadro toho ich operačného systému FreeBSD obsahovať, akým spôsobom bude prideľovať procesom procesorový čas, alebo ktorý hardvér bude podporovať. Podobne možno ladiť množstvo pamäte používanej na sieťové operácie a prispôsobiť bežné nastavenie jadra tak stolovému počítaču, ako aj silne zaťaženému webovému serveru. Konfigurácia jadra umožňuje každému používateľovi prispôsobiť správanie sa operačného systému jeho požiadavkám.
FreeBSD poskytuje hneď dve možnosti na konfiguráciu svojho jadra. Prvá možnosť je jeho statická konfigurácia, tak ako je známa napríklad z operačného systému GNU/Linux. Buduje sa pri nej akási kostra jadra operačného systému, jadro sa skompiluje a nainštaluje. Druhou - ale vôbec nie druhoradou - možnosťou konfigurácie jadra systému je dynamická konfigurácia, ktorá umožňuje meniť niektoré parametre jadra systému buď pri jeho zavádzaní (t.j. pri štarte operačného systému), alebo dokonca počas jeho behu.
Zdrojové kódy jadra sú nainštalované v adresári /usr/src/sys/, samotná konfigurácia sa vykonáva editáciou konfiguračného súboru umiestneného v podadresári arch/conf/, kde arch je názov adresára zhodný s architektúrou počítača, pre ktorý sa konfigurácia vykonáva. Pre počítače rady PC sa teda príslušné konfiguračné súbory nachádzajú v adresári /usr/src/sys/i386/conf/. Tento adresár obsahuje dva súbory, GENERIC a LINT. Súbor GENERIC je konfiguračný súbor, pri použití ktorého je možné získať jadro operačného systému totožné s tým, ktoré používa operačný systém FreeBSD po inštalácii. Toto jadro je veľmi všeobecné, zahŕňa podporu množstva hardvérových zariadení potrebných pre chod systému na čo najväčšej množine počítačov. Naopak, neobsahuje podporu pre zariadenia, ktoré nie sú pre chod systému nevyhnutne potrebné, ako sú napríklad zvukové karty. Súbor LINT je okomentovaným zoznamom všetkých volieb, ktoré sa v konfiguračnom súbore jadra môžu vyskytovať. Tento súbor sa nepoužíva na kompiláciu, ale iba ako akýsi manuál; niektoré voľby v ňom sa totiž vzájomne vylučujú a nemá zmysel ich používať súčasne.
V prípade, že adresár /usr/src/sys/ neexistuje, znamená to, že zdrojové kódy jadra nie sú nainštalované. Vtedy ich treba doinštalovať, najjednoduchšie pomocou inštalačného programu sysinstall(8) s použitím nasledujúcich volieb:
Configure — Do post-install configuration of FreeBSD
|
+ —> Distributions — Install aditional distribution sets
|
+ —> [X] src — Sources for everything
|
+ —> [X] sys — /usr/src/sys (FreeBSD kernel)
spolu s voľbou vhodného inštalačného média (CD, ftp, ...). Všetky ostatné nástroje potrebné pre zostavenie a inštaláciu jadra operačného systému sú k dispozícii v základnej inštalácii operačného systému FreeBSD.
Pred inštaláciou nového jadra operačného systému je veľmi vhodné zálohovať fungujúce jadro. nie vždy sa totiž môže konfigurácia nového jadra podariť na prvýkrát. Pri inštalácii nového jadra sa toto inštaluje do súboru /kernel a staré jadro sa zálohuje do súboru /kernel.old. Nie je však vhodné sa na toto spoliehať, pretože po dvoch neúspešných pokusoch nakonfigurovať a nainštalovať si vlastné jadro za sebou bude aj v súbore /kernel.old zálohované prvé nefunkčné jadro. Zvyčajne je postačujúce mať zálohované jedno spoľahlivo fungujúce jadro. FreeBSD pri svojej inštalácii inštaluje jadro do súboru /kernel a zároveň urobí jeho záložnú kópiu do súboru /kernel.GENERIC. Odporúča sa zálohovať si aj posledné spoľahlivo fungujúce a dlhodobo odskúšané jadro, napríklad takto:
# cd /
# cp kernel kernel.OK
# mkdir modules.OK
# cp modules/* modules.OK/
Potom v prípade, že nové jadro nebude z akýchkoľvek dôvodov fungovať, je možné pri zavádzaní operačného systému prerušiť bootovanie počítača a v príkazovom riadku, ktorý sa ponúkne, zadať (reťazec „ok“ na začiatku každého riadku je výzva príkazového riadku - prompt):
ok unload
ok load kernel.OK
ok boot
čím dôjde k zavedeniu zálohovaného jadra.
Najdôležitejšou a najzdĺhavejšou časťou budovania vlastného jadra je jeho samotná konfigurácia. Deje sa editáciou konfiguračného súboru. Nie je odporúčané editovať priamo súbor GENERIC, ale vytvoriť si jeho kópiu mimo stromu /usr/src/ a do patričného adresára ho iba nalinkovať:
cp /usr/src/sys/i386/conf/GENERIC /root/NOVEJADRO
ln -s /root/NOVEJADRO /usr/src/sys/i386/conf/
To pre prípad, že neskôr je možné zdrojové kódy vymazať, ale konfiguračný súbor je vhodné si zachovať. V tomto momente je potrebné otvoriť novovytvorený konfiguračný súbor (ktorý je zatiaľ vernou kópiou súboru GENERIC), a upraviť ho „na svoj obraz“. Odporúčaný postup je taký, že sa postupne budú odoberať tie voľby, ktoré nie sú pre daný konkrétny počítač potrebné. Dobrou radou pre začiatočníkov môže byť, že ak niektorej voľbe v konfiguračnom súbore dobre nerozumejú a v pôvodnom súbore GENERIC bola táto voľba použitá, je lepšie ju tam nechať. Vhodný postup je postupne odoberať voľby a zariadenia z konfiguračného súboru jadra, jadro zostaviť, inštalovať a testovať až po dosiahnutie minimálneho funkčného jadra, až potom začať do jadra pridávať nové voľby a nové zariadenia. Prípadným neúspechom sa netreba dať odradiť, málokomu sa podarí na prvýkrát zostaviť jadro fungujúce podľa predstáv; po troch alebo štyroch pokusoch však aj začiatočník začne celkom určite konvergovať k správnym nastaveniam.
Na prvý pohľad sa môže zdať konfiguračný súbor jadra operačného systému FreeBSD zložitý, ale v skutočnosti to tak nie je. Väčšinu jeho obsahu totiž tvoria komentáre, ktoré majú iba informačný obsah a skúsenejší používatelia ich z konfiguračných súborov svojich jadier vymažú alebo nahradia vlastnými, riadky pre ovládače najrozličnejších typov sieťových kariet, ktoré je spravidla možné po odstránení nepotrebných ovládačov zredukovať na dva riadky a nakoniec sú to ovládače SCSI a RAID zariadení, ktoré sa v bežných osobných počítačoch tiež nevyskytujú, takže ich tiež možno odstrániť. Výsledný konfiguračný súbor po používateľských úpravách zvykne mať okolo 50 konfiguračných záznamov, čo na taký zložitý systém ako je jadro operačného systému skutočne nie je veľa. Najdôležitejšie voľby sa nachádzajú hneď na začiatku konfiguračného súboru:
machine i386- voľba architektúry, pre ktorú bude jadro použité. Táto voľba je v konfiguračnom súbore nutná. Pre počítače triedy PC nie je iná možnosť, len použiť hodnotu i386.
cpu I686_CPU- voľba typu procesora, na ktorom bude jadro použité. Týchto volieb môže byť v konfiguračnom súbore viacero, ale spravidla nie je dôvod udávať tu iný typ procesora okrem toho, na ktorom bude jadro použité. Kto by mal pochybnosti o type svojho procesora, jednoznačnú odpoveď dostane nasledujúcim spôsobom:
% cat /var/run/dmesg.boot | grep CPUMožné hodnoty pre voľbu cpu na architektúre i386 sú I386_CPU, I486_CPU, I586_CPU a I686_CPU.
maxusers 0- Názov tejto položky je trochu zavádzajúci. Neudáva totiž maximálny počet používateľov počítača, ale je len ich odhadom na účely dimenzovania určitých vnútorných údajových štruktúr v jadre, napr. rozmeru tabuľky procesov a pod. Nastavenie hodnoty na nulu umožní jadru zvoliť nastavenie daných rozmerov podľa veľkosti inštalovanej operačnej pamäte.
device npx0 at nexus? port IO_NPX irq 13- ovládač jednotky pohyblivej rádovej čiarky procesora. Bez neho sa nepodarí jadro skompilovať. V prípade, že procesor, na ktorom má bežať jadro, nemá jednotku FPU, je potrené v konfiguračnom súbore jadra jednu z nasledujúcich volieb na jej emuláciu:
options MATH_EMULATEPopis ďalších volieb je možné nájsť priamo v komentároch konfiguračného súboru. Zoznam všetkých použiteľných volieb sa nachádza okomentovaný v súbore LINT. Tento súbor je síce rozsiahly (má viac ako 2800 riadkov), ale je dobré si ho aspoň informačne prezrieť pre získanie prehľadu o voľbách, ktoré sa pri konfigurácii jadra operačného systému FreeBSD dajú použiť. Môže to byť užitočné najmä pre majiteľov procesorov Cyrix a Celeron. Ku konfigurácii jadra už len zoznam tých volieb, ktoré z konfiguračného súboru pravdepodobne nebudete chcieť odstraňovať, aspoň nie pri prvých pokusoch s jeho ladením:
options FFSA naopak niektoré voľby, ktoré budete pravdepodobne odstraňovať ako prvé:
options UFS_DIRHASH
options MFS
options MD_ROOT
options NFS
options NFS_ROOT
options MSDOSFS
options CD9660
options CD9660_ROOT
options SCSI_DELAY=15000
options KTRACE
device eisa
Po uložení zmien v súbore /usr/src/sys/i386/conf/NOVEJADRO možno ešte upraviť súbor /etc/make.conf a nastaviť niektoré voľby týkajúce sa prekladu jadra:
CPUTYPE=k7
COPTFLAGS= -O -pipe
Preklad jadra sa začne v adresári /usr/src/sys/i386/conf/ a pokračuje podľa naznačených inštrukcií:
# cd /usr/src/sys/i386/conf/
# ls -l
total 114
-rw-r--r-- 1 root wheel 9679 Jan 14 10:53 GENERIC
lrwxr-xr-x 1 root wheel 13 Jan 13 13:14 NOVEJADRO -> /root/NOVEJADRO
-rw-r--r-- 1 root wheel 105614 Jan 20 11:12 LINT
# config -r NOVEJADRO
Removing old directory ../../compile/NOVEJADRO: Done.
Don't forget to do a ``make depend''
Kernel build directory is ../../compile/NOVEJADRO
# cd ../../compile/NOVEJADRO
# make depend && make all install
Kompilácia aj inštalácia sú sprevádzané množstvom informačných výpisov. Po úspešnom skončení tohto procesu je nainštalované jadro aj jeho moduly a na jeho zavedenie stačí reštartovať počítač. Po reštarte je potrebné skontrolovať výpisy príkazu dmesg(8), funkčnosť hardvérových zariadení a správnu činnosť bežiacich služieb. V prípade problémov s konfiguráciou jadra operačného systému treba prvú pomoc hľadať v často kladených otázkach na adrese www.freebsd.org/doc/en_US.ISO8859-1/books/faq/kernelconfig.html, v príslušnej časti príručky operačného systému FreeBSD na adrese www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html a v súbore /usr/src/sys/i386/conf/LINT. Druhú pomoc treba hľadať pomocou vyhľadávača Google špecializujúceho sa na BSD systémy na adrese www.google.com/bsd (bez lomky na konci adresy!). A nakoniec v prípade zlyhania oboch predchádzajúcich zdrojov pomoci (čo je extrémne málo pravdepodobné) sa treba obrátiť na niektorú z elektronických konferencií venujúcich sa operačnému systému FreeBSD, ktorú si treba vybrať podľa jeho používanej verzie.
V predchádzajúcich článkoch o operačnom systéme FreeBSD boli uvádzané verzie tohto operačného systému, spôsob jeho inštalácie a následnej aktualizácie a statická konfigurácia jeho jadra, pričom boli často použité odkazy na elektronické konferencie. Spomínané štyri články si vyžadujú určité spresnenia a doplnenia, aby sa stali užitočnejšími a aby boli jasné súvislosti napríklad medzi verziami operačného systému FreeBSD a aktualizáciou jeho zdrojových kódov alebo medzi použitím už nakonfigurovaného jadra pri aktualizácii systému.
V článkoch o operačnom systéme FreeBSD sa možno často dočítať o verziách RELEASE, STABLE alebo CURRENT doplnenými o číselný údaj verzie. Presne vedieť, čo ktorý termín označuje, je dôležité pri riešení problémov, čítaní dokumentácie a príspevkov z elektronických konferencií. Snáď najdôležitejšie je rozumieť týmto označeniam v prípade, že treba FreeBSD aktualizovať na niektorú z jeho verzií, ktorej výber väčšinou závisí najmä od účelu aktualizácie (potreba opraviť bezpečnostnú chybu na serveri v produkčnom nasadení je diametrálne odlišná od „potreby“ vyskúšať nový spôsob riadenia napájania na notebooku). Aktuálne používanú verziu operačného systému možno zistiť programom uname(1).
Keď sa operačný systém FreeBSD nainštaluje z inštalačného média dodávaného na CD (alebo sa ekvivalentne nainštaluje cez ftp či http), je vždy v príslušnej RELEASE verzii. V súčasnosti (27. marec 2004) je pre produkčné nasadenie určená verzia FreeBSD 4.9-RELEASE, ktorá by sa mala na dôležité aplikácie použiť vždy, ak si okolnosti (napríklad požiadavka efektívnejšieho symetrického multiprocesoringu) nevyžadujú použitie vetvy FreeBSD 5; v takom prípade treba použiť poslednú RELEASE verziu rady FreeBSD 5 (k vyššie uvedenému dátumu je to verzia FreeBSD 5.2.1-RELEASE). Na použitie verzie RELEASE operačného systému FreeBSD nie je potrebné použiť žiadny zo spôsobov jeho aktualizácie, postačuje jeho inštalácia. Program uname(1) identifikuje verziu operačného systému takto:
% uname -rPo uvoľnení vetvy RELEASE v nej už ďalej nenastávajú nijaké zmeny. Ak sa FreeBSD 4.9-RELEASE nainštaluje dnes alebo o dva roky, bude to presne ten istý systém; jedná sa teda o akúsi obdobu „krabicového softvéru“. Žiadny softvér však nie je dokonalý a ani operačný systém FreeBSD nie je výnimkou. Časom sa vo verzii RELEASE môžu objaviť (a spravidla sa aj objavia) chyby. Na opravu bezpečnostných chýb RELEASE verzií operačného systému FreeBSD existujú jeho špeciálne vetvy. V týchto vetvách sa k verzii RELEASE nepridáva žiadna nová funkcionalita, neaktualizuje sa jadro, ovládače zariadení, ani systémové nástroje, len sa opravujú bezpečnostné chyby, ktoré sa objavia. Použitie vetvy bezpečnostných opráv vyžaduje po nájdení a opravení bezpečnostnej chyby aktualizovať zdrojové kódy operačného systému a vykonať aktualizáciu pomocou make buildworld buildkernel installkerner installworld tak, ako to bolo opísané v jednej z predchádzajúcich častí tohto seriálu. Dôležité je správne nastaviť príznaky pre aktualizáciu zdrojových kódov v riadiacom súbore programu cvsup(1). Minimálny konfiguračný súbor potrebný na synchronizáciu zdrojových kódov operačného systému FreeBSD s vetvou bezpečnostných opráv môže vyzerať napríklad takto:
*default host=cvsup.FreeBSD.orgPre voľbu vetvy bezpečnostných opráv je relevantné práve nastavenie tag=RELENG_4_9. Namiesto servera cvsup.FreeBSD.org je vhodné použiť niektorý z „bližších“ cvsup-mirrorov; na Slovensku sú k dispozícii cvsup.sk.FreeBSD.org a cvsup2.sk.FreeBSD.org, úplný zoznam cvsup-mirrorov sa nachádza na adrese http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/cvsup.html#CVSUP-MIRRORS. Najmä niekoľko hodín po ohlásení bezpečnostnej chyby a jej opravy bývajú hlavné cvsup servery natoľko zaťažené, že nové pripojenia odmietajú.
Vetva bezpečnostných opráv by sa mala používať pre akékoľvek dôležité nasadenie FreeBSD. Aktualizácia operačného systému je jednoduchá a problémy nastávajú len veľmi zriedkavo (spravidla po nedodržaní zásad aktualizácie samotným administrátorom), keďže zmeny oproti predchádzajúcej verzii sú skutočne len minimálne (zvyčajne sa jedná o opravu v niekoľko málo súboroch zdrojových kódov). Ani frekvencia bezpečnostných chýb nájdených vo FreeBSD nie je veľká: vo verzii 4.9 boli od jej uvoľnenia 28. októbra 2003 do 27. marca 2004 nájdené tri bezpečnostné chyby a jedna bezpečnostná chyba vyžadujúca aktualizáciu systému sa vyskytla v balíku openssl(1).
Po aktualizovaní systému na vetvu bezpečnostných opráv sa zmení jeho identifikácia programom uname(1):
% uname -rčo znamená, že sa jedná o verziu operačného systému FreeBSD 4.9-RELEASE s aplikovaním bezpečnostných opráv (t.j. synchronizovaním zdrojových kódov s použitím cvsup tagu RELENG_4_9). Prípona -p4 znamená, že od uvoľnenia verzie operačného systému FreeBSD 4.9-RELEASE boli zdrojové kódy štyrikrát modifikované (boli opravené štyri bezpečnostné chyby). Pozor: Spomínaný systém bezpečnostných opráv opravuje len bezpečnostné chyby operačného systému, nie bezpečnostné chyby dodatočne inštalovaných aplikácií (napríklad webového servera)!
Vývoj však ide neustále dopredu a po čase sa stane operačný systém vo verzii RELEASE zastaraným. To zvyčajne neprekáža jeho použitiu na serveri, kde plní jednu alebo niekoľko málo funkcií, ale môže to byť limitujúce na desktope, kde je pravidelné zlepšovanie vlastností systému želateľné. Na takéto použitie je určená vývojová vetva STABLE. Jedná sa o poslednú verziu RELEASE operačného systému, do ktorej sa ale dopĺňa nová funkcionalita hneď po tom, ako bola otestovaná dostatočným množstvom používateľov a predpokladá sa, že pri bežnom používaní nespôsobí žiadne vážnejšie problémy a neohrozí bezpečnosť či stabilitu operačného systému. Na synchronizáciu zdrojových kódov s vetvou STABLE operačného systému FreeBSD je potrebné použiť konfiguračný súbor programu cvsup(1) s nastaveným tagom tag=RELENG_4. Pri používaní vetvy STABLE je operačný systém programom uname(1) identifikovaný ako
% uname -rČas, kedy robiť aktualizácie pri používaní vetvy STABLE operačného systému, nie je viazaný na žiadnu udalosť, ako to bolo pri vetve s opravami bezpečnostných chýb. Zvyčajne sa tieto aktualizácie vykonávajú v týždňových až mesačných periódach (aktualizáciu zdrojových kódov a preklad novej verzie systému je možné s použitím nástrojov make(1) a cvsup(1) do značnej miery zautomatizovať). Aktualizácie zvyčajne nie sú problémové, i keď zmeny sú väčšie ako je tomu len pri aplikovaní bezpečnostných opráv.
Z času na čas sa vývojári rozhodnú vydať novú verziu RELEASE. Vtedy vyhlásia tzv. zmrazenie kódu (angl. code freeze), čo znamená že do vetvy STABLE sa nepridáva žiadna nová funkcionalita, len sa odstraňujú aktuálne otvorené problémy a systém sa intenzívne testuje. Táto fáza zmrazenia zdrojových kódov sa nazýva aj pre-release a počas nej sa „vydá“ („vydá“ cez systém cvsup, nie vo forme .iso obrazov alebo na CD) niekoľko málo - zvyčajne dve alebo tri - verzie označené ako Release Candidate. Po dostatočnom otestovaní zmrazeného kódu, odstránení chýb a upravení dokumentácie sa zmrazená vetva STABLE vyhlási za vetvu RELEASE (s príslušne zväčšeným číslom), urobia sa .iso obrazy verzie RELEASE a vetva STABLE sa opäť uvoľní pre pridávanie nových vlastností.
Niekedy ale treba byť na špici vývoja. Buď kvôli potrebe používať vlastnosti operačného systému FreeBSD, ktoré sa vo verzii STABLE nenachádzajú (vylepšený multiprocesoring, použitie kryptovaného súborového systému a pod.), alebo jednoducho z vnútornej potreby mať to najnovšie (opomínajúc vývojárov spomínaných nových vlastností a tých používateľov, ktorí sa podujali tieto nové vlastnosti testovať). Na tieto účely je tu vetva CURRENT s príslušným cvsup tagom tag=. (bodka, nie RELENG_5, ako by sa dalo očakávať). Práve CURRENT je vetva, v ktorej sú ako v prvej dostupné všetky zlepšenia a nové črty, ale aj chyby a problémy.
Po dostatočnom otestovaní nových vlastností vo vetve CURRENT sa tieto presúvajú do vetvy STABLE, kde sa označujú skratkou MFC, čo znamená Merged from CURRENT, teda „pripojené z vetvy CURRENT“. Ak sa nejaká dôležitá funkcia operačného systému presúva z vetvy CURRENT do vetvy STABLE, spravidla jej treba venovať zvýšenú pozornosť. V momente jej pripojenia do vetvy STABLE ju začne používať veľké množstvo nových používateľov v rôznych nasadeniach, kde zatiaľ nebola testovaná a odhalí sa množstvo chýb. Závažné chyby boli však už spravidla odstránené počas testovania vo vetve CURRENT a aj vývojári sú pri presune nejakého kódu do STABLE vetvy ostražití, a preto k náprave chýb dochádza veľmi rýchlo (nie je zriedkavosťou, že do niekoľkých desiatok minút alebo niekoľkých málo hodín od momentu, keď niekto chybu nájde a opíše).
Ako pri aktualizácii operačného systému FreeBSD pomocou make buildworld buildkernel installkerner installworld nainštalovať už nadakonfigurované jadro nebolo uvedené v minulom článku o konfigurácii jadra, pretože sa tam nič nehovorilo o aktualizácii systému, ani pri predminulom článku o aktualizácii systému, pretože tam sa zasa nič nehovorilo o konfigurácii jadra. Pre úplnosť spomínaných dvoch článkov teda treba uviesť, ako pri aktualizácii systému vygenerovať aj požadované jadro, namiesto jadra GENERIC.
Konfiguračný súbor jadra NOVEJADRO je potrebné mať (samotný alebo symbolickú linku) v adresári /usr/src/sys/i386/conf/ a overiť, či je tam aj po aktualizácii zdrojových kódov. Následne stačí na aktualizáciu systému použiť klasickú sekvenciu príkazov doplnenú o parameter KERNCONF:
# cd /usr/srcDôležité je použiť KERNCONF=NOVEJADRO tak pri kompilovaní jadra, ako aj pri jeho inštalácii. Program make(1) musí v oboch prípadoch vedieť, že má pracovať s iným ako štandardným jadrom. V prípade, že by sa voľba KERNCONF=NOVEJADRO použila iba pri kompilácii jadra a nie aj pri inštalácii, došlo by k pokusu nainštalovať GENERIC jadro, ktoré ale nebolo skompilované, čo by spôsobilo chybu (v lepšom prípade; v horšom by sa nainštalovalo nejaké staršie GENERIC jadro, ktoré zostalo skompilované z minulosti, čo by mohlo viesť - a pravdepodobne by aj viedlo - k „nevysvetliteľnému“ správaniu sa systému).
Elektronické konferencie sú primárnym zdrojom podpory používateľov operačného systému FreeBSD zo strany FreeBSD komunity. Existujú konferencie venované všeobecným otázkam, ale väčšina sa zaoberá určitou špecifickou časťou vývoja a/alebo používania FreeBSD. Zoznam existujúcich konferencií venujúcich sa FreeBSD možno nájsť na adrese
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/eresources.html#ERESOURCES-MAIL.
Elektronické konferencie venované operačnému systému FreeBSD sú rozdelené do niekoľkých skupín. Prvou z nich sú všeobecné konferencie (je ich približne 20), do ktorých je umožnené prihlásiť sa každému záujemcovi a pre používateľov FreeBSD je to dokonca odporúčané. Druhou a najpočetnejšou skupinou elektronických konferencií (je ich viac ako 50) sú konferencie technické. Každá z nich sa venuje nejakej špecifickej časti súvisiacej s vývojom operačného systému FreeBSD a s jeho používaním. Technické konferencie sú tiež prístupné každému záujemcovi o danú oblasť. Tretia skupina elektronických konferencií je pomerne malá, obsahuje iba štyri konferencie. Venujú sa niektorým špecifickým veciam (viď ďalej) a hoci sú tiež prístupné pre všetkých záujemcov, nepredpokladá sa, že by o registráciu v nich malo záujem väčší počet používateľov FreeBSD. Posledná skupina elektronických konferencií sa venuje zmenám v cvs strome projektu FreeBSD a je špecifická tým, že používatelia môžu síce príspevky z konferencií v tejto skupine prijímať, ale nemôžu do nich odosielať príspevky vlastné.
Všeobecné elektronické konferencie FreeBSD sú najfrekventovanejšie. Majú obrovské množstvo používateľov. V tejto skupine konferencií sa tolerujú aj mierne „off-topic“ príspevky; i keď odosielateľovi takéhoto príspevku zvyčajne odporučia vhodnejšiu konferenciu, zvyčajne sa niekto nájde, kto na daný príspevok odpovie a odosielateľovi poradí. Najdôležitejšie konferencie spomedzi všeobecných sú:
freebsd-security-notifications - snáď najdôležitejšia zo všetkých konferencií; nedajú sa do nej zasielať príspevky, len sa prostredníctvom nej rozposielajú oznámenia o nájdených bezpečnostných chybách a spôsobe ich odstránenia. Do tejto konferencie s veľmi nízkou frekvenciou správ by mal byť prihlásený každý, kto spravuje čo i len jediný server s operačným systémom FreeBSD.
freebsd-questions - najvšeobecnejšia konferencia zo všeobecných, v ktorej žiadny príspevok týkajúci sa bližšie či vzdialenejšie operačného systému FreeBSD nebude „off-topic“. Táto konferencia má veľmi vysokú frekvenciu zasielaných správ.
freebsd-newbies - konferencia zameraná na nových používateľov FreeBSD, v ktorej sa riešia otázky ako postupovať pri problémoch s FreeBSD, kde nájsť príslušnú dokumentáciu alebo akým chybám sa vyhnúť.
freebsd-stable - Ako už názov napovedá, v tejto konferencii sa riešia všetky problémy súvisiace so STABLE vetvou FreeBSD (preto jej používatelia neradi vidia príspevky špecifické pre CURRENT vetvu). Frekvencia správ v tejto konferencii je tiež veľmi vysoká.
freebsd-current - ako v predchádzajúcom prípade, ale pre vetvu CURRENT.
Vymenovávať čo i len časť technicky špecifických elektronických konferencií spolu s ich popisom by bolo zbytočné. Venujú sa širokej škále oblastí blízko súvisiacich s operačným systémom FreeBSD ako je jeho portovanie na rozličné architektúry, budovaniu FreeBSD clustrov, podpore har dvéru, sieťových protokolov, výkonnosti, súborovým systémom či behu aplikácií ako KDE, Gnome, Java alebo Open Office na operačnom systéme FreeBSD.
V prípade tretej skupiny limitovaných elektronických konferencií ide v prevažnej miere o konferencie určené na koordináciu ľudí úzko spätých s FreeBSD. V štyroch konferenciách, ktoré sem patria, sa netolerujú žiadne „off-topic“ príspevky. Konferencie, ktoré sem patria:
freebsd-hubs - používateľmi sú ľudia prevádzkujúci mirrory FreeBSD.
freebsd-user-groups - konferencia na koordináciu používateľských organizácií FreeBSD.
freebsd-vendors - konferencia na koordináciu predajcov FreeBSD.
freebsd-www - konferencia pre ľudí udržiavajúcich webové stránky FreeBSD.
Na záver je už len potrebné spomenúť elektronickú konferenciu venovanú operačnému systému FreeBSD pre českých a slovenských používateľov, ktorú možno nájsť na adrese http://www.cz.freebsd.org/listserv/listinfo/users-l/.
Ako sa s časom menia požiadavky používateľov kladené na operačné systémy a na počítače celkovo, je potrebné prehodnocovať vhodnosť a odôvodnenosť algoritmov a technológií používaných tak v jadrách operačných systémov ako aj na ich rozhraniach s používateľským priestorom; FreeBSD nie je totiž zďaleka jediným operačným systémom, ktorý v súčasnosti prechádza väčšími zmenami - úspešnú cestu nastúpilo nové jadro operačného systému Linux s poradovým číslom 2.6 a veľmi zaujímavo vyzerá aj zoznam noviniek v pripravovanej verzii OpenBSD 3.5. Horlivo sa údajne pracuje aj v Redmonde, ale o tom budú používateľov informovať skôr ľudia z oblasti marketingu ako technici či nadšení používatelia. A kam smeruje - alebo môže smerovať - operačný systém FreeBSD?
Vetva 5 operačného systému FreeBSD je novou vetvou vývoja, ktorá prináša množstvo nových čŕt a zahŕňa tiež niektoré zmeny v architektúre systému. Táto vetva zatiaľ nie je oficiálne určená na produkčné nasadenie; v porovnaní s vetvou FreeBSD 4 môže byť menej stabilná, nakoľko má menej používateľov a je teda menej otestovaná, a zatiaľ sa zdá byť v niektorých prípadoch menej výkonná. Označenie vetvy 5 operačného systému FreeBSD za stabilnú a jej odporučenie na produkčné nasadenie sa však blíži. Čo prináša?
Najdiskutovanejšou vlastnosťou novej vývojovej vetvy operačného systému FreeBSD je symetrický multiprocesoring novej generácie (SMPng - Symetrical MultiProcessoring „new generation“). Jeho implementácia má za cieľ priniesť jemnejšie uzamykanie procesov v jadre operačného systému a tým zvýšiť počet programových vlákien, ktoré môžu súčasne vykonávať kód jadra, čo prinesie lepšiu škálovateľnosť FreeBSD systémov na viacprocesorových počítačoch. Vzhľadom na komplikovanosť zásahov do jadra systému, ktoré s implementáciou SMPng súvisia, napreduje vývoj len pomaly a stále sa vynárajú nové a nové súvisiace problémy. Napriek tomu, že veľký kus práce bol už urobený a vetva -CURRENT sa začína čím ďalej tým viac objavovať na produkčných systémoch, zoznamy vecí, ktoré treba na SMPng dokončiť, sú stále dlhé a FreeBSD verzie 4 sa ešte nejaký čas bude tešiť obľube.
Vetva 4 operačného systému FreeBSD je považovaná za výkonnú a stabilnú. Jej základy však vznikli v časoch, keď viacprocesorové počítače neboli bežne používané, a teda i jadro tohto operačného systému bolo stavané na beh na jednoprocesorovom počítači. Časom sa však začali viacprocesorové - najmä dvojprocesorové - systémy objavovať čoraz viac aj medzi klasickými počítačmi triedy PC, pre ktoré je operačný systém FreeBSD primárne určený, a preto bolo jadro tohto operačného systému prispôsobené tak, aby umožňovalo používateľským procesom využívať všetky procesory v systéme. Operácie jadra však boli synchronizované pomocou jediného centrálneho zámku (Big Giant Lock - BGL). Proces, ktorý potreboval vykonať kód jadra, uzamkol BGL, vykonal požadovanú operáciu v jadre a následne BGL odomkol. Ostatné procesy museli s vykonaním operácií v jadre počkať na odomknutie centrálneho zámku BGL; v jadre tak mohol súčasne operovať iba jeden proces.
Problém s uzamykaním jadra pomocou BGL bol na FreeBSD 4 riešený pomocou viacerých jednoduchých zámkov (angl. simple lock), ktoré umožňovali uzamknúť iba časť jadra (i keď to nerobili príliš efektívne), a teda umožňovali v kóde jadra pracovať viacerým procesom súčasne. Tento prístup však umožnil odstrániť použitie BGL len na niektorých miestach a množstvo operácií v jadre bolo stále synchronizovaných pomocou centrálneho zámku. Vo FreeBSD 5 simple lock-y nahradili tzv. mutex-y (z anglického mutual exclusion locking object). Z hľadiska blokovania procesov sú efektívnejšie ako simple lock-y (nevynucujú si čakanie procesu na uvoľnenie v nekonečnej slučke, čo simple lock-y robili).
Nakoľko je čiastočné uzamykanie jadra bežiaceho na viacprocesorovom systéme veľmi komplikované, bol vo verzii FreeBSD 5 do jadra pridaný ladiaci kód, ktorý umožňuje za cenu značného zvýšenia réžie uzamykania a odomykania mutex-ov tieto operácie kontrolovať a v prípade problémov presne identifikovať časť kódu, ktorá problémy spôsobila. Tento ladiaci kód je samozrejme možné z jadra odstrániť podmieneným prekladom, a tak odstrániť spomalenie, ktoré spôsobuje.
Prideľovanie procesorového času procesom je ďalšia z vecí, na ktorej sa horlivo pracuje. V tejto oblasti sa dosiahli dobré výsledky implementáciou ULE plánovača (angl. scheduler). Zatiaľ čo plánovač vo FreeBSD 4 je považovaný za veľmi dobrý (spravodlivý rozdeľovaním času medzi procesy vzhľadom na ich priority) a s dobrou dobou odozvy interaktívnych procesov na jednoprocesorových systémoch aj pri veľkej záťaži, jeho použitie na viacprocesorových systémoch nie je ideálnym riešením, a to najmä v prípade, že v systéme existuje veľké množstvo procesov či vlákien. Zložitosť plánovania procesov klasickým plánovačom je totiž lineárne závislá od množstva procesov, zatiaľ čo zložitosť plánovania ULE plánovačom je konštantná, nezávislá od počtu procesov.
Zatiaľ čo väčšina plánovačov (vrátane klasického plánovača FreeBSD) sa snaží nejakým spôsobom agregovať prioritu procesu, jeho nice hodnotu a mieru interaktivity (interaktivitu procesu pri prideľovaní procesorového času procesorom dokážu zohľadňovať len niektoré plánovače) a mieru aktuálneho zaťaženia systému (load average) a použiť jediný mechanizmus na určenie množstva procesorového času a moment jeho pridelenia procesu na základe tejto agregovanej hodnoty, ULE plánovač všetky tieto parametre zohľadňuje oddeleným spôsobom, čo vedie k tomu, že jeho vlastnosti sú ľahšie konfigurovateľné a kontrolovateľné, a je ich teda možné lepšie prispôsobiť špecifickým požiadavkám. ULE plánovač dokáže odhadnúť, ktorý z procesov je interaktívny, a podľa toho dokáže s prideľovaním procesorového času procesom manipulovať tak, aby čas odozvy interaktívnych procesov veľmi nevzrástol ani pri silnom zaťažení počítača inými procesmi.
ULE plánovač ďalej disponuje dvomi algoritmami vyvažovania záťaže (load balancing) medzi viacerými procesormi v systéme. Jeden z nich sa uplatňuje pri nízkom a strednom zaťažení systému, keď existuje v systéme aspoň jeden nečinný procesor, ktorý jednoducho odoberie nejaký proces zaťaženému procesoru. V prípade, že v systéme neexistuje žiadny nečinný procesor, prichádza na rad druhý algoritmus vyvažovania záťaže, ktorý je komplikovanejší, pretože zabezpečuje čo najspravodlivejšie rozdeľovanie procesorového času procesom a zároveň nerobí príliš časté prepínanie jedného procesu medzi rôznymi procesormi, pretože to vedie k značnej réžii pri presune informácií o procese medzi procesormi ako aj k presunu a premazávaniu obsahu vyrovnávacích pamätí. Táto vlastnosť sa nazýva afinita, t.j. akási „priľnavosť“ procesu k procesoru. Príliš časté premiestňovanie procesov medzi procesormi by síce zdanlivo mohlo viesť k spravodlivejšiemu prideľovaniu výpočtovej kapacity procesom, ale v konečnom dôsledku by bola réžia na premiestňovanie procesov medzi procesormi väčšia, ako čas strávený „užitočnými“ výpočtami v samotných používateľských procesoch a doba potrebná na ich vykonanie by bola niekoľkonásobne väčšia, ako keby bežali sekvenčne.
Okrem vylepšení týkajúcich sa behu operačného systému FreeBSD na viacprocesorových počítačoch, prináša vetva 5 aj ďalšie nie tak výrazné zmeny. Kompilátor GCC, ktorý je základnou súčasťou FreeBSD sa bude používať vo verziách 3.3.x, na rozdiel od vetvy 4, kde sa doteraz používala jeho verzia 2.95.x. Okrem architektúr i386, pc98 a Alpha budú podporované aj architektúry sparc64, ia64 a amd64. Pre používateľov operačného systému FreeBSD na desktopoch a notebookoch môže byť zaujímavá podpora technológie Bluetooth, zatiaľ čo administrátori severov privítajú možnosť kryptovania celých diskových partícií, nový formát súborového systému UFS2 či možnosť behu fsck(8) na pozadí. FreeBSD 5 používa devfs, čo je dynamická náhrada statického vytvárania uzlov zariadení v adresári /dev/.
Prechod na verziu FreeBSD 5 môže mať aj obmedzenia. Kvôli zjednodušeniu vývoja systému bola odstránená podpora binárneho formátu a.out, zo základného systému bola odstránená väčšina hier a úplne bol odstránený Perl; programy, ktoré boli dosiaľ obsiahnuté v základnom systéme a boli napísané v Perle, boli prepísané do shell-u alebo do jazyka C. Nakoľko boli menené štruktúry jadra, v ojedinelých prípadoch došlo k zmenám jeho API (application programming interface) a/alebo ABI (application binary interface), čoho následkom môžu prestať fungovať napríklad binárne ovládače zariadení a pod. Ani dokumentácia nemusí vždy odrážať zmeny medzi vetvami 4 a 5, i keď vidieť snahu projektu FreeBSD vlastnú udržiavať dokumentáciu aktuálnu a korešpondujúcu so stavom aplikácií.
The DragonFly BSD Project je logickým pokračovaním vývoja vetvy FreeBSD 4, ktorý si kladie za cieľ starostlivým výberom a implementáciou vlastností a algoritmov použitých v operačnom systéme dosiahnuť vysokú stabilitu, robustnosť a laditeľnosť v širokom spektre použitia od jednoprocesorových počítačov po veľké klastre. DragonFly má v úmysle upravovať tak kľúčové funkcie jadra operačného systému ako sú virtuálna pamäť, vsupno-výstupný model, správa vlákien a procesov v jadre a správa vyrovnávacích pamätí, ako aj robiť zmeny v používateľskom priestore týkajúce sa inštalácie aplikácií a kompletnej zmeny rozhrania medzi jadrom systému a aplikáciami, t.j. systémových volaní. Tieto volania majú byť založené na asynchrónnom posielaní správ, ktoré má byť kľúčovou technológiou v operačnom systéme DragonFly.
Prvá verzia operačného systému DragonFly je ohlásená na prvý jún 2004. Je však otázne, do akej miery to bude DragonFly spĺňajúci deklarované ciele; podľa changelogov a stavu vývoja uverejneného na webových stránkach www.dragonflybsd.org len do veľmi malej. Znie až príliš neuveriteľne, že tak malý tím ľudí - menej ako dvadsať, a to vrátane prevádzkovateľov mirrorov - by dokázalo v rozumnom čase naplniť vytýčené ciele. Tieto potom vyznievajú len ako zamyslenie nad tým, ako by mohol operačný systém vyzerať. Nepripomína to tak trochu prakticky neexistujúci operačný systém GNU/Hurd?
Talianske združenie používateľov operačného systému FreeBSD si dalo ďaleko skromnejšie ciele ako projekt DragonFly: vytvoriť súbor programov, ktoré umožnia používateľovi vytvoriť si vlastnú tzv. live verziu operačného systému FreeBSD. Sami chcú aj poskytnúť viacero iso obrazov live verzií FreeBSD pre rôzne účely použitia. Pred nejakým časom uvoľnená verzia FreeSBIE 1.0 funguje celkom uspokojivo, i keď trpí niektorými nedostatkami: ako každá live verzia operačného systému je pomalá, rýchlosť spúšťania programov je závislá od kvality CD média a CD mechaniky, preklady textov v používateľskom prostredí sú nekompletné, takže popri angličtine sa tu možno na mnohých miestach stretnúť s taliančinou (vlastne vôbec nie je jasné, či sa tvorcovia pokúšali preložiť FreeSBIE-ho zo svojej rodnej taliančiny do angličtiny, alebo sa im ešte nepodarilo preložiť všetky časti do taliančiny). Nakoniec, keďže konfigurácia systému počas štartu nie je možná, spúšťajú sa rozličné služby, aby sa vyhovelo čo najširšiemu okruhu používateľov (napr. firewall a pod.). Keď však bude možnosť vytvoriť si live verziu FreeBSD podľa svojich požiadaviek, môže sa stať FreeSBIE veľmi obľúbeným operačným systémom.
Čo sa týka útrob FreeSBIE-ho, sleduje -CURRENT vetvu vývoja FreeBSD. FreeSBIE 1.0 je postavené na FreeBSD 5.2.1-RELEASE. Vďaka pokročilejšej detekcii hardvéru v tejto vetve FreeBSD sa hodí napr. na otestovanie počítača pri kúpe, záchranu údajov pri havárii systému a pod. Domovská stránka live operačného systému FreeSBIE sa nachádza na adrese http://www.freesbie.org, ktorá je však zatiaľ pomerne strohá a skúpa na špecifické informácie.
Stabilná vetva operačného systému FreeBSD je síce veľmi populárna, ale nemôže zostať nemennou. Tlak tak zo strany konkurenčných operačných systémov ako aj zo strany používateľov núti vývojárov stále napredovať. Postup prác na FreeBSD 5 je síce pomalý, dôležité však je, že napriek zásadným zmenám, ktoré sa v tomto operačnom systéme dejú, je stále udržiavaný vo vysoko použiteľnom stave. CURRENT vetva FreeBSD je obľúbená napríklad v čoraz viac sa rozrastajúcej skupine používateľov notebookov, pretože má lepšiu podporu nového hardvéru a jeho detekciu. Napriek tomu sa vývojári nehodlajú ponáhľať s označením vetvy FreeBSD 5 za stabilnú, pokiaľ ju za takú nebudú skutočne považovať. Latka stability, spoľahlivosti, robustnosti a funkcionality je totiž vetvou FreeBSD 4 nastavená veľmi vysoko.
Okrem statickej konfigurácie jadra operačného systému FreeBSD pri jeho kompilácii existuje aj možnosť dynamickej zmeny jeho parametrov. Rozhranie, ktoré k tejto dynamickej konfigurácii slúži, sa nazýva sysctl. Pomocou rovnomenného nástroja (sysctl(8)) možno čítať niekoľko stovák parametrov jadra operačného systému FreeBSD a mnoho z nich aj meniť. Žiaľ, zatiaľ neexistuje kompletná dokumentácia, v ktorej by boli popísané všetky sysctl premenné, ich prípustné hodnoty, možnosti zmeny týchto hodnôt a efekty a dôsledky týchto zmien. Je to sčasti zapríčinené tým, že rozhranie sysctl sa nepoužíva na konfiguráciu a ladenie operačného systému v masovom rozsahu; zvyčajne je v každej inštalácii FreeBSD nutné či žiaduce zmeniť cez toto rozhranie iba jednu alebo niekoľko málo hodnôt. Zmena niektorých parametrov môže viesť aj k znefunkčneniu niektorých podsystémov jadra operačného systému, a preto je pri experimentovaní so zmenami parametrov cez sysctl potrebná opatrnosť a neraz hlboké znalosti o fungovaní podsystému, ktorého parametre sa menia.
Niektoré premenné jadra operačného systému FreeBSD je možné cez rozhranie sysctl iba čítať, nemožno ich však meniť. Programy ich používajú na zistenie informácií o operačnom systéme. Pre používateľa - obzvlášť pre administrátorov serverov - sú však zaujímavejšie tie parametre, ktoré je možné meniť a ovplyvniť tak správanie sa operačného systému. Ani zmena týchto meniteľných parametrov však nie je úplne priamočiara: niektoré parametre jadra FreeBSD možno síce meniť, ale nie počas behu systému, ale len pred zavedením jeho jadra a neskôr už musia zostať hodnoty týchto parametrov nemenné. Iné parametre je však žiaduce - a teda i možné - meniť prakticky kedykoľvek počas behu operačného systému. Existuje preto niekoľko rozličných spôsobov nastavovania sysctl parametrov.
Ak je daný parameter možné meniť len pred zavedením jadra operačného systému a počas jeho behu musí zostať nemenný, je potrebné ho nastaviť ešte skôr, ako sa riadenie odovzdá samotnému jadru, t.j. z boot manažéra. Ak sa jedná o jednorazovú zmenu nastavenia parametra, napríklad povolenia režimu Ultra DMA pre CDROM mechaniku počas inštalácie operačného systému z CD média, stačí prerušiť bootovaciu sekvenciu počas na to určenej desaťsekundovej pauzy pred zavedením jadra systému (podrobnosti viď v časti o kompilácii jadra operačného systému FreeBSD) a na príkazový riadok, ktorý sa spustí zadať nasledujúci príkaz:
ok set hw.ata.atapi_dma=“1“a potom obnoviť prerušené bootovanie príkazom:
ok bootAk je však žiaduce zapnúť režim Ultra DMA pre CDROM mechaniku pri každom štarte operačného systému FreeBSD - čo pri drvivej väčšine súčasných počítačov žiaduce je - je potrebné zadávanie tohto príkazu nejako zautomatizovať, pretože jeho ručné zadávanie pri každom zapnutí počítača by asi každého veľmi rýchlo omrzelo (FreeBSD z bezpečnostných dôvodov necháva režim Ultra DMA pre ATAPI CDROM mechaniky vypnutý). V takom prípade stačí príslušné meno sysctl premennej spolu s jej hodnotou zapísať do súboru /bool/loader.conf napríklad takto:
# echo 'hw.ata.atapi_dma=“1“' >> /boot/loader.confna čo samozrejme treba mať rootovské práva. Týmto spôsobom je možné zabezpečiť pohodlnú inicializáciu väčšieho množstva sysctl premenných.
Premenné, ktoré je možné meniť za behu systému, možno zmeniť kedykoľvek pomocou príkazu sysctl(8) z príkazového riadku; samozrejme sú k tomu potrebné rootovské práva. Ako príklad možno použiť binárnu premennú kern.timecounter.method, ktorá môže byť nastavená na hodnoty 0 alebo 1, a určuje, ktorý z dvoch možných algoritmov implementovaných v jadre operačného systému FreeBSD sa bude používať na udržiavanie systémového času. Defaultná hodnota tohto parametra je 0, pri ktorej jadro používa rýchly a na systémové prostriedky nenáročný algoritmus. Niekedy ale môže byť nutné používať na udržiavanie systémového času iný algoritmus, ktorý je náročnejší na systémové prostriedky, ale je presnejší. Použitie tohto algoritmu možno zapnúť práve zmenou premennej kern.timecounter.method kedykoľvek počas behu operačného systému príkazom:
# sysctl kern.timecounter.method=1na čo jadro zareaguje (okrem zmeny používaného algoritmu) výpisom
Kernel timecounter method: 0 —> 1A keďže tých sysctl premenných, ktoré možno nastavovať počas behu systému, je veľké množstvo, opäť existuje spôsob, ako ich nastavenie po zavedení operačného systému zautomatizovať. Na tento účel slúži súbor /etc/sysctl.conf, v ktorom sa parametre sysctl a ich hodnoty zadávajú rovnako, ako tomu bolo v prípade tých parametrov, ktoré sa nastavovali pred zavedením jadra operačného systému v súbore /boot/loader.conf, t.j. napríklad pre vyššie zmienenú premennú kern.timecounter.method by sa jej nastavenie na hodnotu 1 po každom štarte operačného systému FreeBSD zabezpečilo zadaním príkazu (opäť s rootovskými právami):
# echo 'kern.timecounter.method=“1“' >> /etc/sysctl.confMá kľúčový význam vedieť či a kedy je možné tú ktorú sysctl premennú meniť a podľa toho jej hodnotu nastaviť buď v súbore /boot/loader.conf alebo /etc/sysctl.conf. Pokus nastaviť v súbore /etc/sysctl.conf (alebo z príkazového riadku bežiaceho systému) premennú, ktorú možno nastavovať iba pred zavedením jadra operačného systému, skončí chybou, lebo v čase behu operačného systému je už táto premenná určená iba na čítanie. Naopak, ak sa premenná, ktorá sa nastavuje počas behu operačného systému nastaví v súbore /boot/loader.conf, žiadna chyba sa síce nespôsobí, ale pri prechode systému do viacpoužívateľského režimu bude táto premenná opätovne inicializovaná na svoju defaultnú hodnotu, a teda jej nastavenie stratí efekt. Samozrejme, nastavovať kdekoľvek a kedykoľvek hodnoty tých premenných, ktoré sú určené iba na čítanie (napríklad compat.linux), nemá zmysel a jadro operačného systému sa bude zmenám takýchto premenných brániť. A ako by tých komplikácií, výnimiek a odlišností nebolo dosť, tak niektoré sysctl premenné sa nastavujú podľa parametrov uvedených v hlavnom konfiguračnom súbore operačného systému FreeBSD /etc/rc.conf. Medzi takéto sysctl premenné patria napríklad kern.securelevel udávajúca bezpečnostnú úroveň behu systému (pozor, nezamieňať z pojmom runlevel, t.j. úroveň behu systému v operačnom systéme GNU/Linux alebo System V; úrovne behu systému v tomto zmysle operačné systémy BSD nemajú) alebo kern.dumpdev udávajúca BSD partíciu obsahujúcu odkladací priestor (swap), do ktorého sa urobí výpis pamäte v prípade havárie systému.
Všetky sysctl premenné spolu s ich hodnotami možno vypísať na obrazovku príkazom
% sysctl -aa keďže je ich pomerne hodne (viac ako tisíc), zvyčajne sa výstup programu filtruje programom grep(1) alebo niektorou z jeho alternatív. Z výpisu uvedeného príkazu vidieť, že sysctl premenné tvoria hierarchickú štruktúru, pričom sú roztriedené do skupín podľa toho, k akému podsystému jadra operačného systému sa vzťahujú. Mená premenných nastavujúcich vlastnosti virtuálnej pamäte tak začínajú reťazcom vm., najvnútornejšie jadro operačného systému sa konfiguruje pomocou premenných začínajúcich na kern., virtuálny súborový systém má predponu vfs. a parametre týkajúce sa sieťového podsystému jadra - ktorých je dosť veľa - začínajú celkom očakávane na net..
Namiesto hodnôt jednotlivých sysctl premenných si možno nechať vypísať aj ich krátky popis a to s použitím parametra -d programu sysctl(8). Ďalšie podrobnosti o tomto príkaze sa možno dozvedieť z jeho manuálovej stránky. Popis niektorých sysctl premenných, ktoré má význam nastavovať a ladiť tak svoj operačný systém, sa nachádza v manuálovej stránke
% man 7 tuningPekná zbierka laditeľných parametrov spolu s ich krátkym vysvetlením sa nachádza aj v dodatku A k českému prekladu knihy Michaela Lucasa FreeBSD - síťový operační systém.
Pri nastavovaní sysctl premenných nie je dobré experimentovať naslepo a extrapolovať skutočný význam jednotlivých premenných podľa zdanlivého významu ich pomenovaní. Ako príklad možno uviesť premennú kern.randompid s defaultnou hodnotou 0. Zvedavci nech si skúsia jej význam domyslieť a vyskúšať si zmenu jej hodnoty; ak výsledky nesplnia ich očakávania, nech v archívoch elektronických konferencií pohľadajú niektorú z mnohých otázok ohľadom tohto parametra. Možno si potom uvedomia, že bez čítania manuálov to vo FreeBSD jednoducho nejde.
Nakoniec už len jedno upozornenie na studnicu veľmi praktických článkov týkajúcich sa BSD operačných systémov, ktorá sa nachádza - samozrejme v angličtine - na adrese http://www.onlamp.com/bsd/. Vedeli ste, že popri autoroch ako sú Jim Mock alebo Michael Lucas píše jedny z najlepších článkov o operačnom systéme FreeBSD žena s menom Dru Lavigne?
Minulá časť seriálu o operačnom systéme FreeBSD vysvetľovala základné princípy fungovania rozhrania sysctl a na niekoľkých príkladoch ukázala spôsoby ako konfigurovať jadro FreeBSD jednorazovo i ako aplikovať nastavenia po každom štarte operačného systému. Pokračovanie minulej témy je orientované praktickejšie: vysvetľuje význam niektorých sysctl premenných, ktoré sa menia najčastejšie. Pri každom parametri je uvedené, či je určený iba načítanie, či ho možno meniť počas behu operačného systému, alebo či musí byť nastavený pri štarte FreeBSD. Pre úplnosť sú v tabuľke uvedené prefixy mien sysctl premenných a podsystémy jadra operačného systému FreeBSD, ku ktorému sa sysctl premenné s týmito prefixmi vzťahujú.
Prefix sysctl premennej |
Subsystém jadra |
|---|---|
| kern | základné funkcie jadra |
| vm | správa virtuálnej pamäte |
| vfs | správa súborových systémov |
| net | sieťový subsystém |
| debug | ladiace informácie |
| hw | nastavenia hardvéru |
| machdep | premenné závislé na architektúre počítača |
| user | niektoré nastavenia používateľského prostredia |
| p1003_1b | nastavenie parametrov normy POSIX |
| jail | virtuálny stroj jail |
| compat | ABI - application binary interface |
kern.quantum - Maximálna doba v mikrosekundách, počas ktorej môže bežať jeden proeces, ak sú v systéme spustené aj iné procesy, ktoré čakajú na pridelenie procesorového času. Táto premenná sa môže meniť počas behu operačného systému a jej defaultná hodnota je 100 000, t.j. 10 milisekúnd. Premenná kern.quantum sa mení zvyčajne iba v prípade používania tzv. device polling; tento prípad je zdokumentovaný v súbore /usr/src/sys/i386/conf/LINT, v ktorom sa nachádzajú všetky parametre, ktoré možno použiť v konfiguračnom súbore jadra operačného systému pri jeho kompilácii. Táto sysctl premenná sa vo verzii operačného systému FreeBSD 5.x používa na určenie, ktorý z dvoch možných plánovačov procesov sa aktuálne používa. V prípade používania klasického BSD plánovača príkaz
% sysctl kern.quantumvypíše hodnotu tejto premennej obvyklým spôsobom, ale v prípade používania nového ULE plánovača, ktorý túto hodnotu nepoužíva, uvedený príkaz vypíše chybové hlásenie
sysctl: unknown oid 'kern.quantum'vm.swap_enabled - Tento prepínač zapína či vypína používanie odkladacieho priestoru. Ak je nastavený na hodnotu 0, nebude operačný systém odkladací priestor používať. Toto nastavenie sa môže hodiť v prípade poškodenia disku, na ktorom sa nachádza odkladací priestor. Defaultne je tento prepínač nastavený na hodnotu 1, t.j. použitie odkladacieho priestoru je povolené. Nastavovať ho možno iba pred zavedením jadra operačného systému.
Inú zaujímavú voľbu týkajúcu sa odkladacieho priestoru možno použiť aj v konfiguračnom súbore jadra operačného systému FreeBSD pri jeho kompilácii:
options NSWAPDEV=4Hodnota tejto premennej udáva maximálny počet odkladacích priestorov, ktoré môže jadro operačného systému súčasne používať. Defaultne je nastavená na hodnotu 4. V praxi ale taký veľký počet odkladacích priestorov nebýva, ale jadro operačného systému musí pre takýto počet odkladacích priestorov alokovať štruktúry v pamäti bez ohľadu na to, koľko sa ich v skutočnosti používa. Nastavenie hodnoty NSWAPDEV na hodnotu rovnajúcu sa počtu používaných odkladacích priestorov môže ušetriť určité množstvo pamäte alokovanej samotným jadrom systému (ktorá sa navyše nikdy neodkladá), najmä ak je veľkosť najväčšieho odkladacieho priestoru veľmi veľká.
S počtom používaných odkladacích priestorov súvisí aj ďalší nastaviteľný sysctl parameter - wm.swap_async_max, ktorého hodnota udáva maximálny počet asynchrónnych operácií odkladania stránok do odkladacieho priestoru, ktoré môžu prebiehať súčasne. Defaultne je tiež nastavený na hodnotu 4, ktorá sa po zmene hodnoty parametra NSWAPDEV nezmení. Nemá význam, aby bežalo viac operácií odkladania, ako je nezávislých odkladacích priestorov. Zároveň je potrebné zvážiť, či je do odkladacích priestorov (ak ich je viacero) možné zapisovať skutočne paralelne, t.j. či či každý z nich je umiestnený napríklad na inom fyzickom IDE disku, z ktorých každý je pripojený na inom IDE radiči.
vm.swap_idle_enabled - Ak v systéme dochádza príliš často k stránkovaniu, možno sa pokúsiť čiastočne riešiť situáciu nastavením tohto parametra na hodnotu 1, v dôsledku čoho začne systém odkladať z fyzickej operačnej pamäte do odkladacieho priestoru neaktívne procesy skôr ako aktívne. Defaultne je taktéto správanie sa podsystému virtuálnej pamäte vypnuté a parameter je nastavený na hodnotu 0. O tom, kedy začne jadro operačného systému považovať procesy za neaktívne, rozhodujú hodnoty ďalších dvoch sysctl premenných, vm.swap_idle_treshold1 a vm.swap_idle_treshold2 defaultne nastavených na hodnoty 2 a 10 v uvedenom poradí. Tieto hodnoty vo väčšine prípadov vyhovujú a na zapnutie odkladania neaktívnych procesov stačí nastaviť premennú vm.swap_idle_enabled na hodnotu 1. Všetky tri uvedené premenné možno nastavovať počas behu operačného systému FreeBSD.
Ak je záťaž na virtuálnej pamäte permanentne vysoká, ladenie zaobchádzania operačného systému s odkladaním stránok fyzickej pamäte do odkladacieho priestoru problémy nevyrieši, môže riešeniu len trochu napomôcť. Lepšie je prijať systémovejšie opatrenia, napr. eliminovať proces vytvárajúci záťaž, ak je to možné. Ak je takýchto procesov viacero, pokúsiť sa ich rozložiť tak, aby nebežali súčasne (posunúť čas automatického zálohovania aby sa nekryl z časom automatickej aktualizácie zdrojových kódov v strome portov, navyše ak popri tom beží kompilácia systému, a pod.). Konečným riešením je zvýšenie objemu fyzickej pamäte v systéme. Pridanie operačnej pamäte systému, ktorý jej má nedostatok, má zvyčajne na výkon a odozvu systému väčší vplyv, ako zdvojnásobenie taktovacej frekvencie procesora. Naopak, ak k stránkovaniu vo väššom rozsahu dochádza iba ojedinele, je zbytočné investovať do operačnej pamäte a využitie odkladacieho priestoru na prekonanie krátkodobého nedostatku fyzickej pamäte je v tomto prípade vhodné.
O operačnom systéme FreeBSD sa tvrdí, že zvyčajne používa odkladací priestor viac ako niektoré iné operačné systémy unixovského typu, ale zároveň si pozorní používatelia môžu všimnúť, že množstvo operačnej pamäte označenej vo výpise programu top(1) ako voľnej je málo. Obe tieto skutočnosti sú do istej miery pravdivé a na ich objasnenie je potrebné poznať niekoľko faktov. Prvým je ten, že pamäť, ktorá je skutočne voľná, je pre systém zbytočná. Operačné systémy unixovského typu sa snažia všetku pamäť, ktorá nie je potrebná pre procesy, použiť ako vyrovnávaciu pamäť pre vstupno-výstupné operácie, ktoré patria k najpomalším operáciám počítača, a tak sa ich snažia urýchliť. Zatiaľ čo niektoré iné operačné systémy sa k odkladaniu stránok do odkladacieho priestoru uchyľujú iba v krajnom prípade nedostatku fyzickej pamäte, operačný systém FreeBSD sa v tomto smere správa proaktívne: odkladá niektoré stránky dlho neaktívnych procesov do odkladacieho priestoru a uvoľňuje si tak pamäť, ktorú potrebuje pre aktívne procesy a vyrovnávacie pamäte. Tým dosiahne lepšiu efektivitu práve vykonávaných procesov na úkor trochu pomalšieho prebudenia procesov, ktoré sú dlhodobo neaktívne. Táto proaktivita má samozrejme svoje obmedzenia a kontrolné mechanizmy, takže sa nestane, že keď zostane počítač niekoľko hodín nečinný, budú všetky procesy odložené v odkladacom priestore.
hw.ata.wc - Povoľuje alebo zakazuje používanie hardvérovej vyrovnávacej pamäte IDE pevných diskov. Defaultne je tento parameter nastavený na hodnotu 1, t.j. používanie vyrovnávacích pamätí diskov je povolené. Ak sa pred zavedením jadra operačného systému nastaví tento parameter na hodnotu 0, tak sa hardvérová vyrovnávacia pamäť IDE pevných diskov nebude používať, čo má za následok zníženie výkonnosti diskového podsystému pri operáciách zápisu údajov. Toto zníženie výkonnosti môže byť niekedy dosť dramatické, najmä pri starších pevných diskoch. Na druhej strane môže vypnutie spomínaných vyrovnávacích pamätí predísť privedeniu súborového systému do nekonzistentného stavu v prípade výpadku napájacieho napätia. V takom prípade pevné disky síce zvyčajne garantujú schopnosť tzv. atomického zápisu sektoru (to znamená, že ak sa začal zapisovať nejaký sektor na pevnom disku a zároveň došlo k výpadku napájacieho napätia, bude tento sektor korektne dopísaný až do konca), ale dopísať obsah vyrovnávacej pamäte už nie je možné. Vyrovnávacie pamäte súčasných pevných diskov sú obrovské (niekoľko MB) z pohľadu možnosti implementovať do ich hardvéru takúto črtu.
net.inet.icmp.drop_redirect - Defaultá hodnota tohto parametra je 0. Ak sa však nastaví na hodnotu 1, bude systém ignorovať všetky ICMP redirect pakety. Hoci toto správanie sa odporuje štandardu pre TCP/IP, ICMP redirect pakety sa vyskytujú iba veľmi zriedkavo a takmer nikdy sa nevyskytujú odôvodnene. Parameter je možné meniť počas behu operačného systému.
net.inet.icmp.log_redirect - Prepínač, ktorý v prídade nastavenia na hodnotu 1 zapína logovanie všetkých ICMP redirekt paketov, ktoré systém prijme. Defaultná hodnota tohto parametra je 0 a môže sa nastavovať počas behu operačného systému.
net.inet.tcp.blackhole - Protokol TCP/IP vráti pri pokuse o pripojenie k portu, na ktorom sa žiadne spojenie neočakáva, chybové hlásenie. Na strane klienta je potom obvykle zobrazená chyba connection reset by peer. Ak je táto premenná nastavená na hodnotu 1, budú všetky pokusy o pripojenie na uzavreté TCP porty jednoducho ignorované. Toto nastavenie spomaľuje skenovanie portov a neodosiela žiadne sieťové pakety oznamujúce chybu pripojenia na uzavretý TCP port. Túto premennú možno nastavovať počas behu operačného systému a jej defaultná hodnota je 0.
net.inet.udp.blackhole - Význam tejto premennej je rovnaký ako v predchádzajúcom prípade, ale platí pre spojenia prichádzajúce na uzavreté UDP proty. Možno ju meniť počas behu operačného systému a jej defaultná hodnota je 0.
net.inet.tcp.log_in_vain - Tento prepínač je defaultne nastavený na hodnotu 0. Kedykoľvek počas behu operačného systému je možné ho nastaviť na hodnotu 1, čím sa zapne logovanie všetkých pokusov o pripojenie na uzatvorené TCP proty, t.j. na porty, na ktorých nebeží žiadna služba, ktorá by očakávala prichádzajúce sieťové pripojenie. Takto možno odhaliť napríklad skenovanie portov. Na druhej strane môže byť takéto logovanie nebezpečné tým, že môže produkovať veľké množstvo logovacích záznamov.
net.inet.udp.log_in_vain - Tento prepínač má zhodnú defaultnú hodnotu, spôsob nastavovania aj význma ako predcházajúci, ale vzťahuje sa na pripojenia k uzavretým UDP portom.
net.inet.tcp.always_keepalive - Keď je tento prepínač nastavený na hodnotu 1, čo je zároveň jeho defaultná hodnota, operačný systém bude postupne vyhľadávať a ukončovať všetky neaktívne spojenia. Budú sa tak uvoľňovať systémové prostriedky alokované sieťovými spojeniami, ktoré neboli korektne ukončené z dôvodu výpadku sieťového spojenia, pádu pripojenej aplikácie a pod. Na druhej strane môže byť v niektorých prípadoch vhodné nastaviť tento parameter na hodnotu 0 - je možné tak urobiť počas behu operačného systému - systém tak bude udržiavať všetky spojenia. Je to výhodné pri existencii sieťových spojení, ktoré sú uzavreté po nespoľahlivých linkách, ktoré z času na čas vypadávajú, ale opätovne sa obnovujú. Dôležité samozrejme je, aby bolo uzatváranie prerušených spojení vypnuté na oboch jeho stranách.
Základná inštalácia operačného systému FreeBSD obsahuje okrem jadra operačného systému aj množstvo systémových nástrojov a aplikácií na monitorovanie a nastavovanie sytému, konfiguráciu základných internetových služieb (ssh, ftp, elektronická pošta), aktualizáciu operačného systému, aj na inštalovanie doplnkových aplikácií. I keď možno používateľské aplikácie inštalovať už počas inštalácie operačného systému, nie je to celkom najlepšia voľba. Najmä začiatočníci majú tendenciu inštalovať - vo FreeBSD i v iných operačných systémoch unixovského typu - veľké množsvo softvéru len preto, lebo si myslia, že ho raz budú používať, alebo preto, lebo o ňom niekde čítali. Naproti tomu skúsení používatelia majú tendenciu inštalovať iba minimálne množstvo tých aplikácií, ktoré skutočne potrebujú. Najmä ak sa jedná o počítač, ktorý slúži ako server s niekoľkými službami pre viacero používateľov, je dôležité, aby mal jeho administrátor dokonalý prehľad nielen o inštalovaných aplikáciách a bežiacich službách, ale aj o ich konfigurácii, nastaveniach či obmedzeniach.
Balíky (angl. packages) sú vopred skompilované aplikácie pre konkrétnu verziu operačného systému FreeBSD. Inštalácia doplnkového softvéru z pripravených balíkov je asi najjednoduchším spôsobom rozšírenia FreeBSD. Balíky sa nachádzajú na inštalačných CD, alebo sa používajú balíky z verejných ftp serverov. Balíky sú zvyčajne vo formáte .tgz, teda adresáre zbalené programom tar(1) a skomprimované programom gzip(1). V posledom čase sa prechádza na balíky vo formáte .tbz, ktoré sú komprimované programom bzip2(1), ktorý dosahuje pri komprimácii lepšie komprimačné pomery ako program gzip(1). Všetky uvedené programy sú súčasťou základnej inštalácie operačného systému FreeBSD; naviac, k ich priamemu použitiu sa pri inštalácii programov z balíkov používateľ ani nedostane, nakoľko dekomprimáciu a rozbalenie balíkov na patričné miesta urobia za neho inštalačné programy. Inštalačné disky operačného systému FreeBSD sú urobené tak, aby sa väčšina aplikácií dala naištalovať s použitím jediného CD; kvôli obmedzenej kapacite kompaktných diskov to však neplatí vždy a niektoré aplikácie sa na týchto CD ani nenáchadzáju a vždy ich treba inštalovať z Internetu.
Ideálne sa doplnkový softvér v operačnom systéme FreeBSD inštaluje, ak je počítač, na ktorom sa táto inštalácia vykonáva, pripojený k Internetu, odkiaľ je možné balíky stiahnuť. V takomto prípade nie je potrebné nič iné, iba vedieť názov aplikácie, ktorá sa má inštalovať. Ak sa má inštalovať napríklad konzolový ICQ klient centericq(1), stačí sa prihlásiť ako používateľ root a zadať príkaz
# pkg_add -r centericqProgram pkg_add(1) sa pripojí k ftp serveru, stiahne balík programu centericq pre príslušnú verziu operačného systému FreeBSD, rozbalí ho a nainštaluje. Ak balík závisí od iných aplikácií, ktoré sú pre jeho beh nevyhnutné, nainštalujú sa samozrejme aj tieto.
Ak na počítači, kde sa inštalácia vykonáva, nie je k dispozícii pripojenie k Internetu a nemožno využiť automatické stiahnutie potrebného balíka aj všetkých závislostí, možno inštalovať programy z inštalačných CD operačného systému FreeBSD, alebo vlastne z akéhokoľvek iného lokálneho zdroja. Rozdiel je iba v tom, že je potrebné zadať celé meno súboru balíka a inštalácia závislostí už nie je tak celkom priamočiara: program pkg_add(1) hľadá závislosti v aktuálnom adresári, alebo v adresároch, ktoré sú uvedené v premennej prostredia PKG_PATH. Ak na týchto miestach nenájde potrebné balíky, ktoré je treba inštalovať ako závislosti, vyhlási chybu a balík nenainštaluje.
Informácie o tom, aké balíky sú v systéme inštalované, je možné získať programom pkg_info(1) alebo pkg_version(1). Programy inštalované z balíkov možno odinštalovať programom pkg_delete(1). Uvedený popis je len krátkym načrtnutím možností inštalácie doplnkového softvéru z balíkov. Podrobnejšie informácie sa možno dozvedieť v manuálových stánkach uvedených programov.
Systém portov nie pre začiatočníkov veľmi príťažlivý. Kto však raz okúsi jeho výhody, nebude sa ho chcieť v žiadnom prípade vzdať. Pomocou portov sa dajú doplnkové aplikácie v operačnom systéme FreeBSD inštalovať presne pre potreby konkrétneho používateľa. Základom tohto sytému je tzv. strom portov, ktorý sa nachádza v adresári /usr/ports/. V strome portov sa pre každú aplikáciu, ktorú je možné z portov inštalovať, nachádza adresár, ktorý obsahuje všetky potrebné informácie na poloautomatickú alebo automatickú inštaláciu danej aplikácie. Adresáre aplikácií sú rozdelené podľa určenia programov do vyše šesdesiatich kategórií. V adresári každej kategórie sa nachádzajú adresáre pre konkrétne aplikácie. V týchto adresároch je spravidla niekoľko súborov a niekedy aj adresáre:
Súbor distinfo obsahuje informácie o kontrolných súčtoch súborov so zbalenými zdrojovými kódmi aplikácie, ktoré sa pred inštaláciou stiahnu z internetu a niekedy aj informácie o veľkosti týchto súborov. V súbore pkg-descr je krátky popis programu, ktorý je zvyčajne doplnený o URL adresu, kde sa možno o danom programe dozvedieť viac, alebo aspoň o emailovú adresu človeka, ktorý ma vývoj programu na starosti. Súbor pkg-plist obsahuje zoznam všetkých súborov, ktoré sa v systéme vytvoria pri inštalácii daného programu; vďaka tomuto zoznamu je neskôr možné program bez zbytku odinštalovať (čo v niektorých iných operačných systémoch vôbec nie je samozrejmé). V adresári files sa nachádzajú súbory, ktoré sú špecifické pre inštaláciu daného programu na operačnom systéme FreeBSD; zvyčajne sú to patche, ktoré je potrebné aplikovať na zdrojové kódy programu, aby ho bolo možné na FreeBSD preložiť, ale môžu sa nachádzať aj rôzne iné súbory, ako konfiguračné skripty, dokumentácia špecifická pre inštaláciu na FreeBSD a pod. Napokon je tu súbor Makefile, v ktorom je definovaný celý proces stiahnutia, extrakcie, patchovania, kompilácie a inštalácie daného programu.
Pozorný čitateľ si určite všimol, že zatiaľ nič nebolo povedané o tom, kde sa nachádza samotná aplikácia, ktorá sa má inštalovať. Pravda je taká, že tá sa tu zatiaľ nenachádza. Inštaláciu programov z portov možno použiť iba vtedy- zjednodušene povedané - ak má daný počítač k dispozícii prístup na Internet. Princíp inštalácie doplnkových aplikácií zo systému portov je v tom, že po zadaní príkazu na inštaláciu sa balík s jej zdrojovými kódmi stiahne z Internetu, overí sa integrita archívu, tento sa rozbalí, na zdrojové kódy sa aplikujú patche špecifické pre operačný systém FreeBSD, tieto sa skopilujú a nainštalujú. Ak má daná aplikácia nejaké závislosti, rovnakým spôsobom sa nainštalujú najskôr tieto. Všetky tieto činnosti riadi program make(1), ktorý informácie pre svoju činnosť čerpá práve z vyššie spomínanného súboru Makefile.
Pre každú aplikáciu existuje niekoľko cieľov programu make(1), ktoré sa zvyčajne priamo používateľom nevykonávajú, ale je dobré aspoň o nich vedieť. Zvyčajne sa samostatne vykonávajú iba ciele install a clean, niekedy ešte build a distclean. Zo všetkých cieľov stoja za zmienku nasledovné:
fetch - Stiahne všetky súbory potrebné na inštaláciu danej aplikácie a umiestni ich do adresára /usr/ports/distfiles/.
checksum - Skontroluje kontrolné súčty stiahnutých súborov. Definovanie premennej prostredia NO_CHECKSUM zabráni tejto kontrole, ale na to je dôvod len veľmi zriedkavo. Ak nesúhlasí kontorlný súčet balíka, môže to znamenať, že došlo ku chybe počas jeho sťahovania, ale aj to, že sa jedná o podvrh a nie o pôvodný balík.
depends - Inštaluje (alebo len skompiluje, ak je požadovaná len kompilácia) všetky závislosti inštalovanej aplikácie. Vykonaniu tohto cieľa sa dá zabrániť definovaním premennej prostredia NO_DEPENDS.
extract - Rozbalí stiahnuté súbory do podadresára s názvom work/, ktorý sa vytvorí v adresári inštalovanej aplikácie v strome portov.
patch - Aplikuje patche špecifické pre operačný systém FreeBSD na rozbalené zdrojové kódy. Práve kvôli patchovaniu je potrebné vedieť o jednotlivých cieľoch, ktorými možno spúšťať jednotlivé etapy inštalácie programu krok po kroku. V prípade potreby aplikovania vlastných patchov na zdrojové kódy nejakej aplikácie je treba najskôr aplikovať štandardné patche príkazom make patch, a až potom urobiť vlastné zásahy do zdrojových kódov.
configure - Konfiguruje aplikáciu pred kompiláciou.
build - Skompiluje aplikáciu, ale neinštaluje ju do systému.
install - Inštaluje aplikáciu. Toto je cieľ, ktorým sa zvyčajne spúšťa inštalácia programov v strome portov.
clean - Vymaže všetky súbory, ktoré boli dočasne vytvorené počas inštalácie danej aplikácie. Rovnako vymaže aj dočasné súbory v adresároch aplikácií, ktoré sú uvedené ako závislosti pre inštalovanú aplikáciu. Príkaz make clean je dobré spustiť aj pred inštaláciou aplikácie zo systému portov. Trvá iba niekoľko sekúnd, nič vlastne neurobí, ale z jeho výpisu sa možno dozvedieť, od ktorých aplikácií závisí aplikácia, ktorá sa ide inštalovať, t.j. ktoré aplikácie budú spolu s touto aplikáciou inštalované - ak, pravda, už inštalované nie sú.
distclean - Vymaže stiahnuté balíky zdrojových kódov danej aplikácie v adresári /usr/ports/distfiles/ a následne volá cieľ clean. Na rozdiel od cieľa clean však cieľ distclean nikdy nemaže balíky zdrojových kódov aplikácií, ktoré boli inštalované alebo kompilované ako závislosti inštalovanej aplikácie.
deinstall - Odinštaluje aplikáciu, ktorá bola predtým zo systému portov nainštalovaná. Je to príkaz podobný príkazu pkg_delete(1).
Na tomto mieste je potrebné upozorniť na dôležitý fakt, že operačný systém FreeBSD udržiava iba jedinú databázu inštalovaných aplikácií, bez ohľadu na to, či boli inštalované zo systému portov alebo z vopred pripravených balíkov. Preto možno aplikáciu inštalovanú zo systému portov príkazom make install odinštalovať príkazom pkg_delete(1), ktorý je určený na správu balíkov. Spravidla by sa ale mali inštalované aplikácie odinštalovávať rovnakým mechanizmom, akým boli inštalované. Rovnako aj príkaz pkg_info(1) vypíše informácie o všetkých aplikáciách: o tých, ktoré boli inštalované z balíkov, aj o tých, ktoré boli kompilované zo systému portov.
package - Ak daná aplikácia nie je nainštalovaná, tak ju nainštaluje, a vyrobí balík tejto aplikácie, ktorý je možné nieskôr inštalovať príkazom pkg_add.
package-recursive - Vyrobí balík tejto aplikácie rovnako ako predchádzajúci cieľ, ale zároveň vyrobí balíky všetkých tých aplikácií, ktoré sú uvedené ako závislosti pre túto aplikáciu.
Niektoré ďalšie ciele sú zaujímavé z hľadiska celého stromu portov, nie pre inštaláciu konkrétnej aplikácie. Najužitočnejšie sú:
readmes - Príkaz make readmes vykonaný v adresári /usr/ports/ vyrobí v tomto adresári súbor README.html, ktorý je základom dokumentácie celého stromu portov prezerateľnej v internetovom prehliadači. Takto sa dajú prezerať informácie o všetkých aplikáciách, ktoré je možné zo sytému portov inštalovať. Vygenerované stránky zároveň obsahujú odkazy na domovské stránky aplikácií. Vykonanie príkazu make readmes trvá dosť dlho, preto je dobré spustiť ho napríklad cez noc. Do vygenerovanej dokumentácie sa dá začítať na dlhé hodiny. Niekedy je až neuveriteľné, aké mnohoraké aplikácie je možné v operačnom systéme FreeBSD používať; niekedy je neuveriteľné už len to, že niekomu vôbec napadlo také aplikácie naprogramovať (napríklad aplikácia, ktorá text prekladá do morseovej abecedy, ktorú následne vypíše na obrazovku, zapíše do textového súboru, uloží do hudobného formátu, alebo priamo prehrá cez zvukovú kartu či pc speaker).
search - Príkaz make search slúži na vyhľadávanie aplikácií v systéme portov. Má dva prídavné parametre, name a key. Napríklad príkaz
% make search name=pop3spustený v adresári /usr/ports/ vypíše informácie o 12 portoch, ktoré majú v názve reťazec „pop3“, pričom sa nezohľadňuje veľkosť písmen. Príkaz
% make search key=pop3naproti tomu prehľadáva aj popisy jednotlivých aplikácií, a preto sa počet nájdených aplikácií zvýši na 41.
Nie ste pri používaní operačného systému FreeBSD obmedzovaní? Nechýbajú vám tam aplikácie, ktoré by ste mali v inom operačnom systéme? Toto sú otázky, ktoré používatelia FreeBSD počúvajú celkom často. Keď ich dostanú, zvyčajne sa záhadne pousmejú, pretože následne môžu tomu, kto im ich položil, vysvetliť jeden z veľkých tromfov tohto operačného systému.
Zvyčajne platí, že programy sú vo svojej spustiteľnej podobe určené pre jeden jediný operačný systém. Ak má byť program spustiteľný vo viacerých operačných systémoch, musí byť naprogramovaný takým spôsobom, aby sa dal preložiť - skompilovať a zlinkovať - do rôznych formátov spustiteľných súborov pre každý z operačných systémov zvlášť. Naprogramovať týmto spôsobom sa zvyčajne bez problémov dajú iba tie najtriviálnejšie programy, ktoré nepoužívajú grafické používateľské rozhranie, nepotrebujú používať systémové volania, signály operačného systému, zdieľanú pamäť, nepotrebujú spúšťať iné programy alebo zisťovať informácie o operačnom systéme. Za skutočnosťou, že aj zložité programy ako je napríklad webový server Apache alebo program na prácu s obrázkami GIMP, fungujú na viacerých operačných systémoch, je zvyčajne enormné úsilie tvorcov týchto programov, nutnosť programovať mnohé časti niekoľkokrát (pre každý operačný systém osobitne) a podobne. Úprava programov, ktoré vedú k možnosti ich prekladu pre viaceré operačné systémy, sa nazýva portovanie alebo portácia.
Jednou z možností, ako spúšťať v jednom operačnom systéme programy určené pre iný operačný systém, je jeho emulácia. Existujú programy, ktoré simulujú kompletný počítač a na takýto virtuálny počítač umožňujú doslova a dopísmena nainštalovať operačný systém a v tomto operačnom systéme používať programy preň určené. Tento prístup je síce priamočiary, ale má mnohé nevýhody. Softvér simulujúci hardvér počítača je komplikovaný a pridáva pre beh samotných používatelských programov dve nezanedbateľné programové vrstvy navyše: v prvom rade je to samotný simulátor virtuálneho počítača a potom je to ešte druhý operačný systém, v ktorom požadovaná aplikácia beží. Na počítači tak beží hostiteľský operačný systém, v ktorom je spustená používateľská aplikácia simulujúca virtuálny počítač, v nej je spustený iný - hosťujúci - operačný systém (v princípe nič nebráni tomu, aby boli hostiteľský a hosťujúci operačný systém rovnaké alebo aby sa líšili len vo svojej verzii) a nakoniec v hostiteľskom operačnom systéme konečne beží požadovaná aplikácia.
Výhodné by však bolo, ak by v hostiteľskom - natívnom - operačnom systéme mohla bežať priamo požadovaná aplikácia určená pre iný operačný systém. Takáto možnosť v určitých prípadoch existuje. Jedná sa o implementáciu aplikačného binárneho rozhrania (ABI - application binary interface) cudzieho operačného systému. Aplikačné binárne rozhranie je rozhranie medzi jadrom operačného systému a používateľskými aplikáciami, cez ktoré im jadro poskytuje svoje služby. Zjednodušene možno povedať, že ak sa v jednom operačnom systéme implementuje aplikačné binárne rozhranie iného operačného systému, bude možné spúšťať programy určené pre oba tieto operačné systémy.
Napriek tomu, že sa implementácia cudzieho aplikačného binárneho rozhrania označuje ako emulácia, o žiadnu emuláciu vo vyššie uvedenom zmysle nejde. V čase vzniku tejto črty v operačných systémoch jednoducho neexistoval lepší termín na jej označenie, a keďže asi neexistuje dodnes, pojem emulácia sa ujal a používa sa.
Pokiaľ ide implementácu cudzích aplikačných binárnych rozhraní vo FreeBSD, je na tom tento operačný systém veľmi dobre. Okrem vlastného ABI sú totiž v jadre FreeBSD implementované tri rôzne cudzie aplikačné binárne rozhrania.
System V Release 4, ktorý bol poslednou významnou vetvou unixu firmy AT&T. Stal sa základom prvých verzií operačných systémov SCO Unix a Solaris. Pre funkčnosť režimov SVR4 aj SCO Unix je potrebné mať komerčne distribuované knižnice týchto operačných systémov, a k týmto knižniciam je zasa potrebné mať príslušné používateľské licencie. Na sprevádzkovanie aplikačného binárneho rozhrania SVR4 stačí mať CD zo systémom Sun Soraris 2.6. V prípade ABI SCO Unix je potrebné príslušné knižnice nakopírovať z bežiaceho systému SCO Unix.
Digital Unix alebo OSF/1 je variantou unixu navrhnutého pre procesory Alpha firmy Digital Equipment. Keďže tieto procesory boli 64-bitové, ani spomínaná emulácia nebude fungovať na 32-bitových počítačoch. (Škoda, že sa procesory Digital Alpha prestali vyrábať; disponovali niekorými zaujímavými črtami, ktorým ani súčasné 64-bitové procesory nemôžu konkurovať. Mám možnosť pracovať na jednom v súčasnosti už archaickom počítači s týmto procesorom, ale jeho odozva a priepustnosť je v porovnaní s počítačmi architektúry IA-32 tej doby skutočne excelentná.) Navyše, implementácia tohto aplikačného binárneho rozhrania je nekompletná, nakoľko operačný systém Digital Unix bol založený na mikrokerneli Mach, ktorého mnohé systémové volania nespĺňajú normu POSIX, ktorej sa FreeBSD drží.
Linux - na rozdiel od predchádzajúcich režimov, ktorých použitie je problematické a teda aj veľmi zriedkavé, implementácia aplikačného binárneho rozhrania jadra operačného systému Linux je tak často v operačnom systéme FreeBSD využívaná, že mnoho používateľov tohto operačného systému ani netuší, že ABI linuxu používa a že niektoré používateľské aplikácie, s ktorými denne pracuje, sú naprogramované, skompilované a zlinkované pre operačný systém Linux.
Najjednoduchším spôsobom spúšťania programov je ich priame odovzdanie jadru operačného systému na vykonanie. Tento spôsob je však veľmi neflexibilný, preto sa s postupom času v unixovských operačných systémoch vyvinul systém, ako rôzne typy programov vykonávať rozličným spôsobom. Preto teraz môžeme priamo spúšťať kompilované programy, interpretovane shellovské, perlovské či pythonovské skripty. V operačnom systéme FreeBSD je táto myšlienka dotiahnutá ešte ďalej a je možné rozpoznávať aj medzi binárnymi typmi spustiteľných súborov a pre iný typ použiť iné aplikačné binárne rozhranie.
Binárny spustiteľný kód väčšiny unixovských operačných systémov je vo formáte ELF, ktorý pôvodne pochádza zo System V UNIXu firmy AT&T a do operačného systému FreeBSD bol prijatý vo verzii FreeBSD 2.2.6. Tento formát obsahuje medzi inými informáciami aj značku (angl. brand), ktorá slúži práve na označenie aplikačného binárneho rozhrania, z ktorým má byť daný program spustený. Značka sa dá zmeniť programom brandelf(1). Týmto programom možno túto známku aj nastaviť ak nie je nastavená, alebo zmeniť, ake je nastavená na nesprávnu hodnotu. Napríklad veľmi veľa programov určených pre operačný systém GNU/Linux má túto známku nastavenú na SVR4.
Súčasti potrebné pre beh linuxových aplikácií pod operačným systémom FreeBSD sa zvyčajne inštalujú už pri inštalácii operačného systému FreeBSD, pokiaľ sa zvolí príslušná voľba v inštalačnom programe. Tieto súčasti sa inštalujú do adresára /usr/compat/linux/, kde sa vytvorí hierarchická adresárová štruktúra podobná adresárovej štruktúre koreňového adresára Linuxu:
Ak spomínané súčasti nie sú nainštalované, je možné ich nainštalovať zo stromu portov alebo z balíkov (viď predchádzajúci diel seriálu). Port linux_base sa nachádza v adresári /usr/ports/emulators/linux_base/. Vychádza z minimálnej inštalácie distribúcie operačného systému Red Hat Linux 7.1. K dispozícii sú aj ďalšie balíky linux_base, ktoré sú založené na distribúciách operačných systémov Red Hat Linux 6.1, Red Hat Linux 8.0, Linux Debian 3.0 či Gentoo Linux. Tieto porty obsahujú skutočne iba základné programy a zdieľané knižnice operačného systému GNU/Linux; ďalšie súčasti možno doinštalovať z portov v adresári /usr/ports/devel/: linux_devtools, linux_libglade, linux_kdump, linux_allegro, linux-glib2 či linux-sdl12.
Teraz je na mieste zodpovedať otázku, ktoré linuxové aplikácie sa zvyknú pod operačným systémom FreeBSD používať. Sú to v prvom rade closed-source aplikácie, ktoré ich výrobcovnia uvoľňujú pre operačný systém GNU/Linux, ale nie pre FreeBSD. Za všetky možno spomenúť napríklad Adobe Acrobat Reader či RealAudio Player. Donedávna to platilo aj pre skvelý internetový prehliadač Opera; v súčasnosti však už tento existuje aj pre FreeBSD. V strome portov možno nájsť viac ako stovku aplikácií určených pre operačný systém GNU/Linux, ktoré je možné vďaka implementácii linuxového aplikačného binárneho rozhrania používať pod operačným systémom FreeBSD. Z najznámejších a najpoužívanejších sú to implementácie Java 2 SDK od IBM, Sunu aj Blackdownu, internetové prehliadače Opera a Mozilla, setiathome, Virtual Machine Ware aj linuxové grafické knižnice či hry. Netreba však zostať obmedzený iba na tie linuxové aplikácie, ktoré je možné inštalovať zo stromu portov či z balíkov. Keďže linux_base je založený na distribúcii Red Hat, je možné inštalovať aj aplikácie z balíkov .rpm, ktorých je veľké množstvo. Vďaka implementácii linuxového ABI možno v operačnom systéme FreeBSD používať aj TeXLive, čo je rozsiahla distribúcia typografického systému TeX s rôznymi nadstavbami (LaTeX, pdfTeX, Omega, nástroje na prácu s formátom PostScript, atď.). V príručke operačného systému FreeBSD možno nájsť zdokumentovaný postup inštalácie linuxových verzií aplikácií Mathematica, Maple, MATLAB, Oracle a SAP R/3. S použitím operačného systému FreeBSD možno teda rátať v školstve i v podnikovom prostredí.
Pre ľudí, ktorí pravidelne používajú viacero operačných systémov, je veľmi príjemné, keď môžu pod každým z nich bez väčších problémov používať tie isté programy a to všetko navyše bez veľkej námahy. V elektronických konferenciách sú časté otázky, či existuje program na nejakú činnosť, ktorý by bežal pod viacerými operačnými systémami, aby napríklad taká triviálna vec, ako písanie jednoduchého textu v textovom editore v dvoch rozličných operačných systémoch nevyžadovala od používateľa učiť sa dve rozdielne sady klávesových skratiek či zvykať si na rozličné zvýrazňovanie syntaxe. V takomto prípade sú veľmi obľúbené programy napísané v programovacom jazyku Java, ktoré sa môžu bez zmeny používať na rôznych operačných systémoch. Napríklad aj tento článok bol pôvodne napísaný v textovom editore jEdit, ktorý je napísaný práve v programovacom jazyku Java a nemá napr. problém s písaním znakov stredoeurópskych jazykov s diakritikou pod FreeBSD, Linuxom ani Windowsom. Niekomu sa to možno zdá triviálne, ale skúšali ste písať diakritiku v editore Emacs pod operačným systémom Windows?
Apropos, Java: Java má špeciálne postavenie vo vzťahu k operačnému systému FreeBSD a k implementácii cudzích aplikačných binárnych rozhraní v tomto operačnom systéme. Java pre platformu FreeBSD nie je totiž firmou Sun podporovaná. Vďaka implementácii aplikačného binárneho rozhrania operačného systému GNU/Linux možno vo FreeBSD použiť linuxovú verziu Java SDK, alebo si možno - pre istotu vďaka priam heroickému úsiliu jedného či dvoch výjovárov FreeBSD - preložiť vlasnú natívnu Javu pre FreeBSD, k čomu je ale potrebná tá linuxová.
Implementácia cudzích aplikačných binárnych rozhraní značne zvyšuje použiteľnosť operačného systému FreeBSD a podstatne rozširuje možnosti jeho nasadenia. Určite nie je všeliekom, ale podstatne uľahčuje život tým používateľom, ktorí sú nútení používať viaceré unixovské operačné systémy - najmä operačný systém GNU/Linux - ale majú svoje obľúbené aplikácie, ktorých sa nechcú vzdať.
Operačný systém FreeBSD je vyvíjaný v prvom rade ako sieťový server a na tento účel je aj najčastejšie používaný. Internet ale už dávno nie je priateľská komunita ľudí, ktorí si navzájom dôverujú, pomáhajú a neškodia, ako tomu bolo v dobe jeho vzniku. Práve naopak, Internet je zlý, zákerný a plný nepriateľov. Zabezpečenie sieťových služieb je na každom serveri také dôležité, že sa mu venuje prevažná väčšina času administrácie serverov. Operačný systém FreeBSD poskytuje mnoho nástrojov na zabezpečenie ním poskytovaných sieťových služieb.
Nijaký všeobecne platný spôsob na zabezpečenie počítača pred útokom zo siete neexistuje. Rovnako sa ani o jednom operačnom systéme nedá defintívne povedať, že je bezpečnejsí ako iný. Zabránenie vykonaniu akejkoľvek nežiadúcej aktivity je v prevažnej miere vecou konfigurácie operačného systému a programov poskytujúcich služby. Zároveň platí, že systém je taký bezpečný, aké je bezpečné jeho najmenej bezpečné miesto. Preto sa odporúča budovať zabezpečenie na princípe cibule, podľa ktorého sa služby obaľujú vrstvami zabezpečenia, aby útočníka, ktorý sa dostane cez vonkajšiu vrstvu, zachytila ďalšia, vnútornejšia vrstva. Odhliadnuc od zabezpečení počítača na úrovni správy celej siete (demilitarizované zóny, virtuálne privátne siete, konfigurovateľné sieťové prepínače spolu s prideľovaním IP adresy na základe hardvérovej adresy sieťovej karty, odtienenie siete za transparentný proxy server či preklad sieťových adries, a pod.), je možné pomocou nástrojov nachádzajúcich sa priamo v operačnom systéme FreeBSD vytvoriť hneď niekoľko vrstiev zabezpečenia:
Filtrovanie paketov - zabezpečenie na sieťovej vrstve. Umožňuje kontrolovať prebiehajúcu komunikáciu na úrovni paketov a veľmi účinne obmedzovať rozsah poskytovaných služieb.
Kontrola spojení - ďalšie zabezpečenie na sieťovej vrstve. Umožňuje definovať pravidlá, podľa ktorých sa nadväzujú alebo odmietajú spojenia, alebo sa vykonávajú rôzne akcie pri nastatí špecifických udalostí pri uzatváraní spojenia.
Konfigurácia služieb - väčšinu bezpečnostných problémov spôsobujú samotné aplikácie poskytujúce konkrétne služby (webový server, mail server, ftp server, klient siete peer to peer). Každá navonok poskytovaná služba potrebuje jasne stanovené pravidlá používania a jej konfigurácia vždy vyžaduje individuálny prístup.
Jail - oddelenie procesov do samostatných virtuálnych priestorov, ktoré má za účel minimalizovať možné škody pri prelomení ochrany jednej z viacerých poskytovaných služieb.
Bezpečnostné úrovne behu systému - znemožnenie vykonania určitých zásahov do nastavení operačného systému v prípade neoprávneného získania opravnení niektorého z používateľov alebo dokonca administrátora.
Kým prvé tri vrstvy zabezpečenia, ktorým sa bude v krátokosti venovať táto časť seriálu, sú určené na zabráneniu prieniku do systému zvonku, posledné dve spomínané majú dva účely: minimalizovať škody spôsobené pri prekonaní ostatných vrstiev a preniknutiu do systému, a zároveň slúžia na obmedzenie rozsahu pôsobnosti lokálnych používateľov.
Pravidlami filtrovania paketov možno veľmi efektívne definovať, ktoré služby a v akom rozsahu budú poskytované. Dobrými pravidlami filtrovania paketov možno zamedziť skenovaniu portov, sťažiť určovanie typu operačného systému, alebo čeliť niekotrým typom útokov založených na vlastnostiach TCP/IP sietí.
S podporou filtrovania paketov je na tom operačný systém FreeBSD veľmi dobre. V čase písania tohto článku stabilná vetva FreeBSD obsahuje dva paketové filtre, ipf(8) a ipfw(8). V čase, keď budete čítať tento článok, bude však už s najväčšou pravdepodobnosťou skutočnosťou stabilná vetva FreeBSD 5, v ktorej k spomínaním dvom paketovým filtorm pribudne pf z OpenBSD. Všetko sú to veľmi kvalitné stavové paketové filtre, ktoré dokážu paket doslova obrátiť naruby a podľa zistených skutočností s ním naložiť mnohorakými spôsobmi.
Pri riešení otázky, ktorý paketový filter použiť, si treba položiť otázku, na aký účel má byť použitý. V zásade každý z uvedených paketových filtrov dokáže uspokojiť požiadavky väčšiny aplikácií a špeciálne črty niektorého z nich sa ukážu výhodné až pri značne špecifických požiadavkách. Často je rozhodujúcim faktom pri výbere jedného z nich spôsob zápisu pravidiel filtrovania, podľa preferencií administrátora. Navyše, možno používať aj viacero z nich súčasne (týka sa to minimálne ipf(8) a ipfw(8)).
Pre podrobnejšie informácie viď man 7 firewall, man 8 ipf, man 8 ipfw a v nich odkazované maunály.
Pod týmto slovenským opisným názvom sa skrýva anglický termín TCP wrapppers, niekedy do slovenčiny prekladaný ako TCP obálky. TCP obálky skutočne akýmsi spôsobom obaľujú sieťové spojenie a môžu ho povoliť či zakázať. Napriek prítomnosti mena protokolu TCP v názve dokáže FreeBSD implementácia kontroly spojení pracovať aj s UDP „spojeniami“ (UDP je nespojovaný protokol a žiadne spojenia sa teda pri ňom nevytvárajú; podľa určitých heuristík je ale možné definovať niečo ako UDP spojenie medzi dvomi stranami komunikujúcimi datagramami).
Princíp tohto bezpečnostného mechanizmu je v tom, že pri uzatváraní spojenia sa robí podrobná kontrola iniciátora tohto spojenia a na základe zistených skutočností sa podľa určených pravidiel reaguje. Zisťované informácie sú podrobnejšie, ako pri paketovom filtri. Robí sa spätný preklad IP adresy, pokúša sa zistiť meno používateľa na vzdialenom systéme, ktorý požiadavku na spojenie inicalizoval a podobne.
Na základe zistených skutočností o požiadavke na spojenie a pravidiel pre TCP wrappers, možno spojenie nielen povoliť alebo odmietnuť, ale možno naň reagovať aj inými spôsobmi. Pri odmientnutí spojenia možno inicátorovi spojenia odoslať krátku správu, zvyčajne so stručným zdôvodnením odmientnutia spojenia (tým môže byť napríklad nesprávne nakonfigurovaný jeho DNS server). Informácie o niektorých spojeniach možno logovať a neskôr analyzovať, pričom možno použiť buď systémové logovanie, alebo si urobiť vlastné. V princípe možno pri príchode každej požiadavky na spojenie vykonať ľubovoľnú akciu: TCP wrappers umožňujú na príchod požiadavky reagovať spustením akéhokoľvek programu alebo skriptu.
Kontrola požiadavky na spojenie prebieha ešte skôr, ako sa táto požiadavka dostane ku konkrétnej požadovanej službe. Táto služba musí byť ale naprogramovaná tak, aby TCP obálky podporovala. Väčšina sieťových služieb, ktoré sú súčasťou operačného systému FreeBSD, túto podmienku spĺňa. Ako príklad možno uviesť sshd(8), ftpd(8) alebo sendmail(8). Najčastejšie sa s pojmom TCP Wrappers spája program inetd(8).
Pre podrobnejšie informácie viď man 5 hosts_access.
Zatiaľ čo bezpečnostné chyby v samotnom operačnom systéme FreeBSD nie sú časté, chyby v rôznych aplikáciách poskytujúcich sieťové služby sa objavujú veľmi často. Je to dané tým, že tieto aplikácie niekedy podstupujú dosť búrlivý vývoj, menia sa a zmenami sa zavádzajú do ich kódu nové chyby. Poskytované služby sú veľmi rôznorodé a rôznorodé sú aj aplikácie zabezpečujúce tieto služby. Je povinnosťou každého administrátora sledovať webové stránky a elektronické konferencie programov, ktoré jeho server používa. V prípade objavenia chyby je treba pohotovo chybu odstrániť, prípadne službu na nevyhnutný čas do uverejnenia spôsobu opravy prestať poskytovať.
Keďže prestať poskytovať službu môže byť niekedy veľmi nepríjemné alebo dokonca nanajvýš nežiadúce, je potrebné s možným objavením bezpečnostnej chyby v aplikácii počítať už pri jej výbere, kompilácii, inštalácii a konfigurácii. Všeobecne platný postup by sa hľadal len ťažko, ale možno sa držať niektorých odporúčaní.
Výber aplikácie - Ak existuje viacero programov, ktoré vedia poskytovať požadovanú službu, treba jeden z nich starostlivo vybrať. Pri tomto výbere je potrebné zvážiť viacero faktov. Dôležité je, aby sa používala aplikácia v stabilnej verzii, ktorá je už do určitej miery odskúšaná a neboli v nej nájdené chyby. Nemenej dôležité je, aby sa jednalo o aplikáciu, ktorá sa aktívne udržiava, t.j. že sa nejedná o aplikáciu, ktorej sa nikto niekoľko rokov ani nedotkol. K tomuto pravidlo - ako ku každému pravidlu - môžu existovať aj výnimky. Na tomto mieste treba ako príklad uviesť mailový server qmail, ktorý je už viacero rokov bez zmien. Tieto zmeny ale neboli potrebné preto, lebo tento program plní funkcionalitu, ktorú mu jeho autor Daniel J. Bernstein stanovil a zmysle pridávania nových čŕt sa qmail ďalej svojím pôvodným autorom nevyvíja a bezpečnostná chyba, ktorú by program obsahoval a vyžadovala by opravu, zatiaľ nikto neobjavil. Ďalšie kritérium výberu aplikácie sa týka jej minulosti. Tí, ktorí testujú počítačové programy, vedia, že chyby v programoch majú tendenciu sa zoskupovať. Ak teda niektorý program v minulosti obsahoval veľa chýb, je pravdepodobné, že sa ešte nejaké objavia. Toto zhlukovanie chýb je zvyčajne spôsobené zlým štýlom programovania autora alebo autorov programu. Strom portov v operačnom systéme FreeBSD poskytuje skutočne pestrý výber programov poskytujúcich mnohé sieťové služby. Niektoré sieťové služby (FTP, NTP, SMTP, SSH) sú dokonca integrované do samotného operačného systému FreeBSD.
Kompilácia aplikácie - V operačnom systéme FreeBSD je bežné inštalovať aplikácie zo stromu portov. Pri kompilácii je zvyčajne možné určiť, ako sa má daná aplikácia skompilovať, ktoré podsystémy sa do aplikácie nemajú zahrnúť, alebo ktoré črty aplikácie majú zostať vypnuté. Ako príklad možno uviesť POP3 server qpopper, pri kompilácii ktorého možno zvoliť, aby sa medzi podporované črty nezahrnula možnosť meniť jeho globálnu konfiguráciu inividuálnymi používateľskými nastaveniami.
Inštalácia aplikácie - Pre nietoré aplikácie je vhodné zvážiť, či budú inštalované bežným spôsobom, alebo sa na ne použije dodatočné zabezpečenie napríklad ich uzavretím do jail-u (viď nižšie), ako sa obmedzí možnosť prístupu k nim pomocou filtrovania paketov, alebo aké pravidlá je pre ne možné definovať pomocou TCP Wrappers.
Konfigurácia aplikácie - Každú aplikácu poskytujúcu sieťové služby možno zvyčajne rôznymi spôsobmi konfigurovať. Nikdy sa netreba uspokojiť, ak služba nainštalovaná podľa jednoduchého návodu v manuáli „nejako“ funguje. Je potrebné zoznámiť sa s jej voľbami, možnosťami obmedzení funkcionality a pod. a tieto aplikovať. Ak má aplikácia modulárnu architektúru, vždy treba použiť čo najmenší počet modulov, ktoré ešte dokážu zabezpečiť požadovanú funkcionalitu. Jedným príkladom za všetky môže byť webový server Apache, ktorý má množstvo modulov, z ktorých pre prevádzku jednoduchého servera stačí len niekoľko málo. Ak sa na prevádzku použije len málo základných dobre odskúšaných modulov, je veľmi pravdepodobné, že veľa bezpečnostných chýb nájdených v super-experimentálno-kozmetických moduloch sa prevádzky servera vobec nebude týkať. Tým sa zníži riziko tak napadnutia služby, ako aj čas nedostupnosti služby počas odstraňovania prípadne nájdenej chyby.
Operačný systém - akýkoľvek - poskytuje zabezpečenie na všeobecnej úrovni. Naproti tomu jednotlivé aplikácie disponujú (alebo by aspoň mali disponovať) špecifickými mechanizmami na zabezpečenie vlastnej bezpečnosti a zabrániť tak svojmu zneužitiu. Ani veľmi dobre zabezpečený operačný systém nie je nič platný, ak nedbanlivo nakonfigurovaný webový či mailový server otvorí do systému ľahko zneužiteľnú bezpečnostnú dieru.
O jaile a bezpečnostných úrovniach behu systému bude nasledujúce pokračovanie seriálu.
Zatiaľ čo minulý diel seriálu o zabezpečení sieťových služieb sa týkal opatrení zabezpečujúch poskytované služby proti možnému zneužitiu, tento diel sa týka opatrení minimalizujúcich možnosť spôsobenia škôd v systéme po zneužití niektorej služby, alebo možnosť spôsobenia škôd lokálnymi používateľmi. Zatiaľ čo minulý diel sa týkal prístupov viac či menej spoločných pre všetky operačné systémy unixovského typu, tento diel bude špecifický pre operačný systém FreeBSD.
Mechanizmy obmedzovania lokálnych používateľov a zabránenie škodám pri zneužití niektorej s poskytovaných služieb sú príbuzné. Ak totiž dôjde k zneužitiu poskytovanej služby – napríklad kvôli neošetrenej chybe v ftp alebo webovom serveri – prvým krokom útočníka je získanie oprávnení administrátora alebo používateľa na napadnutom systéme. Až potom si v rámci možností poskytnutých napadným systémom môže začať inštalovať spätné vrátka, trójske kone, alebo ohroziť ďalšie bežiace služby. Operačný systém FreeBSD má miekoľko dômyselných spôsobov, aby možnosti poskytnuté útočníkovi boli čo najmenšie.
Anglický výraz jail znamená žalár, ale v kontexte, v ktorom bude ďalej používaný, sa nezvykne prekladať. Toto meno je veľmi výstižné: umožňuje proces alebo skupinu procesov uzavrieť do v celku komfortného žalára. Konfortného preto, lebo tento žalár poskytuje procesom vo svojom vnútri takmer všetko, čo by im poskytoval aj operačný systém FreeBSD sám o sebe, až na to, že procesy nemôžu z tohto žalára vykĺznuť von, ale musia v ňom zostať uväznené, nech by sa už vo vnútri robilo čokoľvek.
Jail je do krajnosti dotiahnutý princíp zmeny koreňového adresára pre nejaký proces, známy ako chroot (z anglického change root). Do krajnosti je tento princíp dotiahnutý tým, že vo vnútri hostiteľského systému je vytvorená ďalšia inštancia operačného systému, ktorej pôsobnosť je obmedzená na vlastný domovský adresár, má vlastné inštalované programy, vlastné pripojenie na sieť aj vlastnú konfiguráciu a vlastné všetky používateľské procesy. Naproti tomu, všetky procesy bežiace na úrovni jadra operačného systému bežia len v hostiteľskom systéme, ktorý tak spravuje všetky procesy – svoje, aj procesy všetých jailov v ňom bežiacich.
Priestor jailu na pevnom disku bude obmedzený na vyhradený adresár a jeho podadresáre. Vhodné je na jail vyhradiť samostatnú partíciu, aby nemohli procesy v jaile naplniť disk hostiteľského systému. Existujú síce aj iné spôsoby, ako sa tomu dá zabrániť, ale vyhradenie vlastnej partície pre jail sa môže ukázať ako výhodné aj z iných dôvodov. Okrem toho, že sa zabráni akejkoľvek interferencii s hostiteľským systémom, možno napríklad pripojiť partíciu jailu s inými parametrami ako ostatné partície v hostiteľskom systéme.
Oddelenie procesov v jaile od procesov hostiteľského systému a procesov v iných jailoch zabezpečí jadro operačného systému. Keďže ale nie je možné vytvoriť pre každý jail oddelený pamäťový priestor (bolo by to jednak náročné a zároveň by to viedlo k veľmi neefektívnemu využívaniu pamäte, najmä pri právdzke viacerých jailov na jednom hostiteľskom systéme), nie je odporúčané používať v jaile zdieľanú pamäť (shared memory), pretože práve prostredníctvom zdieľanej pamäte by mohli pamäťové priestory jailov a/alebo hostiteľského systému interferovať. Štandardne je preto použitie zdieľanej pamäte vo vnútri jailov znemožnené; povoliť ho možno nastavením sysctl premennej jail.sysvipc_allowed na hodntou 1.
Oddelenie jailu po sieťovej stránke vyžaduje pre každý jail jedinečnú IP adresu, ku ktorej má jail vyhradený prístup. Hostiteľský systém musí mať prístup ku všetkým IP adresám, pretože len cez jadro operačného systému hostiteľského systému možno obsluhovať sieť, ale hostiteľský systém sám nemôže na úrovni aplikácií používať IP adresu pridelenú jailu (hostiteľský systém bude mať okrem svojej IP adresy priradené aj IP adresy všetkých jailov vo svojom vnútri pomocou direktívy ifconfig_<rozhranie>_alias<cislo> v súbore /etc/rc.conf). V praxi to znamená, že v hostiteľskom systéme musia všetky jeho programy používať iba IP adresu hostiteľského systému a žiadne nesmí používať IP adresu vyhradenú pre jail. Niektoré sieťové služby sú štandardne nakonfigurované tak, že prijímajú požiadavky na všetkých IP adresách, ktoré sú v systéme nakonfigurované. Väčšinu služieb možno nakonfigurovať tak, aby používala iba vyhradené IP adresy, a to buď parametrom príkazového riadku, alebo úpravou konfiguračného súboru. Pre sshd je to direktíva ListenAddress v konfiguračnom súbore /etc/ssh/sshd_config, pre webový server Apache je to povinná direktíva Listen v konfiguračnom súbore httpd.conf, pre inetd a ftpd parameter príkazového riadku -a. Problém môže nastať napríklad pri službe ntpd, ktorá vždy používa všetky dostupné IP adresy. Existujú však alternatívne implementácie tejto služby, ktoré umožňujú selektívne používanie dostupných IP adries.
Štandardne môžu procesy vo vnútri jailu komunikovať iba prostrednícvom UNIX a IPv4 soketov. Nastavením sysctl premennej jail.socket_unixiproute_only na hodnotu 0 možno procesom v jaile umožniť komunikáciu aj inými protokolmi. Poslednou sysctl premennou priamo sa vzťahujúcou k jailu, je premenná jail.set_hostname_allowed s predvolenou hodnotou 1. Nastavením tejto hodnoty na 0 možno zabrániť zmene mena počítača vo vnútri jailu. Meno virtuálneho počítača vo vnútri jailu sa nastavuje pri jeho spustení a zvyčajne nie je dôvod, aby bolo menené.
Zostavenie jailu je ekvivalentné zostaveniu operačného systému FreeBSD zo zdrojových kódov s tým rozdielom, že celý systém sa zostaví do adresára, v ktorom má byť jail umiestnený. Predpokladajme, že na umiestnenie jailu sme vytvorili adresár /JAIL/. Zdrojové kódy na zostavenie jailu musia byť totožné so zdrojovými kódmi, z ktorých je zostavený hostiteľský operačný systém. Na zostavenie jailu do vyhradeného adresára sú potrebné dva príkazy spustené v adresári /usr/src/:
# make world DESTDIR=/JAIL # make installworld DESTDIR=/JAILV adresári /JAIL/ sa tým vytvorí adresároví strom, ktorý sa len nepatrne líši od adresárového stromu operačného systému FreeBSD po jeho inštalácii. Tento adresárový strom zaberá približne 130 MB (merané pod FreeBSD 4.10-RELEASE-p2).
Každý jail má vlastný strom /etc/. Skopírovanie adresárového stromu /etc/ prislúchajúceho k zdrojovým kódom, z ktorých je jail zostavený, zabezpečí vykonanie príkazu
# make distribution DESTDIR=/JAIL NO_MAKEDEV_RUN=yesv adresári /usr/src/etc/. Po vytvorení adresára /etc/ je potrebné vytvoriť uzly zariadení. Pretože jail nevyžaduje existenciu všetkých uzlov zariadení, ktoré sú prítomné v kompletnom systéme FreeBSD, má skript MAKEDEV na túto akciu vyhradený argument jail. Uzly zariadení v jaile sa vytvoria, keď sa v adresári /JAIL/dev/ spustí príkaz
# sh MAKEDEV jailDôležitá vec, ktorá zatiaľ v jaile chýba, je proc filesystem. Na patričné miesto vo vnútri jailu ho možno pripojiť príkazom
# mount -t procfs proc /JAIL/proca prípadne možno príslušný riadok pridať do súboru /etc/fstab hostiteľského systému, aby sa pripojil do jailu aj po reštarte počítača. Nakoniec zostáva vytvoriť v adresári /JAIL/etc/ prázdny súbor /etc/fstab a pripravený jail je takmer ekvivalentný novej inštalácii operačného systému FreeBSD. Preto aj v nútri jailu treba urobiť patričné poinštalačné úpravy, najmä upraviť súbor /JAIL/etc/rc.conf, povoliť, respektíve zakázať príslušné služby a nakonfigurovať ich.
Jail sa spúšťa príkazom jail(8), ktorý má nasledujúcu syntax:
jail <adresar jailu> <meno pocitaca pre jail> <IP adresa jailu> <prikaz>Na konfiguráciu jailu vo vnútri jailu (napríklad pridávanie používateľov) možno použiť príkaz
jail /JAIL jail.example.org 192.168.0.2 /bin/tcshčím sa spustí shell vo vnútri vytvoreného jailu. Tento režim je veľmi podobný jednopoužívateľskému režimu operačného systému FreeBSD, avšak s tým rozdielom, že už je spustená sieť. Keďže spustený shell je jediný proces v jaile, po jeho ukončení sa ukončí aj jail. V reálnej prevádzke je situácia o trochu komplikovanejšia: jail sa odporúča spúšťať príkazom
jail <adresar jailu> <meno pocitaca pre jail> <IP adresa jailu> /bin/sh /etc/rcPri takomto štarte v jaile urobí približne to, čo sa urobí v reálnom operačnom systéme FreeBSD po prechode do viacpoužívateľského režimu. Zvyčajne sa zobrazí niekoľko chybových hlásení; zvyčajne súvisia s nastavovaním systémových parametrov (napríklad sysctl premenných), ktoré nemožno z vnútra jailu meniť. Do takto spusteného jailu sa potom možno prihlásiť cez ssh, inštalovať v ňom programy, konfigurovať ich a používať.
Programy ako shutdown(8) alebo reboot(8) sú vo vnútri jailu na jeho zastavenie nepoužiteľné. Ak vo vnútri jailu bežia nejaké služby, je ich treba ukončiť na to určenými skriptami. Keď sú služby ukončené, na zastavenie jailu treba už len poslať hlavnému procesu jailu signál na ukončenie:
# kill -15 -1Toto treba urobiť vo vnútri bežiaceho jailu, nie v hostiteľskom systéme; tam by to malo pravdepodobne veľmi nežiadúce účinky.
Bezpečnostné úrovne behu operačného systému FreeBSD (anglicky securelevels) nie sú totožné s úrovňami behu systému (anglicky runlevels), ktoré sú známe z unixovských a unixových operačných systémov, ktoré ich zdedili zo Unixu System V; úrovne behu systému v zmysle System V sa v rodine operačných systémov BSD nenachádzajú.
Bezpečnostné úrovne predstavujú nastavenia jadra operačného systému FreeBSD, ktoré menia jeho správanie sa tým spôsobom, že znemožňujú vykonanie niektorých operácií, a to tak bežným použítaveľom, ako aj administrátorovi. Hneď na začiatku treba poznamenať, že bezpečnostné úrovne behu systému sú dvojsečnou zbraňou – na jednej strane značne obmedzujú možnosti prípadného útočníka alebo lokálneho používateľa škodiť v systéme, na strane druhej komplikujú administráciu systému, nakoľko obmedzenia spojené s bezpečnostnými úrovňami sa vzťahujú aj na administrátora.
Bezpečnostných úrovní operačného systému FreeBSD je spolu päť a označujú sa číslami -1, 0, 1, 2 a 3. Vyššie číslo znamená väčšie obmedzenia v systéme s úrovňou behu nastavenou na príslušnú úroveň. Štandardne sa úrovne behu systému nepoužívajú. Zapnúť ich možno uvedením hodnoty kern_securelevel_enable=“YES“ v súbore /etc/rc.conf. Hodnota bezpečnostnej úrovne behu systému sa zvolí ďalšou hodnotou v /etc/rc.conf, a to kern_securelevel=“2“. Bezpečnostné úrovne možno zvyšovať kedykoľvek počas behu systému nastavovaním sysctl premennej kern.securelevel na príslušné hodnoty. Znížiť bezpečnostnú úroveň behu systému možno iba v jednopoužívateľskom režime; ak by bolo možné znížiť bezpečnostnú úroveň v normálnom viacpoužívateľskom režime, mohol by to urobiť aj útočník.
Securelevel -1 – Východzia hodnota bezpečnostnej úrovne behu operačného systému FreeBSD, ktorá vypína všetky obmedzenia spojené s bezpečnostými úrovňami.
Securelevel 0 – Táto bezpečnostná úroveň sa používa pri zavádzaní systému, ktorý má zapnuté používanie bezpečnostných úrovní. Po prechode systému do viacpoužívateľského režimu sa táto úroveň automaticky zvýši na 1. Nie je žiadny dôvod ju používať explicitne.
Securelevel 1 – Nie je možné načítavať ani odoberať moduly jadra operačného systému. Programy nemôžu zapisovať priamo do systémovej pamäti prostredníctvom zariadení /dev/mem a /dev/kmem. Nemožno pristupovať priamo k pripojeným diskom, súbory možno zapisovať iba cez štandardné rozhranie jadra, a teda nemožno napr. formátovať disky. Nemožno spustiť X Windows system. Nemožno meniť niektoré príznaky súborov na súborovom systéme UFS (viď nižšie).
Securelevel 2 – Všetky obmedzenia predchádzajúcej úrovne zostávajú v platnosti. Navyše nemožno priamo zapisovať do pripojených aj nepripojených súborových systémov a nemožno upraviť systémový čas o viac ako o jednu sekundu naraz.
Securelevel 3 – Všetky obmedzenia predchádzajúcej úrovne zostávajú v platnosti. Navyše nemožno meniť pravidlá paketových filtrov IPF a IPFW. Preto sa táto úroveň behu systému volá aj zabezpečený sieťový režim.
Okrem prístupových práv, ktoré sú zhodné na väčšine unixovských súborových systémov, má súborový systém UFS používaný na operačnom systéme FreeBSD ešte tzv. príznaky súborov, ktoré môžu hrať dôležitú úlohu pri zabezpečovaní súborov práve v kombinácii s bezpečnostnými úrovňami behu systému, zmienenými vyššie. Príznaky súborov totiž určujú, akými spôsobmi je alebo nie je možné so súbormi narábať, a pri bezpečnostnej úrovni behu vyššej ako 1 nie je možné niektoré z týchto príznakov meniť. Zoznam všetkých príznakov súborov, ktoré možno nastavovať, je v manuálovej stránke programu chflags(1), ktorým možno príznaky nastavovať alebo rušiť. Priamo bezpečnostné funkcie môžu mať nasledujúce z nich:
schg – Systémový príznak pre nemeniteľný súbor. Tento príznak môže meniť iba administrátor. Príznak nemožno meniť, ak systém beží v bezpečnostnej úrovni 1 alebo vyššej. Súbor, ktorý má nastavený tento príznak, nie je možné žiadnym spôsobom meniť, pridávať k nemu údaje, ani ho zmazať. Štandardne je týmto príznakom chránené jadro operačného systému FreeBSD.
sappnd – Systémový príznak pre súbor, ku ktorému je možné údaje iba pridávať. Tento príznak môže meniť iba administrátor. Príznak nemožno meniť, ak systém beží v bezpečnostnej úrovni 1 alebo vyššej. Jeho rozumné použitie je napríklad na logovacie súbory.
sunlnk – Systémový príznak pre súbory, ktoré nemožno zmazať. Tento príznak môže meniť iba administrátor. Príznak nemožno meniť, ak systém beží v bezpečnostnej úrovni 1 alebo vyššej. Tento príznak zabráni iba vymazaniu súboru, nezabráni jeho prepísaniu.
uchg – Používateľský príznak pre nemeniteľný súbor. Tento príznak môže nastavovať administrátor alebo vlastník súboru. Príznak je možné meniť kedykoľvek. Nastavenie tohto príznaku má za úlohu ochrániť používateľa pred nechcenými chybami.
uappnd – Používateľský príznak pre súbor, ku ktorému možno údaje iba pridávať. Tento príznak môže nastavovať administrátor alebo vlastník súboru. Príznak je možné meniť kedykoľvek. Používa sa na ochranu súborov so záznamami behu používateľských aplikácií.
uunlnk – Používateľský príznak pre súbor, ktorý používateľ nemôže zmazať. Tento príznak môže nastavovať iba administrátor. Rovnako administrátor môže týmto príznakom označený súbor zmazať. Príznak možno nastavovať kedykoľvek. Tento príznak je možné používať na zabránenie neúmysleným chybám používateľov.
Príznaky súborov si možno zobraziť vo výpise programu ls voľbou -o:
# /bin/ls -lo /kernel -r-xr-xr-x 1 root wheel schg 1697600 Sep 22 06:44 /kernelS uvedeného výpisu vidieť, že súbor s jadrom operačného systému má nastavený príznak schg. Pre súbory, ktoré nemajú nastavený žiadny z príznakov, je na danom mieste pomlčka:
# /bin/ls -lo /kernel.GENERIC -r-xr-xr-x 1 root wheel - 4343925 May 26 00:47 /kernel.GENERICVšetky články o operačnom systéme FreeBSD uverejnené v rámci tohto seriálu počas uplynulého roku sa vzťahovali na FreeBSD verzie 4, pokiaľ nebolo vyslovene uvedené inak. Keďže v čase písania tohto článku je takpovediac „na spadnutie“ vydanie operačného systému FreeBSD 5.3, ktorý má byť ako prvý z vetvy 5 určený aj na produkčné nasadenie, ďalšie články sa budú vzťahovať práve na túto novú vetvu operačného systému FreeBSD, ktorá prináša veľké množstvo zmien.
V operačnom systéme FreeBSD existuje iba jediný súborový systém, ktorý je považovaný za jeho natívny, a je teda ako jediný odporúčaný na používanie pod týmto operačným systémom. Tento operačný systém sa nazýva Berkeley Fast File System, ale častejšie sa označuje skratkou UFS, ktorá znamená Unix File System, pretože sa používa na všetkých unixových a unixovských operačných systémoch, ktoré nedisponujú vlastným súborovým systémom.
S príchodom vetvy 5 operačného systému FreeBSD sa začala používať nová verzia súborového systému označovaná ako UFS2. Bola vyvinutá, aby odstránila niektoré obmedzenia pôvodného súborového systému UFS. Je teda vhodná príležitosť dozvedieť sa niečo tak o pôvodnom súborovom systéme, ako aj o zlepšeniach v novej verzii.
Dva hlavné problémy, s ktorými by sa mal každý súborový systém vedieť vyrovnať, je fragmentácia súborov a konzistencia údajov. Prvý problém nastáva, keď sú súbory uložené na disku tak, že nie sú všetky ich časti uložené súvisle za sebou. Tento jav môže značne znižovať rýchlosť čítania súborov, pretože čítacie hlavičky sa musia neustále presúvať na iné miesta nad povrchom platní pevného disku. V najnepriaznivejšom prípade môže fragmentácia veľkého súboru znížiť rýchlosť jeho čítania na polovicu oproti stavu, keď by bol ten istý súbor uložený na disku nefragmentovane. Dôležité však je, aby sa neudržiavali celistvé iba súbory, ale aj voľné miesto – len tak možno zabrániť fragmenovaniu súborov, ktoré budú zapísané v budúcnosti.
Problém druhého typu – inkonzistencia údajov – nastáva, ak je z najrozličnejších príčin (najčastejšie výpadok napájacieho napätia) predčasne prerušená operácia zápisu údajov na pevný disk. Toto môže mať aj bezpečnostné dôsledky; predstavme si nasledujúcu situáciu: Používateľ A vytvorí súbor, uloží do neho svoje údaje a potom súbor zmaže. Používateľ B vyrobí súbor, súborový systém umiestni súbor na rovnaké miesto, kde bol predtým súbor používateľa A. Ak dôjde k výpadku prúdu v okamžiku, keď už boli na disk zapísané alokačné informácie súboru používateľa B, ale ešte neboli zapísané jeho údaje, po novom štarte bude používateľ B vo svojom súbore vidieť údaje používateľa A. Kvôli tomuto problému existujú rozličné nástroje na mazanie súborov (i keď podľa niektorých jazykovedcov sa súbory nemažú ale mastia, ale to len na okraj), ktoré súbor najskôr prepíšu nejakými údajmi (najčastejšie nulami alebo náhodnými znakmi), až potom súbor zmažú. Zmazanie súboru totiž znamená iba označenie miesta na disku, ktoré súbor zaberal, za voľné, neznamená zničenie jeho obsahu. Príkaz na mazanie súborov rm(1) prepisuje mazaný súbor pred jeho zmazaním pri použití voľby -P.
Súborový systém začína tzv. superblokom a ďalej je členený na skupiny. Každá skupina obsahuje záložnú kópiu superbloku, nakoľko tento má pre správne fungovanie súborového systému kľúčovú úlohu a jeho strata by viedla k strate všetkých údajov uložených na súborovom systéme. Rozdelenie na skupiny umožňuje ukladať údaje na disku tak, aby mohli byť metaúdaje o súboroch uložené blízko skutočných údajov; pri čítaní sa tak optimálne využije prednačítavanie údajov z pevného disku. Rozdelenie na skupiny umožňuje zároveň implementovať algoritmus alokácie miesta na disku tak, aby sa čo najmenej fragmentovalo voľné miesto na disku. Určitá časť miesta na súborovom systéme môže slúžiť ako rezerva pre administrátora. Predvolená hodnota je 8 percent z kapacity súborového systému. Hodnotu je možné zmeniť pri vytváraní súborového systému programom newfs(8) použitím voľby -m, alebo pomocou rovnakej voľby programu tunefs(8). Toto miesto zostane rezervované pre procesy spúšťané administrátorom, procesy bežných používateľov nebudú môcť rezervované miesto používať. Zatiaľ čo na súborových systémoch, kde sú uložené údaje používateľov, je vhodné túto rezervu nastaviť na 0 percent (pretože 8 percent zbytočne rezervovaných na partícii, kde to nemá význam, môže byť stratou, ktorá nie je zanedbateľná), je veľmi vhodné ju ponechať nastavenú na nenulovú hodnotu na tých súborových systémoch, kde sú uložené adresáre /, /var/, /tmp/, /var/log/ či /var/tmp/. Ak nejaký proces spustený administrátorom zaplní aj toto vyhradené miesto, vo výpise programu df(1) sa zobrazí, že je súborový systém zaplnený na viac ako 100%.
Súborový systém UFS je ďalej členený na bloky. Predvolená veľkosť bloku je 16 kB a dá sa meniť pri vytváraní súborového systému pomocou voľby b programu newfs(8). Ak je veľkosť bloku príliš malá, zaberajú na disku zbytočne veľa miesta metaúdaje (takzvané i-uzly, z anglického i-nodes) veľkých súborov. Naopak, ak je naopak veľkosť bloku príliš veľká, dochádza k plytvaniu miestom pri uložení malých súborov, pretože i jednobajtový súbor zaberá celý blok. Zvyčajne však treba počítať s uložením takých súborov na jednom súborovom systéme, ktorých veľkosti sú od niekoľkých bajtov až po stovky megabajtov alebo dokonca gigabajty. Súborový systém UFS rieši naznačené problémy relatívne jednoducho a napriek tomu dostatočne efektívne a elegantne: Veľkosť bloku je relatívne veľká (v porovnaní s inými súborovými systémami), čím sa efektívne ukladajú veľké súbory. Niektoré bloky sú rozdelené na menšie fragmenty, do ktorých sa ukladajú malé súbory, prípadne aj „konce“ veľkých súborov, ktoré nezaberajú celý blok, čím sa odstraňuje plytvanie miestom pri ukladaní malých súborov. Veľkosť fragmentu sa dá nastaviť pri vytváraní súborového systému pomocou voľby -f programu newfs(8). Veľkosť fragmentu musí byť mocninou dvojky v rozsahu od jednej osminy bloku do veľkosti bloku. Najlepšie je, ak je veľkosť fragmentu rovná práve jednej osmine veľkosti bloku; vtedy môže byť jeden blok rozdelený na čo najmenšie fragmenty. Predvolená veľkosť fragmentu je 2048 bajtov. S delením bloku na fragramenty súvisia aj ďalšie vo FreeBSD implementované optimalizácie: Pri rozširovaní súboru umiestneného vo fragmente sa buď alokuje väčší fragment (optimalizácia na využitie miesta na disku, ktorá je ale náročná na vyhľadanie alebo vytvorenie fragmentu správnej veľkosti), alebo sa rovno alokuje celý blok (optimalizácia na rýchlosť). Jadro operačného systému FreeBSD môže samé medzi týmito prioritami prepínať: Ak je vyhradená rezerva voľného miesta na disku menšia ako 5 percent, alebo ak je voľného miesta na disku menej ako je polovica s vyhradenej rezervy, zapne sa optimalizácia na miesto a do systémových logov sa zaloguje nasledujúci záznam:
optimization changed from TIME to SPACE
Ak sa miesto na pevnom disku uvoľní a začnú sa intenzívne vykonávať operácie zápisu, jadro operačného systému FreeBSD prepne algoritmus na optimalizáciu na rýchlosť.
Pri vyhľadávaní voľných blokov na zapísanie údajov súboru sa alokačný algoritmus snaží najskôr zaplniť aktuálnu skupinu. Keď je táto zaplnená, vyhľadáva sa ďalšia skupina, do ktorej možno zapisovať, pomocou tzv. kvadratického rehašovania: súborový systém hľadá voľné bloky v nasledujúcej skupine, potom v skupine o dve vzdialenej, potom v skupine o štyri vzdialenej, atď. Snaha zaplniť skupinu síce vedie k fragmentácii súboru, ale na druhej strane udržuje relatívne nefragmentované voľné miesto, čo je dôležité s ohľadom na zápis nových súborov v budúcnosti. Kvadratické rehašovanie zasa zaisťuje relatívne dobrú distribúciu údajov na súborovom systéme v prípade, že dôjde k súčasnému zapisovaniu dvoch veľkých súborov v tom istom adresári: bez kvadratického rehašovania by sa tieto súbory na súborovom systéme striedali po blokoch, s kvadratickým rehašovaním sa síce tiež striedajú, ale po čoraz väčších úsekoch.
Jadro operačného systému FreeBSD robí ďalšiu optimalizáciu zápisu s účelom zabrániť fragmentácii súborov ešte pred ich odoslaním na zápis. Optimalizácia sa uskutočňuje pomocou tzv. klastrovania zápisu: údaje, ktoré sa majú zapisovať, sa skladajú do klastrov s veľkosťou až 128 kB, pričom sú pri umiestňovaní do týchto klastrov preusporiadavané tak, aby neboli fragmentované. Klastre sa potom jednorazovo zapisujú na súborový systém.
Okrem vyššie spomínaných optimalizácií má jadro operačného systému FreeBSD ešte ďalšie schopnosti: snaží sa ukladať malé súbory veľmi blízko (do rovnakej skupiny) s ich adresármi a i-uzlami a dokáže využiť znalosť fyzickej geometrie pevného disku (t.j. počty stôp, čítacích hláv a sektorov, počet otáčok disku za minútu, atď.) na optimalizáciu uloženia údajov na disk tak, aby ich následné načítanie bolo čo najrýchlejšie. Posledne menovaná optimalizácia v súčasnosti už nemá význam, nakoľko všetky pevné disky robia prednačítavanie údajov samé a o svojej vnútornej geometrii zvyčajne „klamú“, aby tak obišli niektoré obmedzenia BIOS-u.
Vstupno-výstupné operácie sú v bežných výpočtových systémoch jedny z najpomalších. Operačné systémy preto disponujú rôznymi mechanizmami, ako ich čo najviac zrýchliť. Jeden zo spôsobov, ako vstupno-výstupné operácie urýchliť, je používať prednačítavanie údajov pri čítaní a oneskorovanie zápisu údajov: údaje sa dočasne umiestňujú v operačnej pamäti, namiesto toho, aby sa zapísali na pevný disk. Až keď sa nazbiera dostatok údajov, tieto sa jednorazovo zapíšu. Ak však dôjde napríklad k výpadku napájania ešte predtým, ako sa táto vyrovnávacia pamäť zapíše, môžu byť údaje na pevnom disku nekonzistentné. Operačný systém zvyčajne dokáže určiť, či bol súborový systém odpojený správne. Ak tomu tak nebolo, tak skôr, ako sa súborový systém pri ďalšom štarte operačného systému pripojí, skontroluje sa nejakým nástrojom – vo FreeBSD je to fsck(8), ktorý zvyčajne dokáže uviesť do konzistentného stavu všetky riadiace štruktúry na súborovom systéme (i-uzly a záznamy v adresároch), nie už však samotné údaje. V súboroch teda nemusia byť niektoré údaje zapísané, a – ako bolo naznačené vyššie – súbory tak môžu obsahovať cudzie údaje, ktoré boli predtým v iných súboroch, ktoré boli zmazané.
Najjednoduchším a najstarším používaným spôsobom, ako minimalizovať možnosť nastania inkonzistentného stavu na súborovom systéme, je používať tzv. synchrónny zápis údajov. Pri synchrónnom zápise sa údaje neukladajú dočasne v operačnej pamäti, ale vždy sa priamo zapisujú na súborový systém. Pri tomto spôsobe môže tiež dôjsť k inkozistencii údajov, ale nemôže sa stať, ale tento nekonzistentný stav nebude viesť k strate údajov. Program fsck(8) dokáže po nesprávnom odpojení správne uvoľniť stratené bloky a i-uzly. Synchrónny spôsob zápisu má tú nevýhodu, že zápis údajov je niekoľkonásobne pomalší, ako pri asynchrónnom zápise. Navyše, pevné disky zvyčajne disponujú vlastnou vyrovnávacou pamäťou – zapisované údaje najskôr umiestnia do tejto pamäte, operačnému systému oznámia, že údaje sú už zapísané, a až potom ich skutočne zapisujú na pevný disk. V operačnom systéme FreeBSD možno hardvérovú vyrovnávaciu pamäť IDE pevných diskov vypnúť nastavením sysctl premennej hw.ata.wc na hodnotu 0 v konfiguračnom súbore /boot/loader.conf. Vypnutie hardvérovej vyrovnávacej pamäte má však ešte drastickejší dopad na rýchlosť zápisu, ako nepoužívanie vyrovnávacej pamäte v operačnom systéme. Navyše, niektoré IDE pevné disky „klamú“ jadro operačného systému o nepoužívaní svojej vyrovnávacej pamäte zápisu, najmä ak je táto vyrovnávacia pamäť viacúrovňová – vtedy sa zvyčajne vypne iba vyrovnávacia pamäť na vyššej úrovni, ale určitá vyrovnávacia pamäť na nižšej úrovni je stále zapnutá.
Ďalšia metóda na zabezpečovanie konzistencie údajov súborového systému v prípade výpadku, ktorá je špecifická pre UFS, sa nazýva SoftUpdates. Operačný systém dohliada nad používaním vyrovnávacej pamäte zápisu takým spôsobom, aby boli dodržané závislosti medzi údajmi, ktoré sa zapisujú. Poradie zápisu údajov na súborový systém je potom taký, že kedykoľvek dôjde k výpadku napájania, údaje zostanú konzistentné, a nenastane vyššie spomínaný bezpečnostný problém, kedy by sa v súbore nachádzali údaje z iného súboru.
Zabezpečenie konzsitencie údajov na súborovom systéme má však ďalšie úskalia. Všetky algoritmy implementované v softvéri fungujú správne za predpokladu, že hardvér robí skutočne to, čo tvrdí, že robí (viď vyššie zmienený problém s klamaním pevných diskov o nepoužívaní vyrovnávacej pamäte). Ďalšou požiadavkou zvyčajne je, aby pevný disk dokázal urobiť tzv. atomický zápis sektoru, t.j. aby aj v prípade výpadku napájacieho napätia dokázal dopísať sektor, ktorý práve zapisuje, správne až do konca. Ak je teda uloženie údajov dôležité, je potrebné urobiť náležité opatrenia:
Používať len odskúšané súborové systémy. Programy obsluhujúce súborové systémy nie sú triviálne, a preto sa v nich môžu celkom bežne vyskytovať chyby, najmä ak sa jedná o súborové systémy, ktoré sa ešte len vyvíjajú. Ak je prioritou bezpečné uloženie údajov, žiadne experimentovanie s horúcimi novinkami nie je akceptovateľné.
Používať záložné zdroje, ktoré navyše dokážu v prípade dlhšie trvajúceho výpadku napájacieho napätia zálohovaný počítač korektne vypnúť. Tým sa eliminuje možnosť straty údajov spôsobenej výpadkom napájacieho napätia, stále však zostáva možnosť poruchy samotného pevného disku.
Použiť softvérové alebo hardvérové diskové pole, ktoré zabezpečuje také redundantné uloženie údajov, že nedôjde k ich strate ani pri poruche jedného alebo viacerých pevných diskov v diskovom poli. Pritom nie vždy platí, že hardvérové diskové pole je lepšie ako softvérové – operačný systém FreeBSD disponuje veľmi kvalitným softvérom na budovanie diskových polí menšieho rozsahu (t.j. zreťazenie diskov, RAID 0, 1, 4 a 5) pod názvom Vinum volume manager.
Zálohovať a testovať funkčnosť záloh. Obe činnosti sú rovnako dôležité – je do plaču, keď v kritickej situácii dôjde k zisteniu, že starostlivo robené zálohy nie sú funkčné.
Jednou s častých námietok voči súborovému systému UFS a všetkým z neho odvodených súborových systémov je, že množstvo i-uzlov je dopredu dané pri vytváraní súborového systému. Tým je dopredu obmedzený maximálny počet súborov, ktoré sa dajú na takýto súborový systém uložiť, čo môže byť niekedy obmedzujúce. Opačnou nevýhodou predalokovaného pevného počtu i-uzlov na súborovom systéme je plytvanie miestom, ak je i-uzlov zbytočne veľa. Súborový systém UFS2 preto prichádza z úpravou, ktorá umožňuje i-uzly podľa potreby vytvárať a naopak nepotrebné rušiť. Na súborovom systéme UFS2 je preto vždy dostatok i-uzlov, ale zároveň sú tam nie žiadne nepotrebné i-uzly, ktoré by len zbytočne zaberali miesto.
Ďalšie zlepšenia UFS2 sa týkajú posunutia niektorých jeho limitov. Rozsahy údajových štruktúr boli zväčšené tak, aby súborový systém dokázal sledovať súčasné tempo nárastu kapacít pevných diskov a veľkosti ukladaných súborov približne ďalších 20 rokov. Bol zväčšený aj rozsah údajových štruktúr, do ktorých sa ukladajú časové známky vytvorenia, modifikácie a prístupu k súboru, takže „v dohľadnej dobe“ 136 biliónov rokov nehrozí pretečenie údajov v týchto štruktúrach. Na novej verzii súborového systému UFS došlo k zlepšeniu podpory rozšírených atribútov súborov a s tým súvisia aj zmeny v SoftUpdates. SoftUpdates boli navyše upravené takým spôsobom, aby korektne fungovali na malých súborových systémoch, ktoré sú takmer úplne zaplnené. Implementácia SoftUpdates v prvej verzii súborového systému UFS totiž mohla viesť k zdanlivému zamrznutiu počítača na dobu až niekoľkých minút, ak bol súborový systém takmer úplne zaplnený.
Najviac diskutované sú možnosti súborového systému UFS2 vytvárať tzv. snapshoty súborového systému, t.j. akúsi snímku stavu súborového systému v aktuálnom čase, a možnosť prevádzať kontrolu integrity údajov na súborovom systéme, ktorá sa vykoná práve na vykonanom snapshote. Toto umožní robiť kontrolu integrity údajov na súborovom systéme počas jeho bežného používania, čo môže byť mnohokrát veľmi žiaduce.
To, že v operačnom systéme FreeBSD existuje iba jeden natívny súborový systém, nemusí byť nutne obmedzením. Tento systém je kvalitný a odskúšaný mnohými používateľmi. Je preto vhodný na použitie tam, kde je potreba ukladať údaje spoľahlivo, ukladať obrovské súbory alebo veľké množstvo súborov. Určite nie je náhodou, že mnohé spoločnosti ukladajúce a poskytujúce obrovské množstvá údajov používajú práve operačný systém FreeBSD.
Bez ohľadu na to, aké pevné disky máte, určite majú svoje obmedzenia: sú príliš malé, sú príliš pomalé, alebo sú príliš nespoľahlivé. Všetky tieto obmedzenia možno čiastočne riešiť vytváraním diskových polí. Diskové polia môžu byť hardvérové, t.j. implementované radičom pevných diskov, alebo softvérové, ovládané programom pracujúcim nad tradičným spôsobom pripojenými pevnými diskami. Hoci sa o diskových poliach zvyčajne hovorí v súvislosti s pevnými diskami s rozhraním SCSI, jednoduchšie softvérové diskové polia možno v operačnom systéme FreeBSD rovnako dobre ako z pevných diskov s rozhraním SCSI budovať aj z pevných diskov s rozhraním IDE a takéto riešenie môže dostatočne efektívne a účinne pomôcť prekonať obmedzenia pevných diskov zapojených samostatne.
Pre označenie diskových polí sa už tradične používa skratka RAID – Redundant Array of Independent Disks – čo by sa dalo voľne preložiť ako pole nezávislých pevných diskov, ktoré zabezpečujú redundantné uloženie údajov. Písmeno I v skratke sa niekedy interpretuje ako Inexpensive (t.j. lacný), čo vzniklo z toho, že vytváraním diskových polí možno získať výkonnosť a kapacitu na ukladanie údajov relatívne lacným spôsobom. Existujú rôzne druhy diskových polí. Pre každý druh je charakteristický spôsob usporiadania pevných diskov v ňom, miera bezpečnosti (redundancie) uložených údajov a rýchlosť zápisu údajov a rýchlosť ich čítania. Typy diskových polí sa označujú číslami a niektoré typy majú aj svoje zaužívané slovné označenia. Pomocou softvérových nástrojov v operačnom systéme FreeBSD možno budovať iba niektoré typy diskových polí:
Zväzok diskov – Menšie pevné disky sa zreťazia a vytvoria jeden veľký disk, ktorého kapacita je súčtom kapacít jednotlivých diskov. Kapacity jednotlivých pevných diskov, z ktorých je zväzok zložený, sa môžu navzájom líšiť. Tento spôsob vytvorenia diskového poľa nezabezpečuje žiadnu redundanciu uloženia údajov. Rýchlosť zápisu aj čítania údajov sa môže zvýšiť, ak na diskové pole pristupuje súčasne viacero procesov, pretože existuje určitá pravdepodobnosť, že jednotlivé procesy budú pristupovať na také časti diskového poľa, ktoré ležia na rozličných pevných diskoch.
RAID 0 – Pomenovanie je zavádzajúce, pretože v tomto prípade sa o skutočný RAID nejedná – toto diskové pole totiž žiadnu redundanciu uloženia údajov nezabezpečuje. Je určené na vytvorenie jedného veľkého disku, ktorého kapacita je súčtom kapacít jednotlivých diskov, podobne ako pri zväzku diskov. Na rozdiel od jednoduchého zväzku diskov diskové pole RAID 0 – nazývané tiež pruhované pole (z anglického striped) – rozdeľuje zápisy na disk tak, že údaje rozdeľuje na malé časti, a tieto cyklicky zapisuje na jednotlivé disky v poli; preto veľkosti jednotlivých diskov musia byť rovnaké. Pruhovaním (stripovaním) sa dosahuje zvýšenie rýchlosti zápisu aj čítania údajov. Zároveň však z takéhoto spôsobu zápisu údajov vyplýva, že ak dôjde k poškodeniu ktoréhokoľvek z diskov v diskovom poli RAID 0, dôjde ku strate všetkých údajov. Na vytvorenie takéhoto diskového poľa sú potrebné aspoň dva pevné disky. Čím je diskov viac, tým väčší zisk výkonnosti možno dosiahnuť, tým je však vyššia aj možnosť zlyhania celého poľa, pretože toto obsahuje viac elementov, ktoré môžu zlyhať.
RAID 1 – V tomto prípade sa už jedná o skutočný RAID; redundancia údajov je zabezpečená tzv. zrkadlením (z anglického mirroring), čo znamená, že kópie tých istých údajov sa ukladajú na všetky pevné disky v diskovom poli. Z toho vyplýva požiadavka, že všetky disky v diskovom poli musia mať rovnakú veľkosť. Veľkosť celého diskového poľa je rovnaká, ako veľkosť jedného pevného disku v poli. Redundancia údajov tak môže byť pri diskovom poli RAID 1 veľmi vysoká, využitie kapacity dostupných pevných diskov je však veľmi neefektívne. Rýchlosť zápisu je mierne pomalšia ako bez použitia diskového poľa, pretože údaje sa musia zapísať na každý pevný disk (zápis však prebieha paralelne). Rýchlosť čítania je vyššia ako bez použitia diskového poľa, pretože rozličné časti údajov sa môžu čítať z rozličných pevných diskov v poli. Na vytvorenie diskového poľa RAID 1 sú potrebné aspoň dva pevné disky. Čím je diskov viac, tým je redundancia uloženia údajov vyššia údajov vyššia – diskové pole bude možné používať, pokiaľ v ňom bude aspoň jeden fungujúci pevný disk.
RAID 0+1 – Diskové pole využívajúce výhody diskových polí RAID 0 a RAID 1. Pevné disky v tomto poli sú organizované tak, že tvoria niekoľko diskových polí typu RAID 0 rovnakej veľkosti a tieto polia sú spojené do jedného diskového poľa typu RAID 1. Je tak zabezpečená redundancia uloženia údajov a rovnako je aj zvýšená výkonnosť čítania a zápisu údajov. Na vytvorenie diskového poľa tohto typu sú teda potrebné minimálne štyri pevné disky, z ktorých dve dvojice diskov tvoria dve diskové polia typu RAID 0 a tieto dve polia sú spojené do diskového poľa typu RAID 1. Výsledná kapacita je potom polovica so súčtu kapacít všetkých použitých pevných diskov. Diskové pole typu RAID 0+1 sa používa v prípade, ak systém na vytváranie softvérových diskových polí (alebo radič hardvérového diskového poľa) neumožňuje vytvárať diskové polia typu RAID 5, pretože diskové pole typu RAID 5 umožňuje efektívnejšie využiť kapacitu štyroch (a viacerých) pevných diskov ako RAID 0+1.
RAID 5 – Toto diskové pole zabezpečuje redundantné uloženie údajov, pričom dostupnú diskovú kapacitu pevných diskov zapojených v poli využíva čo možno najlepšie. Údaje sa pri zápise rozdeľujú na časti, ktoré sa cyklicky zapisujú na jednotlivé pevné disky (podobne ako pri diskovom poli RAID 0), pričom na jeden z diskov sa zapisuje paritný blok údajov zapísaných na ostatné disky. Ak dôjde k výpadku disku, na ktorom je uložený údajový blok, je možné tento blok vypočítať z ostatných údajových blokov a paritného bloku. Ak dôjde k výpadku disku, na ktorom je uložený paritný blok, je možné paritu vypočítať a obnoviť z pôvodných údajových blokov. Na realizáciu diskového poľa typu RAID 5 sú potrebné aspoň tri pevné disky. (Teoreticky možno vytvoriť diskové pole typu RAID 5 na dvoch diskoch, ale toto riešenie by bolo ekvivalentné použitiu diskového poľa typu RAID 1, pretože v prípade diskového poľa typu RAID 5 na dvoch diskoch by na jednom z diskov boli uložené samotné údaje a na druhom ich binárny doplnok – parita.) Veľkosti pevných diskov v poli musia byť rovnaké. Kapacita diskového poľa sa rovná súčtu kapacít pevných diskov v poli okrem disku, na ktorom sú uložené paritné bloky. (V skutočnosti sú paritné bloky rozložené na všetkých diskoch, z hľadiska dosiahnutej kapacity diskového poľa to ale vyzerá, akoby bola strata na diskovej kapacite rovná práve kapacite jedného disku v poli.) Rýchlosť vstupno-výstupných operácií nad diskovým poľom typu RAID 5 je ovplyvnená potrebou výpočtu parity; táto potreba vstupno-výstupné operácie spomaľuje. Naopak, údaje sú zapisované a čítané paralelne z viacerých diskov, čo na druhej strane na rýchlosť vplýva pozitívne.
Pevné disky – nech už sú akokoľvek rýchle – sú takmer vždy úzkym miestom výpočtového systému. Zatiaľ čo pevné disky s rozhraním SCSI sú pre budovanie softvérových diskových polí viac-menej bezproblémové (na jeden radič možno pripojiť väčšie množstvo pevných diskov – typicky 15 – a prístup k nim môže byť úplne paralený využívajúc priepustnosť SCSI zbernice pre všetky disky rovnako), pevné disky s rozhraním IDE majú mnohé obmedzenia: k jednému radiču možno pripojiť najviac dva pevné disky a priepusnosť zbernice sa pri prístupe k dvom pevným diskom pripojeným na jeden IDE radič medzi tieto disky delí. Na matičných doskách bývajú zvyčajne dva, len zriedkakedy štyri IDE radiče. Pre budovanie diskových polí z pevných diskov s rozhraním IDE z uvedeného vyplývajú určité nezanedbateľné obmedzenia: Pevné disky s rozhraním IDE, z ktorých sa skladá diskové pole, by mali byť umiestnené každý na samostatnom IDE radiči. To znamená, že možno vytvoriť iba diskové pole z dvoch pevných diskov. Ak matičná doska počítača triedy PC disponuje štyrmi IDE radičmi, je pravdepodobné, že na dvoch z nich možno vytvoriť hardvérové diskové pole typu RAID 0, RAID 1 a možno aj RAID 0+1. Ak matičná doska disponuje iba dvomi IDE radičmi, nemožno efektívne vytvoriť diskové pole typu RAID 5, pretože toto vyžaduje minimálne tri nezávislé disky, ako bolo vysvetlené vyššie. Samozrejme, je možné urobiť diskové pole aj z pevných diskov, ktoré sú pripojené na tom istom IDE radiči, ale výsledkom bude diskové pole, ktoré bude značne pomalé. Toto riešenie ma význam v prípade jednoduchého zreťazenia diskov, kedy sa optimalizácia rýchlosti pri prístupe na diskové pole môže dosiahnuť iba v prípade, že viacero procesov pristupuje na rozličné časti poľa, ktoré ležia na rozličných pevných diskoch pripojených na rozličných IDE radičoch, alebo v prípade, keď prvoradou požiadavkou je zabezpečenie redundantného uloženia údajov pomocou zrkadlenia diskov, ale nie je iná možnosť, ako tieto disky pripojiť na rovnaký IDE radič – toto riešenie však bude extrémne pomalé. Rovnako veľmi pomalé bude diskové pole typu RAID 5 zložené napr. z troch pevných diskoch pripojených na dvoch IDE radičoch.
Operačný systém FreeBSD poskytuje hneď dva spôsoby vytvárania softvérových diskových polí. V oboch prípadoch sa jedná o kombináciu ovládača na úrovni jadra operačného systému a systémového nástroja na správu diskového poľa. Starší, jednoduchší a primitívnejší nástroj na budovanie softvérových diskových polí sa nazýva Concatenated Disk driver, príslušný ovládač v jadre operačného systému je ccd(4) a príslušný konfiguračný nástroj je ccdconfig(8). Novší a flexibilnejší nástroj na budovanie softvérových diskových polí sa nazýva Vinum Volume manager, príslušný ovládač v jadre operačného systému je vinum(4) a rovnaké meno má aj k nemu patriaci konfiguračný nástroj vinum(8).
Concatenated Disk driver bol pôvodne naprogramovaný na Univerzite v Utahu pre operačný systém NetBSD. Umožňuje spájať viacero partícií do jedného logického zväzku, pričom údaje sa zapisujú po častiach („stripovane“), a to aj v tom prípade, ak disky, z ktorých je pole zložené, nemajú rovnakú veľkosť (údaje sa na disky rozdeľujú, pokiaľ je to možné, inak sa zapisujú iba na väčšie disky). Hlavným zámerom použitia ccd však je vytváranie zrkadlených diskov za účelom zabezpečenia redundantného uloženia údajov. Autori zamýšľali aj implementovanie softvérového diskového poľa typu RAID 5, avšak túto funkcionalita ccd nemá.
Ak sa zrkadlené diskové pole vytvorí pomocou ccd napríklad na štyroch pevných diskoch, tieto sú v diskovom poli organizované tak, že jedna kópia údajov „stripovane“ uložená na jednej dvojici pevných diskov a druhá – zrkadlená – kópia údajov je druhej dvojici diskov uložená opäť „stripovane“. Pri vhodnej voľbe veľkostí jednotlivých pevných diskov (ideálne je, ak majú všetky rovnakú veľkosť), je teda dosiahnutý efekt diskového poľa RAID 0+1.
Obnovovanie údajov uložených na softvérovom diskovom poli vytvorenom pomocou ccd je problematické; sami autori v manuálovej stránke programu ccdconfig(8) tvrdia, že sa jedná doslovne o úbohú implementáciu. Pri poruche niektorého z diskov v zrkadlenom diskovom poli by malo toto byť okamžite prestané používať na zápis, údaje by sa mali zálohovať, diskové pole znovu vytvoriť z funkčných pevných diskov a nakoniec údaje obnoviť zo zálohy. Samozrejme, ak dôjde k výpadku niektorého z pevných diskov, ktoré sú zapojené v nezrkadlenom diskovom poli, dôjde ku strate všetkých údajov, lebo tieto sú distribuované „stripovaním“ na všetkých pevných diskoch v poli, t.j. aj na poškodenom.
Systém Vinum na tvorbu softvérových diskových polí je vo FreeBSD od verzie operačného systému 3.0. Oproti ccd sa jedná o oveľa flexibilnejší, prepracovanejší, ale aj zložitejší nástroj. Umožňuje spájať disky do zväzkov a vytvárať softvérové diskové polia typu RAID 0, RAID 1, RAID 0+1 a RAID 5. V posledných verziách operačného systému FreeBSD možno zo softvérového diskového poľa typu RAID 1 aj štartovať operačný systém, čo dá sa povedať hraničí s čiernou mágiou: zo softvérového diskového poľa sa načíta ovládač tohto diskového poľa, ktorý jediný vie, ako s týmto diskovým poľom pracovať.
Na správu systému Vinum slúži rovnomenný systémový nástroj vinum(8). Možno ho používať interaktívne (ak sa spustí bez parametrov príkazového riadku, poskytuje používateľovi vlastný príkazový riadok na správu diskového poľa), alebo ho možno používať tak, že všetky potrebné údaje na požadovanú činnosť sa mu zadajú ako parametre príkazového riadku – vtedy program vinum(8) vykoná zadanú akciu a ukončí sa. Na počiatočnú inicializáciu systému Vinum sa používa konfigurácia zapísaná v textovom konfiguračnom súbore. Po inicializácii sa táto konfigurácia uloží na všetky pevné disky systému Vinum a jadro operačného systému FreeBSD bude ďalej akúkoľvek konfiguráciu systému Vinum čítať odtiaľ. To má za následok zaujímavú a v kritických situáciách veľmi dôležitú vlastnosť: pevné disky, na ktorých je vytvorené softvérové diskové pole pomocou systému Vinum, je možné vybrať z počítača a pripojiť ho do iného počítača s operačným systémom FreeBSD; diskové pole bude rozpoznané a operačný systém ho dokáže používať.
V terminológii systému Vinum sa na označenie jednej kópie údajov používa označenie plex. Diskové pole typu RAID 0 a zväzok diskov obsahujú len jeden plex, zatiaľ čo diskové polia typov RAID 1 a RAID 0+1 na zabezpečenie redundatného uloženia údajov obsahujú viacero plexov; systém Vinum umožňuje vytvoriť diskové pole, ktoré bude obsahovať až osem kópií údajov – plexov. Diskové pole typu RAID 5 obsahuje iba jeden plex, avšak usporiadanie diskov v tomto poli redundanciu zabezpečuje výpočtom a uložením paritných údajov.
Softvérové diskové polia v operačnom systéme FreeBSD môžu čiastočne riešiť niektoré problémy s pevnými diskami, a to bez dodatočných nákladov. Hoci to nie je ich hlavné určenie, možno pomocou nich mierne zlepšiť výkonnosť diskového podsystému. Nakoľko je diskový podsystém zvyčajne najpomalšou časťou výpočtových systémov, aj toto mierne zlepšenie môže byť niekedy citeľné. Užitočné môže byť diskové pole aj v prípade, keď je potrebná disková partícia, ktorá je väčšia ako ktorýkoľvek z dostupných pevných diskov, pretože dokáže rôznymi spôsobmi dostupné pevné disky spojiť do jedného celku. Najdôležitejšia vlastnosť diskových polí je zabezpečenie redundantného uloženia údajov tak, aby boli prístupné aj po zlyhaní niektorého z pevných diskov.
Ani diskové polia – softvérové či hardvérové – nie sú všemocné. Údaje na diskových poliach zabezpečujúcich ich redundantné uloženie sú bezpečné, pokiaľ dôjde k výpadku jedného alebo niekoľko málo pevných diskov v diskovom poli. Nie sú však bezpečné, ak dôjde k výpadku celého diskového poľa, napríklad v dôsledku prerušenia napájacieho napätia. Nemá preto význam spoliehať sa na diskové pole, ak nie je pripojené na záložný zdroj pole samé, aj výpočtový systém, ktorý naň pristupuje (v prípade softvérového diskového poľa je spravidla diskové pole súčasťou výpočtového systému, ktoré ho používa, v prípade hardvérového diskového poľa toto môže, ale nemusí byť samostatné). Bezpečné uloženie dôležitých údajov je hotová veda a diskové polia sú iba jedným z mnohých prvkov, ktoré možno na tento zámer použiť.
• povídání o FreeBSD
• začínáme s FreeBSD
• FreeBSD - základní kroky
• Sun Solaris - základní kroky
• Linux - základní kroky
• Windows - základní kroky
Hrátky s operačními systémy
• FreeBSD router
• FreeBSD ve firmě
• FreeBSD porty - jak na ně?
• vytváření FreeBSD balíčku
• instalace NetBSD
Počítačové sítě
• StarHill
• esej o bezdrátových sítích
• pasivní restranslace
• tvorba sítí typu ethernet
• Pure-FTPd + SSL + VA
• Samba a její nastavení
• Apache SSL - htaccess - PHP
• DHCP server
• Nessus
Lokalizace
• manuály FreeBSD
• RONJA
• Pure-FTPd
• nastavení Pure-FTPd
Software
• Visual Basic
• Acrobat Reader 5 a FreeBSD
• logovací démon - syslogd
Jednočipy
• programátor PIC
Různé
• mé konfigurační soubory