Unix jest jednym z najbardziej popularnych systemów operacyjnych na świecie ze względu na jego dużą bazę wsparcia i dystrybucji. Początkowo został opracowany jako system wielozadaniowy dla minikomputerów i mainframe’ów w połowie lat 70. Od tego czasu stał się jednym z najpowszechniej używanych systemów operacyjnych, pomimo czasami niezrozumiałego interfejsu i braku centralnej standaryzacji.
Prawdziwy powód popularności Uniksa? Wielu hakerów uważa, że Unix jest właściwym – jedynym prawdziwym – systemem operacyjnym. Stąd rozwój Linuksa przez rosnącą grupę hakerów Uniksa, którzy chcą pobrudzić sobie ręce swoim własnym systemem.
Wersje Uniksa istnieją dla wielu systemów, od komputerów osobistych po superkomputery, takie jak Cray Y-MP. Większość wersji Uniksa dla komputerów osobistych jest dość droga i kłopotliwa. W czasie pisania tego tekstu, jednomaszynowa wersja Systemu V dla 386 firmyAT&T kosztuje około 1500 USD.
Linux jest swobodnie dystrybuowaną wersją Uniksa, pierwotnie opracowaną przez Linusa Torvaldsa, który rozpoczął pracę nad Linuksem w 1991 r. jako student na Uniwersytecie Helsińskim w Finlandii.Linus pracuje teraz dla Transmeta Corporation, start-upu w Santa Clara w Kalifornii, i nadal utrzymuje jądro Linuksa, czyli najniższy poziom podstawowej części systemu operacyjnego.
Linus udostępnił wstępną wersję Linuksa za darmo w Internecie, nieumyślnie wywołując jeden z największych fenomenów rozwoju oprogramowania wszechczasów. Dzisiaj, Linux jest tworzony i utrzymywany przez grupę kilkudziesięciu tysięcy (jeśli nie więcej) programistów luźno współpracujących w Internecie. Firmy zaczęły zapewniać wsparcie dla Linuksa, pakować go w łatwe do zainstalowania dystrybucje i sprzedawać stacje robocze preinstalowane z oprogramowaniem Linux. W marcu 1999 roku, pierwsze targi Linux World Expo odbyły się w San Jose w Kalifornii, na których podobno pojawiło się ponad 12,000 osób.Większość szacunków określa liczbę użytkowników Linuksa na świecie na około 10 milionów (i spodziewamy się, że ta liczba będzie wyglądała na małą do czasu, gdy będziesz to czytał).
Zainspirowany przez system operacyjny Minix Andrew Tanenbauma (kolejny wolny Unix dla komputerów PC – aczkolwiek bardzo prosty), Linux rozpoczął się jako projekt klasowy, w którym Linus chciał zbudować prosty system Unix, który mógłby działać na komputerze PC z procesorem 386.Pierwsze dyskusje o Linuksie miały miejsce na grupie dyskusyjnej Usenet comp.os.minix. Dyskusje te dotyczyły głównie rozwoju małego, akademickiego systemu Unix dla użytkowników Minixa, którzy chcieli więcej.
Bardzo wczesny rozwój Linuksa zajmował się głównie funkcjami przełączania zadań interfejsu 80386 w trybie chronionym, a wszystko to było napisane w kodzie asemblera. Linus pisze:
Później to już była łatwizna: kodowanie wciąż było włochate, ale miałem kilka urządzeń i debugowanie było łatwiejsze. Zacząłem używać C na tym etapie, i to z pewnością przyspiesza rozwój. Wtedy też zacząłem poważnie myśleć o moich megalomańskich pomysłach stworzenia „lepszego Minixa niż Minix”. Miałem nadzieję, że pewnego dnia będę mógł zrekompilować Minixa pod Linuksem…
Dwa miesiące na podstawową konfigurację, ale potem tylko trochę dłużej, aż miałem sterownik dysku (poważnie zabugowany, ale działał na mojej maszynie) i mały system plików. To było mniej więcej wtedy, gdy udostępniłem 0.01: nie był ładny, nie miał sterownika dyskowego i nie potrafił zrobić prawie nic. Nie sądzę, żeby ktokolwiek kiedykolwiek skompilował tę wersję. Ale wtedy byłem już uzależniony i nie chciałem przestać, dopóki nie będę mógł wyrzucić Minixa.
Nigdy nie wydano żadnego ogłoszenia dla Linuksa w wersji 0.01. Źródła wersji 0.01 nie były nawet wykonywalne: zawierały tylko podstawowe informacje o źródle jądra i zakładały, że masz dostęp do maszyny Minix, aby je skompilować i pobawić się nimi.
5 października 1991 roku Linus ogłosił pierwszą „oficjalną” wersję Linuksa, wersję 0.02. W tym momencie Linus był w stanie uruchomićbash (GNU Bourne AgainShell) i gcc (GNU Ccompiler), ale niewiele więcej działało. Ponownie, był to system przeznaczony dla hakerów. Głównym celem był rozwój jądra; żadna z kwestii wsparcia użytkownika, dokumentacji, dystrybucji i tak dalej nie została nawet poruszona. Dzisiaj sytuacja jest zupełnie inna – prawdziwe podniecenie w świecie Linuksa dotyczy graficznych środowisk użytkownika, łatwych do zainstalowania pakietów dystrybucyjnych i wysokopoziomowych aplikacji, takich jak narzędzia graficzne i pakiety produktywności.
Linus napisał w comp.os.minix:
Czy tęsknisz za miłymi dniami Minix-1.1, kiedy mężczyźni byli mężczyznami i pisali swoje własne sterowniki urządzeń? Czy nie masz ładnego projektu i nie możesz doczekać się systemu operacyjnego, który mógłbyś zmodyfikować do swoich potrzeb? Frustruje cię, że wszystko działa na Minixie? Nie musisz już zarywać nocy, żeby uruchomić jakiś fajny program? W takim razie ten post może być właśnie dla Ciebie.
Jak wspomniałem miesiąc temu, pracuję nad darmową wersją Minixa dla komputerów AT-386. W końcu osiągnęła ona etap, na którym jest nawet użyteczna (choć może nie być, w zależności od tego, czego chcesz) i jestem skłonny udostępnić źródła do szerszej dystrybucji.To tylko wersja 0.02 … ale udało mi się uruchomić pod nią Bash, gcc, GNU make, GNUsed, compress, itd.
Po wersji 0.03, Linus podniósł numer wersji do 0.10, ponieważ więcej osób zaczęło pracować nad systemem. Po kilku kolejnych poprawkach, Linus zwiększył numer wersji do 0.95, aby odzwierciedlić swoje oczekiwania, że system jest gotowy do „oficjalnego” wydania w najbliższym czasie. (Na ogół oprogramowanie nie otrzymuje numeru wersji 1.0, dopóki nie jest teoretycznie kompletne lub wolne od błędów). Było to w marcu 1992 roku. Prawie półtora roku później, pod koniec grudnia 1993 roku, jądro Linuksa wciąż było w wersji 0.99.pl14 – asymptotycznie zbliżając się do wersji 1.0. Wersja 1.0 pojawiła się w marcu 1994 roku. W czasie pisania tego tekstu (marzec 1999), obecna wersja jądra to 2.2.6, podczas gdy wersje 2.3 jądra są równolegle rozwijane. (Konwencje wersjonowania Linuksa wyjaśnimy szczegółowo w dalszej części rozdziału.)
Linux nie mógłby powstać bez narzędzi GNU stworzonych przez Fundację Wolnego Oprogramowania. Ich kompilator gcc, który omówimy w rozdziale 13, dał życie kodowi Linusa Torvaldsa. Narzędzia GNU były splecione z rozwojem Linuksa od samego początku. Ze względu na krytyczny wkład tych narzędzi Fundacja Wolnego Oprogramowania żąda nawet, aby dystrybucje Linuksa z towarzyszącymi im narzędziami były nazywane GNU/Linux.
Berkeley Unix (BSD) również odegrał ważną rolę w Linuksie – nie tyle w jego tworzeniu, co w dostarczaniu narzędzi, które uczyniły go popularnym. Większość narzędzi, które są dostarczane z dystrybucjami Linuksa są przeniesione zBSD. Szczególnie ważne są demony sieciowe i narzędzia. Kod sieciowy jądra Linuksa został opracowany od podstaw (dwa lub trzy razy, w rzeczywistości), ale demony sieciowe i narzędzia są z BSD.
Dzisiaj Linux jest kompletnym klonem Uniksa, zdolnym do uruchomienia Systemu X Window, TCP/IP, Emacsa, Web, oprogramowania pocztowego i informacyjnego, możesz to nazwać. Prawie wszystkie główne pakiety wolnego oprogramowania zostały przeniesione na Linuksa, a komercyjne oprogramowanie staje się dostępne. W rzeczywistości wielu programistów zaczyna od pisania aplikacji dla Linuksa, a później przenosi je na inne systemy uniksowe. Obsługiwane jest więcej sprzętu niż w pierwotnych wersjach jądra. Wiele osób przeprowadziło benchmarki na systemach linuksowych i stwierdziło, że są one szybsze niż stacje robocze firm Sun Microsystems i Compaq, a Linux osiąga lepsze lub równie dobre wyniki niż Windows 98 i Windows NT w szerokim zakresie benchmarków.
Kto by przypuszczał, że ten „mały” klon Uniksa dorośnie do przejęcia całego świata komputerów osobistych i serwerowych?