Gentoo Linux

Gentoo Linux – dystrybucja systemu operacyjnego GNU/Linux. Jej nazwa powstała od pingwina białobrewego, który po angielsku nazywa się Gentoo penguin. Naczelnymi założeniami tej dystrybucji są konfigurowalność, usprawnienie przenośności i optymalizacja pod kątem sprzętu użytkownika. Jest to realizowane dzięki instalacji niemal całego oprogramowania z kodu źródłowego za pomocą mechanizmu Portage.

Historia 
Twórca Gentoo, Daniel Robbins, zaczął swoją pracę z Linuksem od dystrybucji Debian GNU/Linux. Napisał do niej kilka aplikacji i zapoznał się z tajnikami GNU/Linuksa. Jak większość użytkowników tego systemu, wypróbował jeszcze kilka dystrybucji GNU/Linuksa, ostatecznie postanowił pomóc w rozwoju Stampede Linux. Szybko stał się jej deweloperem i zajmował się w niej systemem zarządzania pakietami. Po jakimś czasie zdecydował się stworzyć własną dystrybucję.

W ten sposób powstał Enoch. Miała to być dystrybucja szybka, umożliwiająca automatyczne tworzenie pakietów i proces uaktualniania systemu. Do Robbinsa zaczęli przyłączać się inni deweloperzy i wkrótce nad projektem pracowało już 10 osób. Gdy stało się jasne, że Enoch ma szansę stać się najszybszą dystrybucją GNU/Linuksa, nazwę projektu zmieniono na Gentoo. Nazwa ta nawiązuje do pingwina – symbolu Linuksa. Gentoo jest angielską nazwą pingwina białobrewego, uchodzącego za najszybciej pływający gatunek pingwina.

Około wersji 1.0 Robbins kupił nowy sprzęt komputerowy, który jednak powodował zawieszanie się systemu, przez co rozwój tej dystrybucji zatrzymał się, Robbins zaczął używać FreeBSD. Gdy wrócił do GNU/Linuksa, z pomocą innych deweloperów zaczął znów rozwijać Gentoo. System pakietów został zaprojektowany na nowo, nazwano go Portage. Dystrybucja zaczęła rozwijać się coraz szybciej dzięki ochotnikom, którzy przysyłali poprawki i pomagali zachować odpowiedni poziom stabilności i bezpieczeństwa.

Zmienił się model rozwoju Gentoo, wydzielono odrębne projekty. Regularne spotkania ich liderów utrzymywały wysoki poziom rozwoju i współpracy. Powstała niedochodowa Fundacja Gentoo, zajmująca się sprawami finansowymi i prawnymi oraz nadzorująca rozwój dystrybucji.

W kwietniu 2004 roku, w wyniku sporów w zespole deweloperów Gentoo, a także w związku z zaniedbanym (za sprawą zbytniego zaangażowania w projekt) życiem rodzinnym, Daniel zdecydował się na odejście z zespołu i przekazanie pełni praw autorskich (m.in. do ebuildów i do logo) Fundacji.
W maju 2005 zatrudnił się w Microsofcie w ramach edukacji firmy co do metod rozwoju i testowania projektów FLOSS, jednak po niecałym roku zrezygnował, gdyż jego zdaniem Microsoft nie oferował odpowiednich perspektyw rozwoju.

Dystrybucja rozwijała się w tym czasie nadal, choć brak przywództwa i zaangażowania jej głównego architekta znacząco spowolnił tempo rozwoju. W zespole deweloperów rozgorzały spory kompetencyjne. Po zakończeniu pracy w Microsofcie Daniel Robbins chciał wrócić do sprawowania kierowniczej roli w projekcie, jednak nie doszedł do porozumienia z Fundacją i postanowił kontynuować pracę nad jego odnowioną wersją, którą nazwał Funtoo.

Portage 
Portage to system zarządzania pakietami wzorowany na portach FreeBSD. Został napisany w języku Python. Jest głównym narzędziem odróżniającym Gentoo od innych dystrybucji. Z portage korzysta się przy pomocy komendy emerge. W przeciwieństwie do typowych repozytoriów pakietów nie przechowuje postaci binarnych aplikacji, ale jedynie informacje potrzebne do samodzielnej kompilacji ich kodu źródłowego, o ile jest on dostępny (ebuildy).

Ebuild 
Ebuild to alternatywa dla typowych w innych dystrybucjach prekompilowanych pakietów oprogramowania. Jest to plik tekstowy opisujący jak pobrać, skonfigurować, skompilować źródła programu w sposób zoptymalizowany dla danej maszyny oraz jak zainstalować to oprogramowanie w systemie. Oficjalne ebuildy znajdują się na serwerach lustrzanych Gentoo. Nowe ebuildy można uzyskać przez zsynchronizowanie lokalnego drzewa Portage z repozytorium poprzez protokół rsync. Służy do tego komenda emerge --sync.

