od redakcji: Przy okazji niedawnej premiery NetBSD 2.0, poprosiłem Piotra Meyera o przygotowanie krótkiego tekstu dla tych, którzy z BSD mają niewiele wspólnego. Zapraszam do lektury wszystkich zainteresowanych tym niezłym – i niesłusznie niedocenianym przez wielu systemem.

1. Historia
Dawno, dawno temu… Znacie? No właśnie – o historii systemów z rodziny BSD pisano już wiele i robili to ludzie znacznie lepiej zorientowani w temacie. Zainteresowani mogą odszukać w sieci sporo artykułów na ten temat, ja ograniczę się do podania dwóch odnośników. Pierwszy z nich to interesujące opracowanie autorstwa Tomasza Marciniaka zaś drugi to mapka opisująca historię systemów z rodziny Un*x. Uważni czytelnicy z pewnościa zwrócą uwagę, że pod drugim adresem, w rodzinie *BSD wymieniono znacznie znacznie więcej systemów niż „kanoniczne” Net/Free/Open, ale to już temat na zupełnie inny artykuł.
więcej informacji:
Historia systemu BSD [pol]
Unix Timeline [ang]

2. Rozwijanie NetBSD (gałęzie, sposób wydawania)
Podstawowy rozwój systemu odbywa się w gałęzi (choć lepszym określeniem byłoby tutaj słowo „pień”) oznaczonej jako „-current”. To w tym miejscu wprowadza się wszystkie zmiany, które pojawią się w przyszłych wydaniach systemu. Choć jest to gałąź najmniej stabilna to niektórzy, skuszeni możliwościami które oferuje, decydują się właśnie na nią. Osobiście wykorzystywałem system zbudowany ze źródeł oznaczonych jako „-current” w ciągu ostatnich 18 miesięcy. I moje dane żyją. 🙂

Co pewien czas od głównego pnia oddzielane są gałęzie, które po ustabilizowaniu i zamrożeniu dadzą początek kolejnym wydaniom systemu (czyli 1.5, 1.6, 2.0 itd.). Jedyne zmiany, wprowadzane do nich po zamrożeniu polegają na usuwaniu błędów. Kolejne, poprawione wersje oznacza się (przykład gałęzi netbsd-1.6) jako 1.6.1, 1.6.2, 1.6.3 itd. Są to podstawowe wersje przeznaczone na ogółu użytkowników.

więcej informacji [ang]: http://www.netbsd.org/Releases/release-map.html

3. NetBSD 2.0

Ponieważ twórcy NetBSD zdają się twardo wyznawać zasadę, że „będzie wydane, gdy będzie gotowe”, dlatego pomiędzy wydaniem NetBSD 1.6 a 2.0 upłynęło prawie 27 miesięcy zaś cierpliwość użytkowników została wystawiona na ciężką próbę. Atmosferę podgrzewał też przedłużający się proces wydania (informację o utworzeniu gałęzi 2.0 podano w maju 2004).

Długie oczekiwanie osłodzić mogą zmiany, które zaszły w systemie od czasów wersji 1.6. Są one na tyle znaczące, że zdecydowano się na oznacznie wydania wersją 2.0 (a nie 1.7, jak należałoby się spodziewać).

A najważniejsze ze zmian to:

  • natywna obsługa wątków
    Implementacja wykorzystująca model wątków mieszanych (jądro zarządza wątkami jądra, które zawierają w sobie wątki użytkownika). Twórcy NetBSD twierdzą, że wybrany model pozwoli na uniknięcie problemów z wydajnością i skalowalnością systemu. Odrobinę obaw może budzić fakt, iż Sun zdecydował się na odejście od modelu m-n na rzecz wydajniejszego 1-1 już w Solarisie 9.

    więcej informacji [ang]: An Implementation of Scheduler Activations on the NetBSD Operating System

  • kolejki zdarzeń (kqueue)
    Mechanizm bazuje na kodzie autorstwa Jonathana Lemon, pochodzącym z projektu FreeBSD. Jakie znaczenie może mieć to dla wydajności aplikacji sprawdzić można choćby na poniższym wykresie (na osi X opóźnienie w mikrosekundach, na Y ilośc połączeń. Zielony wykres to wersja bez kqueue): http://bulk.fefe.de/scalability/netbsd/httpreq-netbsd-current.png

    więcej informacji: kqueue [ang]
    różnice w wydajności [ang]

  • systrace
    Narzędzie to pozwala na szczegółowe kontrolowanie działania uruchomionych w systemie aplikacji – zarówno poprzez monitorowanie ich zachowania jak również cenzurowanie poczynań (dostęp do plików czy funkcji systemowych). Po raz pierwszy mechanizm ten został wprowadzony w OpenBSD 3.2.

    więcej informacji: systrace [ang]

  • verified exec
    Funkcjonalność pozwalająca systemowi na sprawdzenie, czy program, który zamierza wykonać nie został zmodyfikowany. Odbywa się to poprzec porównanue wcześniej utworzonej sumy kontrolnej pliku z sumą kontrolną pliku aktualnie wykonywanego.

    więcej informacji: [ang]

  • cryptographic disk driver czyli Prywatność Nade Wszystko
    Mechanizm ten, znany skądinąd z innych systemów, pozwala na zakodowanie, za pomocą któregoś z silnych algorytmów kryptograficznych, danych umieszczonych na naszym dysku czy partycji. Możliwa jest także ochrona partycji wymiany!

    więcej informacji [ang]

  • ochrona stosu i sterty (non-exec stack, non-exec heap)
    Znany (choć nie przez wszystkich poważany) sposób na utrudnienie życia napastnikom.

    więcej informacji: [ang]

  • platforma x86 doczekała się obsługi wielu procesorów (SMP)

    Jaki poważny system operacyjny może się obejść bez obsługi wieloprocesorowości? 🙂

