____  _____
   ____ _________  ___  ____  / __ \/ ___/
  / __ `/ ___/ _ \/ _ \/ __ \/ / / /\__ \ 
 / /_/ / /  /  __/  __/ / / / /_/ /___/ / 
 \__, /_/   \___/\___/_/ /_/\____//____/  
/____/                                    

Instalacja greenOS

GreenOS dostarczany jest bez instalatora. Przez co daje ogromne możliwość konfiguracji systemu przed jego pierwszym uruchomieniem. Instalacja składa się z kilku poleceń.

  1. Uruchamiamy na naszej maszynie docelowej jakiegoś Linux-a w wersji Live, może być to dowolna dystrybucja, którą akurat mamy pod ręką. Do instalacji wykorzystywać będzięmy podstawowe narzędzia. GreenOS również jest dostępny wersji LiveCD, można go uruchomić zarówno w trybie BIOS jak i UEFI.
  2. Instalacja greenOS wymaga połączenia z Internetem, skądś należy pobrać paczkę z plikami katalogu głównego (rootfs).

    # dhclient $interface
    

    gdzie $interface to nazwa interfejsu Ethernet w systemie, możemy sprawdzić ją za pomocą polecenia ip a. Jeśli połączenie przewodowe nie jest dostępne, a mamy możliwość skorzystania z sieci bezprzewowdowej (tj. mamy widoczną kartę sieciową w systemie, oraz dostęp do jakiejś sieci bezprzewodowej), to podłaczanie się do sieci bezprzewodowej należy zacząć od włączenia karty, za pomocą polecenia:

    ip link set $interface up
    

    $interface = interfejs sieci bezprzewodowej, następnie przeskanować otoczenie w poszukiwaniu sieci bezprzewodowej, do której mamy dostęp. Do tego celu należy użyć polecenia:

    iwlist $interface scan
    

    Potrzebujemy tylko SSID, a to polecenie zwraca dużą ilość danych, należy przepuścić jej wyjście przez polecenie grep z wyrażeniem "SSID", dzięki temu poleceniu reszta danych wyjściowych zostanie odfiltrowana, a wyświetlone zostaną tylko nazwy sieci (SSID). W większości przypadków, połączenie się z siecią będzie wymagało klucza, w zależności od użytch zabepieczeń różnić się będzie metoda przyłączenia się do sieci. Jeśli nasza sieć używa standardu WPA, wtenczas należy użyć programu wpa_supplicant. Wymaga on pliku konfiguracyjnego, w którym znajdują się deklaracje sieci. Plik ten generuje się przekierowując standardowe wyjście polecenia wpa_passphrase do pliku. Plik może być zapisany gdzie kolwiek, poleceniu wpa_supplicant i tak podajemy ściężkę do niego. `wpa_passphrase` do wygenerowania plik musi mieć SSID sieci oraz klucz PSK, podajemy te informacje jako argumenty pozycjne:

    wpa_passphrease RogueAP 123Test123 > wpa_supplicant.conf
    

    Po wygenerowaniu pliku konfiguracyjnego możemy przyłączyć się do sieci za pomocą polecenia wpa_supplicant.

    wpa_supplicant -B -D wext -i $interface -c $configFile
    

    Gdzie:

    • $interface - nazwa bezprzewodowego interfeju sieciowego w systemie
    • $configFile - plik konfiguracyjny wpa_supplicant, zawierający profile sieci.
    Program powyświetleniu kilku komunikatów, przejdzie w tło, przez co nie będzie zakłócać pracy w terminalu czy konsoli, na której go uruchmiliśmy. Aby upewnić się czy zostaliśmy przyłączeni możemy wydać polecenie:

    iwconfig $interface
    

    Polecenie zwróci informacje na temat połączenia z siecią bezprzwodową w polu Access point:, powiniśmy zobaczyć BSSID punktu dostępowego, jeśli w tym polu widnieje napis Not-Associated oznacza to, że nie zostaliśmy przyłączeni do sieci. Jeśli przyłaczenie się powiodło to jedyne co nam pozostało w tym przypadku to pobrać adres IP z DHCP.

  3. Następną czynnością do wykonania jest partycjonowanie dysku. Tutaj w zależności od trybu jakiego wymaga nasz komputer do działania, czy jest to BIOS czy UEFI, musimy odpowiednio spartycjonować nasz dysk. W trybie UEFI, należy pamiętać partycji EFI. Nie chcę tutaj narzuć jak należy spartycjonować dysk. Jednak poniżej wstawie schemat, który powinien działać w każdym możliwym przypadku:

    Urządzenie Boot Rozmiar Typ partycji
    /dev/sda1 * (Rozmiar dysku - 1GB) Linux
    /dev/sda2 1GB (Reszta) Rozszerzona
    /dev/sda5 1GB (cały rozmiar partycji rozszerzonej) Linux swap / Solaris

    Narzędziem do partycjonowania dostępnym na LiveCD greenOS jest fdisk.

    Partycjonowanie dla UEFI różni się nieco do partycjonowania dla BIOS poza tymi powyższymi partycjami potrzebna będzie jeszcze jedna partycja.

    Urządzenie Boot Rozmiar Typ partycji
    /dev/sda1 nie mniej niż 100MB EFI (FAT-12/16/32)
    /dev/sda2 (pozostała większość - 1GB) Linux
    /dev/sda3 Reszta Rozszerzona
    /dev/sda5 cała partycja rozszerzona Linux swap / Solaris

    Te schematy partycjonowania powinny się sprawdzić. Po zapisaniu zmian na dyskach, należy partycje sformatować na odpowiednie systemy plików. To jest:

    • partycja EFI:
      # mkfs.vfat -F32 /dev/sda1
      
    • partycje Linux-a, np:
      # mkfs.ext4 /dev/sda2
      
    • partycja swap:
      # mkswap /dev/sda5
      

    Po sformatowaniu partycji, tę przeznaczoną na główny system plików montujemy w katalogu np. /mnt lub /media.

    # mount /dev/sda1 /mnt
    

    Następnie aktywujemy swap.

    # swapon /dev/sda5
    
  4. Jeśli główny system plików został poprawnie zamontowany, a inne katalogi głównego systemu plików, takiej jak np. /home czy /usr będą na innych dyskach, to należy utworzyć teraz te katalogi w miejscu montowania głównego systemu pliku i zamontować te dyski, zeby poźniej nie bawić się w kopiowanie. Po ewewntualnym zamontowaniu pozostałych katalogów, możemy pobrać archwium z rootfs, w tym celu przechodzimy do katalogu montowania głównego systemu plików następnie wydajemy polecenie:

    /mnt# wget http://ftp.morketsmerke.net/greenOS/archiwum_z_systemem.tgz
    

    Po ściągnięciu archiwm należy je rozpakować, do tego wystarczy użyć polecnia tar z odpowiednimi przełącznikami.

    # tar -xzvf rootfs.tgz
    

    Po rozpakowaniu, archiwum należy usunać aby nie zalegało na dysku.

  5. Teraz kiedy mamy już pliki dystrybucji, możemy wygenerować plik /etc/fstab, w tym celu przekierujemy wyjście polecenia blkid, do pliku /mnt/etc/fstab.

    # cd
    # blkid > /mnt/etc/fstab
    

    Niestety samo przkierowania wyjścia blkid nie wygeneruje poprawnego pliku fstab, jednak zaoszczędzi nam przepisywania UUID-ów. Poniżej zamieszcze listing zawierający poprawne wpisy dla poszczególnych partycji.

    # Partycja EFI dla instalacji UEFI.
    UUID="..."  /boot/efi vfat  umask=0077  0 1
    
    # Partycje Linuxa
    UUID="..."  $mountPoint ext4  defaults  0 1
    
    # Partycja swap
    UUID="..."  none  swap  sw  0 0
    

    $mountPoint - punkt montowania, może być: / jak i /home.

  6. Po wygenerowaniu fstab, przyszedł czas na ustawienie nazwy komputera dla instalowanego systemu. Należy zrobić w dwóch miejscach w pliku /mnt/etc/hostname oraz /mnt/etc/hosts pod wpisem adresu 127.0.1.1. Nazwa komputera może składać się z małych i dużych liter, cyfr oraz myślinika.

  7. Pozostałe czynności należy wykonać już na zmienionym katalogu głównym. Ta zmiana spowoduje, że będzemy mogli działać na instalowanym systemie. Ale zanim to jednak nastąpi musimy podmontować w instalowanym systemie kilka katalogów systemowych, aby np. z poziomu zmienionego root-a (katalogu głównego), był widoczny dysk twardy, aby była możliwość zainstalowania programu rozruchowego (GRUB-a), w tym celu wykorzystamy jedną z konstrukcji powłoki:

    Dla instalacji w trybie BIOS:

    # for i in /dev /dev/pts /proc /run /sys; do mount -B $i /mnt$i; done
    

    Dla instalacji w trybie UEFI:

    # for i in /dev /dev/pts /proc /run /sys /sys/firmware/efi/efivars; do mount -B $i /mnt$i; done
    

    Po zamontowaniu powyższych katalogów, możemy zmienić katalog główny.

    # chroot /mnt /bin/bash
    

    W tym momencie powinniśmy przeskoczyć automatycznie do katalogu głównego, nic innego się nie zmieni, co może nie dezorientujące dlatego warto zmienić sobie znak zachęty (prompt), aby rozróżnić zmieniony katalog główny od katalogu systemu z LiveCD.

    # export PS1="(chroot) ${PS1}"
    

    Teraz nie pownniśmy mieć wątpliwości, w którym z katalogów głównych się znajdujemy. Teraz możemy zająć się ustawianiem haseł oraz użytkowników. Na początek zmienimy hasło użytkownika root. Wszystkie polecenia wykonywane na zmienionym katalogu głównym są oznaczone przedrostkiem (chroot)

    (chroot)# passwd
    

    Następnie utworzymy nowego użytkownika, z którego konta będziemy korzystać podczas pracy na komputerze.

    (chroot)# adduser $username
    

    $username - nazwa użytownika.

  8. Ostatnią czynnością została instalacja programu rozruchowego, istnieje pełna dowolność, jednak w pobranym rootfs, zainstalowany został już GRUB dla i386-pc, więc przy instalacji w trybie UEFI lub wykorzystaniu przez nas innego bootloadera trzeba będzie zainstalować odpowiedni pakiet. W tym przewodniku skupie się wyłącznie na GRUB. Instalacja GRUB w trybie BIOS wygląda następująco.

    (chroot)# grub-install $disk
    

    Gdzie $disk - wystąpienie dysku w katalogu /dev, tj. /dev/sda, /dev/sdb itp. Po zainstalowaniu GRUB na dysku, pozostało jedynie wygenrowanie pliku konfiguracyjnego GRUB-a.

    (chroot)# update-grub
    

    Powyższe polecenie wygeneruje pliki konfiguracyjne GRUB-a. Po wykonaniu tej czynności instalacja jest zakończona, pozostaje tylko posprzątać.

    Instalacje w trybie UEFI, przeprowadza się w nieco inny sposób. Żeby zainstalować GRUB-a w trybie UEFI, będziemy potrzebować odrębnego pakietu niż ten, który jest zainstalowany.

    (chroot)# apt update
    (chroot)# apt install grub-efi
    

    Po instalacji pakietu musimy zamontować partycje EFI, aby to zrobić należy utworzyć dla niej odpowiedni punkt montowania, będzie nim katalog /boot/efi:

    (chroot)# mkdir /boot/efi
    

    Po utworzeniu katalogu montujemy partycję EFI.

    (chroot)# mount $efiPartition /boot/efi
    

    Gdzie $efiPartition jest partycją EFI w systemie. Po zamontowaniu, możemy przejść do instalacji GRUB-a.

    (chroot)# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian
    

    Ostatnia czynność jest identyczna dla obu trybów, pozostało wygenerować plik konfiguracyny.

    (chroot)# update-grub
    

    Po wygenerowaniu pliku konfiguracyjnego GRUB-a czy to w trybie UEFI czy BIOS, opuszczamy zmieniony katalog główny.

    (chroot)# exit
    

    Sprzątnie w tym wpadku będzie polegać na kulturalnym odmontowaniu systemów plików. Do tego celu wykorzystamy konstrukcję powłoki, która została już raz użyta podczas instalacji.

    # umount -R /mnt
    

    Instalacja została zakończona, jedyne co pozostaje to uruchomić ponownie komputer.