From Łukasz Graczykowski
Wirtualizacja
Wirtualizacja - jest jednym ze sposobów wydajniejszego wykorzystania sprzętu komputerowego; w naszym przypadku zajmiemy się wirtualizacją systemu operacyjnego, czyli uruchomieniem dwóch systemów operacyjnych na jednym komputerze jednocześnie.
Wyróżniamy:
- Host (lub “matka”) — system, w którym uruchomione są inne systemy operacyjne (poprzez odpowiednie oprogramowanie)
- Guest (lub "gość") — system, który jest uruchomiony w oprogramowaniu symulującym komputer, które działa na hoście. Jeden host może mieć uruchomionych wiele systemów operacyjnych typu guest. Tego typu wirtualny kompuer nazywamy maszyną wirtualną.
Kiedy wirtualizacja jest przydatna?
- Gdy pracujemy na Windows'ie a musimy uruchomić program napisany pod Linux'a w tym samym czasie
- W dużych zespołach programistycznych - każdy projekt ma dedykowany szablon maszyn wirtualnych, który jest skonfigurowany pod potrzeby tego projektu. W ten sposób programista może pracować nad dwoma projektami, które wymagają różnych konfiguracju systemu operacyjnego.
- Na potrzeby testowania i wdrażania aplikacji. Możemy testować działanie tej samej aplikacji na różnych konfiguracjach systemu operacyjnego (czy nawet na różnych systemach operacyjnych).
- W celu sprawdzenia komunikacji między aplikacjami - każda maszyna wirtualna (każdy system guest) może otrzymać swój indywidualny adres IP w sieci i być widoczny dla hosta i innych komputerów jako rzeczywista maszyna.
W przypadku laboratorium z Sieci komputerowych tworzymy maszynę wirtualną po to, by Państwo mieli pełną kontrolę nad systemem operacyjnym. Przykładowo, ewentualne przypadkowe usunięcie plików systemowych w maszynie wirtualnej uniemożliwi pracę tylko systemowi guest, host zaś będzie pracował normalnie.
Zadanie 1: tworzenie maszyny wirtualnej
Istnieje wiele programów (narzędzi wirtualizacji), które umożliwiają wirtualizację systemu operacyjnego. W naszym przypadku wykorzystamy program VirtualBox firmy Oracle. Jest on już zainstalowany na komputerach w laboratorium.
W celu stworzenia nowej maszyny wirtualnej postępujemy według poniższego schematu:
- otwieramy aplikację VirtualBox (wybieramy Applications w górnym menu),
- włączamy kreator tworzenia nowej maszyny wirtualnej (Machine -> New)
- Name: student
- Type: Linux
- Version: Ubuntu (64 bit)
-
Uwaga: w laboratorium będziemy używać systemu Linux Ubuntu 16.04 LTS w wersji o 64-bitowej architekturze procesora ze śrdowiskiem graficznym MATE. Na 64-bitowym hoście można postawić system typu guest o architekturze zarówno 64 jak i 32 bity. Na 32-bitowym hoście możliwe jest postawienie tylko 32-bitowego systemu typu guest.
- Memory size: 3 GB (trzeba pamiętać, że pula pamięci RAM jest wspólna dla obu systemów - jeśli udostępnimy za dużo systemowi goszczącemu, możemy doprowadzić do problemów z działaniem hosta)
- Hard disk: wybieramy Create a virtual hard disk now
-
Uwaga: dysk maszyny wirtualnej będzie widoczny tylko w systemie typu guest. Na maszynie typu host będzie to po prostu zwykły plik.
- Hard disk file type: VDI (VirtualBox Disk Image)
- Storage on physical hard disk: Dynamically allocated (rozmiar pliku na dysku hosta będzie się zwiększał w zależności od zajętości miejsca w systemie gościa)
- File location and size: w pierwszym polu wpisujemy nazwę dysku dla naszej maszyny (np. student, dysk zostanie utworzony w katalogu domowym), natomiast rozmiar ustawiamy trochę większy od domyślnego (np. 10 GB)
W tym momencie maszyna wirtualna jest już utworzona. Aby zainstalować system, musimy "włożyć" do wirtualnego napędu maszyny wirtualnej obraz płyty ISO z systemem operacyjnym. W tym celu należy zaznaczyć utworzoną maszynę oraz kliknąć przycisk Settings (lub kliknąć prawy przycisk myszy i również wybrać Settings). Następnie przechodzimy do Storage i tam klikamy na ikonę płyty (podpisaną Empty) znajdującą się pod polem Controller: IDE. Następnie w menu wybieramy opcję Choose Virtual Optical Disk File. W okienku wyboru pliku wybieramy plik .iso z folderu /opt/sk/shared/iso/
.
W tym momencie mamy stworzoną maszynę wirtualną z włożoną "płytą" do wirtualnego napędu optycznego. Możemy zatem przejść do Zadania 2.
Zadanie 2: instalacja systemu Linux Ubuntu
- Uruchamiamy maszynę wirtualną (zaznaczamy maszynę w oknie VirtualBox'a i klikamy Start w górnym menu)
- W oknie Welcome wybieramy język angielski i klimay Install Ubuntu MATE
- W kolejnym oknie zaznaczamy ściąganie aktualizacji i nie zaznaczamy ściągania dodatkowego oprogramowania (kodeków MP3, itp.)
- W kolejnym oknie z menu wyboru dotyczącym sposobu instalacji wybieramy Something else (sami przeprowadzimy partycjonowanie dysku)
-
Uwaga: polecane jest zapoznanie się z hierarchią systemu plików w systemach Linux - [link]
- W kolejnym oknie zaznaczamy dysk
/dev/sda
oraz klikamy New Partition Table i następnie w oknie Continue - pojawi się free space
. Tworzymy dwie partycje:
- Partycja głównego systemu plików
- Rozmiar: 8 GB
- Typ: primary
- Location: Beginning of this space
- Use as: Ext4 journaling file system
- Mount point: /
-
Uwaga: W tej konfiguracji wszystkie dane będą na jednej partycji. W praktyce raczej przydziela się partycje na wybrane podkatalogi; przykładowo katalog /home często tworzony jest na oddzielnej partycji.
- Partycja wymiany (swap)
- Rozmiar: 2 GB (pozostały rozmiar dysku)
- Typ: logical
- Location: Beginning of this space
- Use as: swap area
- Klikamy Install now i Continue
- W opcji wyboru lokacji zostawiamy Warsaw i klikamy Continue
- W ekranie wyboru klawiatury ustawiamy Polish - Polish i klikamy Continue
- W ekranie Who are you? wpisujemy:
- Your name: student
- Your computer's name: student-XX, gdzie XX to numer komputera
- Pick a userame: student
- Choose a password: student
- Zaznaczamy opcję, by wpisywać hasło przy logowaniu
- Na koniec instalacji wyskoczy okienko Installaction complete - klikamy Restart Now
- Pojawi się ekran proszący o wyjęcie płyty - sprawdzamy, czy obraz iso jest w wirtualnym napędzie (Settings -> Storage), jeśli tak - usuwamy i następnie restartujemy system
- Po restarcie pojawi się okno logowania - logujemy się na użytkownika student i w zasadzie mamy działający system
- Możemy zauważyć, że okienko maszyny wirtualnej ma dość niską rozdzielczość i nie można tego rozmiaru zmienić. W tym celu istalujemy tzw. VirtualBox GuestAdditions:
- otwieramy terminal (Applications -> System tools -> MATE Terminal) i wpisujemy:
sudo apt-get install virtualbox-guest-utils
- po pomyślnej instalacji restartujemy system
Ustawienia sieci maszyny wirtualnej
Ważnym elementem konfiguracji maszyny wirtualnej jest jej podłączenie do sieci (Settings -> Network -> Adapter 1 -> Attached to). Może ona działać w jednym z trzech możliwych trybów:
- NAT - maszyna funkcjonuje w wirtualnej podsieci. Jest to analogiczna sytuacja, gdy ustawiamy router, który tworzy własną sieć lokalną i do niego podłączamy komputer (w tym przypadku takim routerem jest host). Adres IP maszyny wirtualnej nie jest widoczny na zewnątrz.
- Host-only-network - podobnie jak wyżej, ale maszyna wirtualna ma dostęp do innych maszyn wirtualnych tego samego hosta oraz samego hosta. Maszyna wirtualna nie jest widoczna na zewnątrz.
- Bridged Adapter - maszyna wirtualna jest podpięta bezpośrednio do interfejsu sieciowego hosta i będzie widoczna w sieci jako kolejne urządzenie podłączone bezpośrednio do niej. Nasz system dostanie adres IP z puli sieci oraz będzie widoczny dla wszystkich innych komputerów w tej sieci tak jakby to było fizyczne urządzenie.
Na chwilę obecną pozostawiamy ustawienie NAT, jednakże w dalszej części laboratorium będziemy sposób podłączenia zmieniać.
Zadanie 3: powtórzenie podstawowych komend systemu Linux
Na zajęciach z Sieci komputerowych będziemy pracować w systemie Linux z dużym wykorzystaniem terminala i powłoki bash
i stopniowo poznawać bardziej zaawansowane komendy.
Pierwszym zadaniem jest przypomnienie sobie podstawowych komend, znanych jeszcze z PTI:
- Proszę pobrać tekst Romeo i Julii po angielsku:
wget http://db.fizyka.pw.edu.pl/sk-2015/_downloads/pg1112.txt
- Sprawdzić, w którym katalogu się znajdujemy (
pwd
)
- Stworzyć w katalogu
/tmp
katalogi foo
i bar
(do tworzenia katalogów polecenie mkdir
, do przejścia do katalogu polecenie cd
)
- Skopiować do katalogu
foo
plik z tekstem dramatu (cp
)
- Przejść do katalogu
bar
i wyświetlić zawartość dramatu za pomocą ścieżki absolutnej (cat
)
- Skopiować dramat z katalogu
foo
do bar
za pomocą ścieżki względnej
Podstawy administracji systemem Linux
Użytkownik administracyjny i komenda sudo
W systemie Linux istnieje bardzo mocno wymuszany podział na administratora komputera oraz zwykłego użytkownika (w nowszych wersjach systemu Windows został wprowadzony analogiczny mechanizm). Do wykonywania czynności administracyjnych stworzono użytkownika o nazwie root. W nowszych systemach (np. naszym Ubuntu) konto administracyjne jest domyślnie wyłączone (nie da się zalogować na takiego użytkownika), a jego uprawnienia nabywa zwykły użytkownik tymczasowo, z użyciem komendy sudo
.
Komenda sudo pozwala aktualnemu użytkownikowi (o ile spełnia dodatkowo pewne wymagania) wykonywać zadania administracyjne.
Przykłady użycia:
sudo adduser ola # Wykona polecenie adduser ola z uprawnieniami administratora
sudo -i # Zalogouje się do konsoli administratora
sudo -u ola -i # Uruchomi konosolę z zalogowanym użytkownikiem ola