===== Maszyny wirtualne do zajęć z administracji =====
==== Motywacja ====
W czasie zajęć z administracji ([[lab_admin1]] i [[lab_admin2]]) będziemy psuć system (czasem specjalnie, czasem przypadkiem ;-) ) dlatego:
* **NIE chcemy** korzystać z Linuxa zainstalowanego normalnie na dysku -- jak zepsujemy to przywrócenie będzie długotrwałe (a dodatkowo części rzeczy możemy nie być w stanie przywrócić)
* **NIE chcemy** korzystać z serwera SPK -- nie mamy tam dostępu root (więc nie mamy możliwości psucia)
* **CHCEMY** korzystać z __maszyn wirtualnych__ -- jest to "system wewnątrz systemu", który w razie potrzeby w kilka minut będzie można przywrócić do stanu początkowego jeżeli zepsujemy tak, że naprawić się nie będzie dało ;-)
==== Wymagania ====
Potrzebujemy maszynę wirtualną, która spełnia kilka wymagań:
* Zainstalowany system Linux z GNU Coreutils, bash, jakimś edytorem tekstowym: nano/vim/mcedit/... (albo dostęp do repozytorium pakietów i możliwość szybkiego doinstalowania brakujących rzeczy)
* System zarządzany przez systemd (por. [[wp>Systemd#Adoption|lista systemów z systemd na wikipedii]]
* Dostęp do konta root (albo hasło root, albo możliwość zrobienia ''sudo su -'', co pozwala się zalogować na konto roota)
* Możliwość przywrócenia systemu do stanu początkowego w max. kilka minut (gdy np. sformatujemy "przypadkiem" partycję systemową w trakcie działania systemu ;-) )
Wiele systemów spełnia te wymagania, w szczególności najbardziej popularnych jak Ubuntu, Debian, Manjaro, czy Arch Linux, więc jeżeli ktoś **już korzysta** z maszyny wirtualnej z takim systemem to oczywiście można z niej skorzystać do zajęć. UWAGA: w czasie zajęć możemy zepsuć maszynę (prawdopodobieństwo wynosi 99%) dlatego pracuj na kopii maszyny, jeżeli służy Ci jeszcze do czegoś innego.
Jeżeli ktoś **nie posiada** maszyny wirtualnej i nie wie jak uzyskać do niej dostęp / stworzyć ją, należy skorzystać z poniższej instrukcji opisującej jak uzyskać dostęp do systemu Ubuntu Server w oprogramowaniu VirtualBox.
==== Ubuntu Server w VirtualBox ====
=== 1. Przygotowanie ===
- Na początek należy uzyskać dostęp do oprogramowania VirtualBox i do obrazu systemu. Istnieją dwie drogi:
* [[#1.1 VirtualBox w sieci SPK|VirtualBox w sieci SPK]]
* [[#1.2 Własny VirtualBox|Własny VirtualBox]]
== 1.1 VirtualBox w sieci SPK ==
- W sieci SPK jest pięć hostów z zainstalowanym VirtualBoxem dostępnych do realizacji zajęć z administracji (''cnode01''-''cnode05''). Aby dostać się na taką maszynę należy połączyć się z odpowiednim hostem (**wyznaczonym przez prowadzącego zajęcia**) używając konta ''linux00'': ssh -X linux00@cnode00
Hasło zostanie podane przez prowadzącego zajęcia.
- Na każdej z maszyn, w folderze ''clean_system_image'' znajduje się czysty obraz **Ubuntu Server** (pobrany z [[https://www.osboxes.org/ubuntu-server/]]), czyli plik ''*.vdi'', który zawiera **dysk** z zainstalowanym systemem. Na początek należy zrobić **własną kopię** tego pliku -- **nie usuwaj** i **nie używaj** oryginalnego pliku: w razie zepsucia systemu, można będzie ponownie wykorzystać ten domyślny stan dysku, aby przywrócić system do stanu początkowego: # upewnij się, że znajdujesz się w folderze domowym
cd ~
# utwórz folder dla swojej grupy (używając nazw identyfikujących Twoją grupę)
mkdir kkutt_sbobek
# utwórz własną kopię obrazu z maszyną
cp clean_system_image/*.vdi kkutt_sbobek/
# zmień UUID dysku maszyny (VirtualBox pozwala na tylko jeden dysk o danym UUID, żeby móc korzystać z jego kopii, musimy mu zmienić UUID)
VBoxManage internalcommands sethduuid kkutt_sbobek/*.vdi
- Uruchom GUI VirtualBoxa: virtualbox
* Uwaga: Poniższy błąd oznacza, że nie została użyta opcja ''-X'' przy łączeniu się przez SSH z hostem. Połącz się ponownie, tym razem poprawnie. Qt WARNING: QXcbConnection: Could not connect to display
Qt CRITICAL: Could not connect to any X display.
== 1.2 Własny VirtualBox ==
- Zainstaluj VirtualBox z [[https://www.virtualbox.org/wiki/Downloads]]
- Ściągnij obraz **Ubuntu Server** z [[https://www.osboxes.org/ubuntu-server/]] (nie jest konieczna najnowsza wersja; można ściągnąć np. wersję 22.04 Jammy Jellyfish, która ma mniejszy rozmiar niż najnowsza)
- Info: możesz też ściągnąć inną wersję Ubuntu, np. Ubuntu Desktop. Tutaj korzystamy z Ubuntu Server, ponieważ nie ma środowiska graficznego (które nam nie jest potrzebne), dzięki czemu zajmuje dużo mniej miejsca na dysku.
- Rozpakuj pobrane archiwum z obrazem. W środku znajduje się plik ''*.vdi'', który zawiera **dysk** z zainstalowanym systemem. Zapamiętaj gdzie został rozpakowany ten plik (może być gdziekolwiek)
- UWAGA: **nie** usuwaj pobranego archiwum - w razie zepsucia systemu, można będzie ponownie wykorzystać ten domyślny stan dysku, aby przywrócić system do stanu początkowego
- Uruchom VirtualBox
=== 2. Stworzenie i uruchomienie maszyny ===
- W GUI VirtualBox stwórz nową maszynę klikając **Nowa**. Uzupełnij odpowiednio formatkę, która się pojawia:
* Nazwa powinna jednoznacznie identyfikować Twoją grupę, np. "Kutt i Bobek"
* Typ: Linux, Wersja: Ubuntu (64-bit)
* Rozmiar pamięci: pozostaw domyślne 1024 MB (taka wartość powinna się ustawić po wybraniu Linux Ubuntu 64-bit)
* Dysk twardy -> Użyj istniejącego -> wybierz plik ''*.vdi'' zawierający Twoją kopię dysku systemu Ubuntu Server (pobraną na własny komputer albo skopiowaną do własnego folderu na hoście w sieci SPK)
* Kliknij **Utwórz**
- Wybierz nowoutworzoną maszynę z listy i kliknij Uruchom
- Po chwili maszyna uruchomi się.
* Można się zalogować domyślnymi danymi: \\ Username: ''osboxes'' \\ Password: ''osboxes.org''
* Hasło do konta root jest nieznane, ale można je łatwo zmienić. Wystarczy po zalogowaniu na konto ''osboxes'' zrobić następujące dwie rzeczy: sudo su -
passwd
Po tym można będzie logować się na konto root bezpośrednio z ekranu logowania maszyny
- Podczas kolejnych uruchomień maszyny, wystarczy wybrać ją z listy po lewej w GUI VirtualBox i kliknąć przycisk Uruchom
=== 3. Obsługa maszyny: wskazówki i naprawianie ===
* System udostępnia sześć pseudoterminali (tty1-tty6) pomiędzy którymi można się przełączać za pomocą Alt+F1 / Alt+F2 / ... / Alt+F6
* Warto to wykorzystać w czasie zajęć. Np. w jednym terminalu pracujemy jako root i tworzymy konta użytkowników, a w drugim terminalu próbujemy zalogować się jako nowo-utworzony użytkownik i sprawdzamy co się stanie.
* Domyślnie dostępne są edytory **nano** i **vim**.
* Do wykonania instrukcji do zajęć nie potrzeba instalować żadnych dodatkowych pakietów, ale gdyby ktoś czuł taką potrzebę (np. zainstalować edytor **mcedit** to można to zrobić za pomocą narzędzia apt/apt-get z poziomu roota: apt-get update -y # aktualizuje stan pakietów możliwych do pobrania
apt-get install -y mcedit # instalacja pakietu mcedit
* W przypadku zepsucia maszyny w sposób, którego nie da się naprawić:
- Zatrzymujemy maszynę w GUI VirtualBox
- Usuwamy plik dysku, z którego korzystaliśmy
- W jego miejsce wstawiamy wzorcowy obraz dysku:
* pracując na hoście w sieci SPK wystarczy wykonać ponownie polecenie cp clean_system_image/*.vdi kkutt_sbobek/
* pracując na własnej maszynie, bierzemy dysk rozpakowany z pobranego archiwum z obrazem
- Uruchamiamy ponownie naszą maszynę w GUI VirtualBox
- UWAGA: przywróci to maszynę do stanu z początku zajęć (dysk nie będzie zawierał żadnych modyfikacji), więc stracimy wszystko co zrobiliśmy (np. założone konta czy partycje). **Nie ma konieczności powtarzania wszystkich punktów instrukcji! Po prostu idziemy dalej, nauczeni o doświadczenie zepsucia systemu!**