Instalator Gentoo Linux
1.
Wprowadzenie
Obecnie Gentoo nie posiada oficjalnego instalatora. Wielu użytkowników wyraziło
zainteresowanie taką aplikacją, która ułatwiłaby obecny proces instalacji.
Wielu nowych użytkowników Gentoo lub ogólnie Linuksa, uważa proces instalacji za
odstraszający i nawet z silnym zapewnieniem pomocy oraz doskonałą dokumentacją
nadal pozostają niechętnymi do wypróbowania Gentoo. Niektóre osoby oznajmiły, że
jest to jedyny powód przez który jeszcze nie zainstalowały lub wypróbowały
Gentoo. Obecny proces instalacji nadal będzie dostępny dla osób, które go
wybiorą.
Projekt Instalatora Gentoo Linux zamierza stowrzyć normatywną platformę
instalacyjną zarówno dla systemów serwerowych jak i biurkowych. Ogólnie celem
instalatora jest spójność pomiędzy architekturami, użyteczność dla wszystkich
użytkowników i elastyczność. Sekcja o funkcjonalności da lepsze pojęcie o
szczegółach, ale wystarczy powiedzieć, że będzie dla wszystkich użytkowników, na
wszystkich poziomach zaawansowania, dla wszystkich środowisk.
2.
Funkcjonalność
Dalej znajduje się lista funkcjonalności, które będzie posiadał instalator.
Lista nie jest zbyt wyczerpująca, ale powinna dać lepsze pojęcie co będzie
możliwe. Nie wszystkie wymienione funkcjonalności będą do wykorzystania przez
wszystkich użytkowników, ale idea jest taka, aby zapewnić spójność dla
wszystkich użytkowników i tym samym trzymać się mantry "jeśli nie dla mnie, to
dla kogoś innego".
Liczne interfejsy końcowe
Instalator będzie posiadał wymienne interfejsy użytkownika a część spośród
nich będzie pracowała w środowiku X. Ponieważ niektóre platformy są częściej
instalowane z wykorzystaniem urządzeń, które nie współpracują ze środowiskiem X
windows (instalacja z wykorzystaniem konsoli szeregowej Sun, itp), będą
rozwijane także interfejsy tekstowe. Użytkownicy będą mogli rozwijać własne
interfejsy (każdego rodzaju) według własnego upodobania, ale ze względów na
wsparcie techniczne, na początku tylko jeden interfejs tekstowy i jeden
graficzny może być oficjalnie wspierany.
Odnawialna struktura wewnętrzna
Rzeczywistą siłą napędową instalatora będzie zbiór API, które będą wywoływane z
pożądanego klienta. Aby utrzymać czystą i pełną separację funkcjonalności i
interfejsu użytkownika, zostanie ustanowiona ogólna platforma dla narzędzi,
które będa chciały kontrolować proces instalacji systemu Gentoo. Przyczyni się
to również do dużej spójności pomiędzy wszystkimi platformami i środowiskami.
Automatyczne wdrożenie
Instalator będzie wpierał automatyczne wdrożenie używając wcześniej
skonfigurowanych profili instalacji. To pozwoli na łatwą instalację w większych
środowiskach z podobnym sprzętem lub w sytuacjach kiedy pragnie się
przechowywać kopię zapasową parametrów świeżej instalacji w celu szybkiego
odzyskiwania maszyny w razie awarii.
Generacja profilu próbnego uruchomienia
Użytkownicy będa w stanie stworzyć profil instalacji przechodząc przez
wszystkie kroki instalatora ale w rzeczywistości nie podejmując żadnych
kroków. Wszystkie dane wygenerowane przez użytkownika będą zamienione na profil
instalacji (reprezentowany jako dokument XML), który następnie będzie można
wykorzystać do automatycznego wdrożenia.
Pełne wsparcie dla wszystkich architektur Gentoo
Warunkiem koniecznym dla projektu instalatora jest wsparcie dla wszystkich
architektur wspieranych przez Gentoo. To oznacza wsparcie (ale nie tylko) dla
x86, ppc, sparc, alpha, amd64, mips, hppa i itanium. (Jedynym wyjątkiem są
urządzenia wbudowane. Jest to spowodowane bardzo wyspecjalizowanym środowiskiem,
do którego instalator może się niedostosować.)
Wyspecjalizowane profile
Wyspecjalizowane profile, takie jak SELinux, będą wspierane na równi z
tradycyjnymi (na podstawie procesora) architekturami. Wyspecjalizowane profile
będą wspierały dodatkowe funkcjonalności i wymagania odpowiednich procesów
instalacyjnych.
Użycie otwartych standardów i polityk
Wszędzie, gdzie będzie to możliwe, instalator będzie używał otwartych formatów
i standardów aby dobrze współpracować z innymi narzędziami rozwijanymi przez
użytkowników, tj formaty plików (XML), protokoły sieciowe, itp. Możliwości
użycia alternatywnych narzędzi zostanie poświęcona specjalna uwaga.
Integracja z przyszłymi projektami konfiguratorów
Wszędzie, gdzie to możliwe, instalator będzie się integrował ze specyficznym dla
Gentoo systemem narzędzi konfiguracyjnych, aby ułatwić konfiguację
poinstalacyjną maszyn. Wsparcie dla narzędzi z poza Gentoo, tj cfengine może być
również uwzględnione.
3.
Projekt i struktura
Struktura instalatora musi być na tyle ogólna aby wspierać wyżej wymienione
funkcjonalności i jednocześnie nie spowodować aby proste zadania stały się
trudnymi a obsługiwalność stała się skomplikowana.
Główne wymagania projektowe:
- Liczne interfejsy użytkownika muszą być wspierane (wsparcie modelu
abstrakcyjnego)
- Zachowanie pełnej separacji modelu, widoku i logiki kontrolnej
- Wszystkie funkcjonalności muszą być wspierane bez względu na rodzaj
interfejsu użytkownika i architekturę
- Możliwość automatycznego wdrożenia musi być zawsze dostępna
No i w końcu, platforma instalacyjna (jak cały system jest nazwany) jest
podzielona na trzy główne części.
Interfejs końcowy (Klient)
Klient jest interfejsem użytkownia do systemu. Zawiera całą logikę i wsparcie
dla interfejsu użytkownika, a także, mniej ważne informacje o stanie tymczasowej
konfiguracji klienta, w tym parametry podane w wierszu poleceń, zmienne
środowiskowe, wywołania metod (interaktywne/nieinteraktywne), miejsca logowania,
URI serwerów z pakietami binarnymi, i inne. Niektóre ustawienia pozostaną w
procesie instalacji, ale większość z nich nie.
Użytkownik będzie mógł użyć pożądanego interfejsu końcowego w celu
wygenerowania profilu instalacji, który będzie wykorzystany w późniejszym
wdrożeniu i w tym aspekcie może być też uważany za narzędzie do generowania
profilu.
W późniejszym czasie możliwa jest również integracja klienta z
systemowymi narzędziami konfiguracyjnymi.
Generalnie klient jest "głupi" i nieświadomy implementacji logiki aktualnego
procesu instalacji, chociaż logika niektórych architektur będzie obecna.
Element przetwarzający (API lub struktura wewnętrzna)
Daniem głównym instalatora jest zbiór obiektowo zorientowanych API,
które wydobywają właściwe polecenia wykonywane w celu instalacji systemu.
Struktura wewnętrzna jest czymś abstrakcyjnym i dlatego jej zachowanie zależy od
użytego szablonu architektury. Liczba wykonanych kroków w dużej mierze zależy
od wymagań i implementacji szablonu architektury (pliku XML, który jest podobny
do informacji dostarczanych przez /etc/make.profile).
Ponieważ struktura wewnętrzna jest oddzielona od klienta może zostać użyta przez
zróżnicowane produkty instalacyjne rozwijane przez użytkowników. Główne klasy są
następujące:
-
Klasa kontrolująca, która dyktuje, na podstawie szablonów architektury
(pliku XML), jakie kroki wykonywać w jakiej kolejności.
Ta klasa jest rdzeniem calej logiki.
-
Klasa profilu instalacji utrzymująca wszystkie informacje o instalacji,
takie jak schemat podziału na partycje, flagi kompilatora, flagi use i inne
tego typu dane. Klasa będzie mogła serializować się do pliku XML, który
będzie mógł być umieszczony na serwerze automatycznego wdrożenia i być
wykorzystany w późniejszym czasie.
Inne, mniej ważne klasy będą mogły być wykorzystane do pośredniczącego wsparcia,
ale te dwie klasy scalają to co ma być uznawane za publiczne dla deweloperów
klientów.
Serwer wdrożeniowy
Trzeci komponent prawdopodobnie zainteresuje tylko tych, którzy korzystają z
funkcji automatycznego wdrożenia. W rzeczywistości serwer wdrożeniowy
jest tylko kobinacją usług i plików.
Profile instalacyjne mogą być przechowywane na komputerze i serwowane za pomocą
serwera rsync. Klient (a dokładniej element przetwarzający) jak tylko dostanie
URI serwera rsync pobierze wszystkie dostępne profile. Tak to wygląda z jednej
strony.
Na serwerze wdrożeniowym mogą również działać usługi tftp i dhcp aby ułatwić
bootowanie przez sieć dla dużych instalacji. To zazwyczaj pociąga za sobą wymóg
wsparcia bootowania przez sieć również na maszynach klienckich, ale do tego mogą
posłużyć specjalnie dostosowane płyty liveCD z Gentoo.
W skrócie, serwer wdrożeniowy nie jest specyficznym demonem czy usługą, ale
kombinacją ogólnie dostępnych i standardowych usług. Pomysł polega na tym, aby
wykorzystać usługi, które mogły już wcześniej działać w sieci użytkownika.
4.
Proces
Faktyczny proces, tzn jakie kroki należy przeprowadzić, w jakiej
kolejności i jak, jest określony przez szablony architektur.
W znacznej większości szablon architektury będzie się pokrywał
z krokami opisanymi w Podręczniku Gentoo.
Specjalne szablony architektury, jak np wcześniej wspomniany SELinux mogą używać
tego samego mechanizmu do zmiany standardowego procesu instalacji. Schemat dla
architektury będzie zmieniał domyślne zachowanie podane w schemacie
podstawowym. Dzęki temu, każdy szablon architektury nie będzie musiał
specyfikować rzeczy takich jak synchronizacja drzewa portage,
emergowanie systemu czy innych podobnych kroków, które występują we
wszystkich architekturach.
5.
Kontakt
Deweloperzy pracujący nad Instalatorem Gentoo gromadzą się w dwóch miejscach.
Kanał IRC #gentoo-installer (w sieci Freenode) jest głównym forum dyskusyjnym,
gdzie wiele kwestii jest rozstrzyganych na bieżąco. Na bardziej ogólne dyskusje
przeznaczona jest lista dyskusyjna. Można się na nią zapisać wysyłając email na
adres gentoo-installer-subscribe@lists.gentoo.org.
6.
Autorzy i współpracownicy
Wszystkie informacje i pomysły przekazane w tym dokumencie zostały wyłuskane z
wielu rozmów prowadzonych w wielu różnych miejscach.
Na kanale #gentoo-installer blackace, dams, esammer, iggy, karltk, klieber,
Method, pauldv, port001, Ramereth, Rupart, spyerdous, npmmcullum i tseng.
Inne osoby również pomogły ale aktualnie, podczas pisania tego szkicu projektu,
są nieaktywni na kanale.
Lista dyskusyjna desktop-research była miejscem, w którym ten projekt powstał
jako oficjalny projekt Gentoo w obecnym składzie. Podziękowania również dla osób
z tej listy.
Kanał #gentoo-server był pomocny w zbieraniu zaleceń i informacji
o automatycznym wdrożeniu. Podziękowania również dla nich.
Ten dokument odwołuje się do wielu rozmów i pomysłów i jest pracą zbiorową
społeczności Gentoo.
Materiał udostępniany na podstawie licencji Creative Commons -
Attribution / Share Alike.
|