Flagi USE 
Flagi te wykorzystywane są przez system Portage do określenia, jakie opcje oprogramowania mają być uaktywnione w trakcie jego kompilacji. Umożliwia to dostosowanie oprogramowania do własnych potrzeb. Dla przykładu, jeśli ktoś nie używa środowiska graficznego GNOME tylko KDE, może ustawić odpowiednie flagi USE by oprogramowanie było kompilowane jedynie z obsługą tego drugiego. Flagi USE wpływają na zależności między pakietami oraz na to, jakie opcje będą przekazane przy kompilacji oprogramowania.

Maskowanie pakietów 
Dzięki maskowaniu pakietów w Gentoo można określić, które wersje pakietów mają być instalowane w danym systemie. Umożliwia to wybór ściśle określonej wersji, a także wybór najnowszej stabilnej lub najnowszej testowej wersji pakietu w ramach podanej architektury sprzętowej. Wyróżnia się dwa rodzaje maskowania pakietów – twarde i przez słowa kluczowe (ang. keywords). Dla każdej architektury jest przypisane słowo kluczowe, jeśli jest ono poprzedzone znakiem tyldy oznacza wersję testową danego pakietu. Na przykład dla architektur x86 słowo kluczowe x86 oznacza pakiety stabilne i przetestowane, ~x86 oznacza natomiast pakiety wymagające testów. Używane słowa kluczowe są ustalane dla wszystkich pakietów przez zmienną ACCEPT_KEYWORDS w głównym pliku konfiguracyjnym (/etc/portage/make.conf, w starszych instalacjach /etc/make.conf) lub oddzielnie dla każdego pakietu w pliku /etc/portage/package.keywords. Maskowanie twarde jest używane w stosunku do pakietów niebezpiecznych i niezalecanych do instalacji w związku z problemami, które mogą one powodować. Aby odmaskować twarde maskowanie należy dodać odpowiedni wpis do pliku /etc/portage/package.unmask.

Prekompilowane pakiety 
W Gentoo istnieje możliwość stworzenia prekompilowanych pakietów oprogramowania (poprzez komendę emerge -b podczas kompilacji albo quickpkg, wchodzącą w skład pakietu Gentoolkit). Mają one rozszerzenie .tbz2 i zawierają wszystkie pliki kopiowane przez Portage podczas zwykłej instalacji wraz z metadanymi umożliwiającymi zainstalowanie ich przez emerge. Pakiety takie mogą być wykorzystane do szybkiej instalacji na podobnych maszynach lub do szybkiej naprawy systemu po awarii.

Podprojekty i obsługiwane rozwiązania 
Poza rozwijaniem dystrybucji deweloperzy zgromadzeni wokół Gentoo zajmują się szeregiem innych projektów zorientowanych na konkretne zastosowania systemu operacyjnego.

Hardened Gentoo 
Hardened Gentoo obejmuje kilka podprojektów związanych z poprawą bezpieczeństwa systemu. Zaliczyć tu należy obsługę PaX, SSP (Stack Smashing Protection), SELinux, RSBAC i Grsecurity.

Gentoo Linux Security Advisories 
GLSA (Gentoo Linux Security Advisories) to dokumenty XML opisujące poszczególne luki w oprogramowaniu znajdującym się w Portage. Ich tworzeniem i aktualizacją zajmuje się Gentoo Linux Security Team. Użytkownicy mają do dyspozycji narzędzie glsa-check sprawdzające system i zainstalowane oprogramowanie pod kątem luk opisanych w GLSA.

Obsługiwane jądra 
Podstawowymi źródłami jądra Gentoo są gentoo-sources, czyli oryginalne jądro Linux z łatami przygotowywanymi przez deweloperów Gentoo. Modyfikacje obejmują głównie poprawki na niewielkie błędy tak, aby nie było znaczących różnic w stosunku do oryginalnych źródeł jądra (zwanych vanilla-sources). Użytkownicy mogą skorzystać również z przygotowanych jąder do konkretnych zastosowań, np. git-sources (najnowsze źródła z Git), hardened-sources (z łatami Grsecurity), hppa-sources, sparc-sources, mm-sources (jądro Andrew Mortona), rsbac-sources (z łatami RSBAC), tuxonice-sources (z łatami TuxOnIce) i innych.

Projekty specyficzne dla oprogramowania 
Poszczególne większe lub istotniejsze pakiety oprogramowania posiadają swoje wydzielone grupy deweloperów. Grupy te oprócz przygotowywania nowych wersji do drzewa Portage opracowują również samodzielne łaty na zgłaszane błędy, później czasem włączane do oryginalnego oprogramowania. Wśród takich podprojektów znaleźć można: Apache, Python, PHP, Perl czy Kolab2.

Instalacja 
Gentoo można zainstalować na wiele sposobów. Najbardziej popularne jest użycie specjalnie do tego przystosowanego Gentoo Live CD. Można jednak do tego wykorzystać jakikolwiek inny działający system GNU/Linux znajdujący się na oddzielnej partycji, dysku lub płycie CD.