4. Zalety i wady
Postaram się teraz wymienić to, co uważam za zalety oraz słabości NetBSD.

zalety:

  • dokumentacja. Manuale, podręcznik systemowy oraz ilość dokumentacji umieszczonej na stronach projektu jest naprawdę olbrzymia i pozwala uzyskać odpowiedź na prawie każdą wątpliwość. Jeśli chcę spradzić, jaki kontroler IDE powinienem kupić, piszę „man pciide”. Jeśli chcę wiedzieć, czy moja karta wspiera 802.1q to piszę „man vlan”. Proste, jasne i oczywiste.

    Błąd w dokumentacji bądź jej brak zgłaszany jest i traktowany jako rzecz do naprawienia i nigdy nie spotkałem się z odpowiedzią „Jak chcesz mieć dokumentację, to sam sobie napisz.”.

  • konsekwencja i spójność systemu. Pracując w NetBSD naprawdę można się rozleniwić: oczekiwać, że jesli coś w kernelu da się ustawić, to na pewno można to ustawić lub odczytać poleceniem „sysctl”. Jeśli czymś da się sterować, to na pewno stosowne polecenie (z końcówką *ctl) istnieje: atactl, scsictl, pcictl, rndctl itp/ Jeśli istnieje jakiś mechanizm (jak np. sprawdzanie statusu interfejsu) to jest on rozwiązany w jednakowy, spójny dla całego systemu sposób. Użytkownicy NetBSD nie mieli też nigdy problemów z obsługą nagrywarek atapi – choć w tym samym czasie inne systemy kombinowały z emulacją SCSI w IDE czy jakoś podobnie…
  • rozwaga w rozwijaniu systemu. Jeśli już mamy np. wersję 1.6.x to nie należy się obawiać jakichkolwiek poważnych zmian. Żadnych „super usprawnień” upchniętych w kernelu pomiędzy 1.6.2 a 1.6.3, które działają super ale nie wszystkim…
  • stabilność. Nowe rozwiązania przechodzą naprawdę długi proces testowania, zanim znajdą się w kolejnym wydaniu. Na przykład obsługa SMP dla i386 znajduje się w gałęzi -current od października 2002 zaś obsługa wątków – od stycznia 2003. Pół roku przed rozpoczęciem procesu wydania wersji 2.0 te rozwiązania sprawowały się już zupełnie dobrze. Ceną za takie podejście jest brak nowinek w stabilnych wersjach.
  • emulacja innych systemów. Rzecz prosta i stanowiąca o dużej sile NetBSD. Osobiście korzystam tylko z emulacji Linuksa, ale odpadają mi dz
    ięki temu problemy typu „kurczę, wszystko fajne, system idealnie pasuje do moich potrzeb,
    ale ten jeden program jest mi niezbędny…”. Opera chodzi świetnie, Acrobat Reader również. No, ale skoro kiedyś działał nawet emulowany OpenOffice (do dziś pkgsrc oferuje obydwie wersje: kompilowaną i emulowaną), to co miałoby działać źle? 🙂

  • crunchgen. Narzędzie, którego busybox jest jedynie ubogim krewnym – bowiem crunchgen pozwala nam na _swobodny_ wybór komponentów, które wejdą w skład wynikowego programu.
  • obsługa wielu platform. Nadal prawdą jest, że „NetBSD jest systemem, który w ramach jednego, spójnego projektu, zapewnia obsługę dla największej ilości platform”. Rozsądnie zaprojektowany mechanizm budowania systemu pozwala na swobodną i łatwą cross-kompilację pomiędzy różnymi architekturami.

wady:

  • niewielkie wykorzystanie LKM (czyli modułów kernela). Istnieje odpowiedni mechanizm, istnieje dokumentacja, jednak większość sterowników nie została przystosowana do pracy w postaci modułów. Osobiście uważam to za największą bolączkę tego systemu.
  • brak dobrze przetestowanego i naprawdę stabilnego systemu plików z księgowaniem. Podstawowy system plików, czyli FFS z mechanizmem soft-updates jest dość wydajny a jego naprawa nie zajmuje wiele czasu – jednak mogłoby być lepiej.
  • ubogie wsparcie dla kart TV. Pod tym względem Linux jest naprawdę wzorcem do naśladowania.
  • brak wsparcia dla procesorów pozbawionych MMU.