Gentoo posiada kilka rodzajów płyt instalacyjnych (od 40 do ponad 700 MB). W przypadku płyty minimal wymagany jest dostęp do internetu, aby system Portage mógł pobrać wymagane pliki z sieci. Płyta uniwersalna dla popularnych programów nie wymaga dostępu do sieci, gdyż na krążku znajdują się potrzebne do instalacji pliki.

Od wersji 2006.0 można pobrać płytę z graficznym instalatorem (testowa wersja instalatora była dostępna na specjalnych obrazach płyt już w wersji 2005.1). Aktualnym środowiskiem graficznym używanym na LiveCD jest Xfce.

Na płytach Gentoo oraz na stronie domowej są dokładne instrukcje i poradniki jak zainstalować system.

Stage 
System Gentoo można zainstalować, startując z jednego z wybranych punktów początkowych (nazywanych Stage):

 Stage 1, Instalacja pełna, system musi być zbudowany przez bootstrap, a podstawowe pakiety samodzielnie skompilowane,
 Stage 2, Bootstrap jest już wykonany, ale podstawowe pakiety muszą być skompilowane samodzielnie,
 Stage 3, Bootstrap jest już wykonany, podstawowe pakiety także są skompilowane.

Stage1 daje największe możliwości optymalizacji świeżo zainstalowanego systemu, ale instalacja z jego użyciem jest najdłuższa, ponieważ należy najpierw wykonać bootstrap, w trakcie którego kompilowany jest kompilator i główne biblioteki systemu (takie jak glibc, binutils). Instalacja rozpoczęta od Stage3 będzie najkrótsza jednak użytkownik otrzymuje system w mniejszym stopniu zoptymalizowany i dostosowany do indywidualnych potrzeb. Stage2 jest kompromisem pomiędzy dwoma pozostałymi.

Ponieważ Stage3 nie zamyka drogi do pełnej optymalizacji (każdy składnik można ponownie skompilować z własnymi ustawieniami już z wnętrza w pełni działającego systemu), od wydania 2008.0 instalacja za pomocą stage 1 i 2 nie jest oficjalnie wspierana, choć z serwerów lustrzanych można wciąż pobrać odpowiednie pliki.

Jądro systemu 
Również jądro systemu powinno być samodzielnie ustawione i skompilowane. Instalacja z użyciem LiveCd pozwala co prawda na użycie skompilowanego już jądra, ale nie zaleca się tego. Jest to prawdopodobnie najtrudniejszy etap instalacji. W Gentoo nie istnieją prekompilowane wersje jądra Linuksa, są jednak ebuildy dla kilku wersji źródłowych zawierających różne zestawy łat, jak również tych oficjalnych. Dystrybucja oferuje również program genkernel umożliwiający proste stworzenie modularnego jądra oraz obrazu initrd, który wykryje i załaduje potrzebne moduły podczas startu systemu.

Konfiguracja 
Cała konfiguracja systemu musi być wykonana samodzielnie. Należy odpowiednio ustawić plik fstab, uruchamiane usługi, używane moduły jądra (chyba że do kompilacji jądra użyto genkernela) itp. Pliki konfiguracyjne usług Gentoo znajdują się w katalogu /etc/conf.d/. Gentoo udostępnia narzędzia rc-status, rc-update, eselect oraz inne (np. java-config) do ułatwionego zarządzania zainstalowanymi usługami i programami. Jednym z najważniejszych plików konfiguracyjnych jest make.conf znajdujący się w katalogu /etc/portage. W nim ustala się parametry dla kompilatora, flagi USE i inne ustawienia Portage.

Program rozruchowy 
Ostatnim krokiem przed uruchomieniem Gentoo jest zainstalowanie jednego z programów rozruchowych (ang. bootloader). Umożliwi on uruchomienie systemu bez pomocy jakiegokolwiek zewnętrznego medium. Najpopularniejszymi bootloaderami są GRUB oraz LILO.

Dystrybucje oparte na Gentoo 
 Ututo – pierwsza całkowicie wolna dystrybucja GNU/Linuksa
 VidaLinux Desktop OS – projekt mający za zadanie usprawnienie instalacji Gentoo i uczynienie jej prostą dla przeciętnego użytkownika. Dostarcza on rozruchowej płyty CD zawierającej instalator anaconda znany np. z dystrybucji Fedora.
 Kororaa (wersje do roku 2007) – znana jest głównie z „Xgl Live CD”, czyli wersji livecd z zainstalowanym Xgl. Była to pierwsza dystrybucja, w której nie trzeba było nic robić, aby zobaczyć możliwości XGL.
 Litrix
 Sabayon Linux
 Gentoox – dystrybucja optymalizowana do działania pod konsolą Xbox.
 Pentoo
 Navyn OS
 BinToo
 LinOS – ograniczony tylko do startowania z płyty i uruchomienia Internetu.
 incognito LiveCD – umożliwia anonimowe korzystanie z Internetu.
 SystemRescueCd – oparty na Gentoo livecd wyposażony w narzędzia do naprawy systemu.
 reGen2 – zawiera kilka udogodnień, np. drzewo portage oparte na systemie kontroli wersji Git.
 Calculate Linux

Przypisy

Linki zewnętrzne