5. Ja i NetBSD
Nie dziwi chyba nikogo, że moja stacja robocza pracuje pod NetBSD. Początkowo była to wersja 1.5, potem 1.6 – a potem, aż do wydania 2.0 trzymałem się gałęzi -current. NetBSD pracuje także na domowym serwerze plików (NFS serwujący dane z dwóch dysków spiętych w programowy RAID-1). Świetnie spradza się także w roli routera – niezależnie czy pracuje on jako NAT dla grupy użytkowników czy też jako router BGP u jednego z dostawców internetu. Użytkownicy nie narzekali też na wydajność serwerów WWW pracujących pod kontrolą NetBSD.

a tak wygląda desktop autora:
desktop 1
desktop 2

6. Finał
Co jakiś czas ktoś zadaje mi pytanie: czy warto przesiadać się na NetBSD z Linuksa? Odpowiedź daję zazwyczaj taką samą: „A skąd ja niby mam wiedzieć?”. Decyzję o tym, jakiego systemu użyjemy do danego zadania, powinno podejmować się w oparciu o realne potrzeby i okoliczności a nie, jakąkolwiek, ideologię.

Jeśli ktoś zamierza zobaczyć, jak wygląda NetBSD to zawsze może wykorzystać LiveCD z najnowszą wersją systemu. Dostępne jest ono pod adresem: ftp://ftp.netbsd.org/pub/NetBSD/iso/2.0/i386live.iso

7. Instalacja i użytkowanie
Instalacja czyli miłe złego początki(?)
Instalator NetBSD najbardziej chyba przypomina ten, którym posługują się Debian czy Slackware (choć ustępuje im możliwościami). Tak czy owak należy oczekiwać trybu tekstowego. Tu miły akcent: wśród języków wspieranych przez instalator znajduje się także polski. Niemiłym akcentem jest brak obsługi języka polskiego na konsoli zainstalowanego systemu, ale z tym problemem można poradzić sobie dzięki prostej instrukcji umieszczonej na stronie http://www.netbsd.pl/ . Sama instalacja jest łatwa – tym bardziej, że zarówno oficjalny podręcznik systemu jak i podręczniki instalacji zawierają dużą ilość informacji. W przypadku wypadku mozna poprosić o wsparcie na kanale #NetBSD.pl

Więcej informacji: The NetBSD Guide [ang], NetBSD INSTALL (i386) [ang]

Tuż po pierwszym restarcie przywita nas dość nieatrakcyjna konsola tekstowa. Od tego momentu możemy wykorzystywać nasz system jako zaawansowany router dla sieci lokalnej, serwer ftp czy NFS. Jeśli potrzebujemy środowiska o nieco większych, niż standardowo dołączony do XFree86 twm, możliwościach musimy zainteresować się jakimś dodatkowym oprogramowaniem. Ponieważ w skład standardowej dystrybucji wchodzi kompilator gcc (obecnie 3.3.3) toteż nic nie stoi na przeszkodzie, by Prawdziwi Hakerzy zabrali się za szybką kompilację. Normalni 🙂 ludzie powinni zainteresować się systemem pakietów znanym jako „pkgsrc”.

pkgsrc czyli programy dla mas
System Pakietów NetBSD pozwala na prostą instalację oprogramowania – zarówno z przygotowanych wcześniej paczek jak i ze źródeł. Wbrew temu, co mogłoby sugerować nazwa, pkgsrc używane jest także na innych systemach (FreeBSD, Solarisie czy… Linuksie).

Archiwum prekompilowanych pakietów można przeglądać za pośrednictwem stron WWW – choć miłośnicy najaktualniejszych wersji na pewno skuszą się na samodzielną kompilację ze źródeł. Rozwiązanie proste i dobrze znane z innych systemów *BSD: po pobraniu drzewka pakietów wystarczy odszukać interesujący nas program i wykonac polecenie 'make install’ we właściwym katalogu. System sam pobierze, rozpakuje, załata, skompiluje potrzebny nam program – wraz ze wszelkimi jego zależnościami. A my, w tym czasie, możemy iść na piwo 🙂

Jeśli przewidujemy większą ilość instalacji, możemy pouczyć system by przygotowane programy popaczkował i pozostawił w odpowiednim katalogu. Wszystko to (a nawet więcej) uzyskujemy poprzez odpowiednie wpisy w pliku /etc/mk.conf. Detale, tradycyjnie, w podręczniku systemu.

Więcej informacji: Indeks pakietów
Skąd brać pakiety
Strona projektu pkgsrc

8. Gdzie szukać informacji?

Archiwalny news dodany przez użytkownika: Piotr 'aniou’ Meyer.
Kliknij tutaj by zobaczyć archiwalne komentarze.

Oznaczone jako → 
Share →