May 1, 2025, Thursday, 120

SK Zadanie 1

From Łukasz Graczykowski

Revision as of 15:22, 5 October 2016 by Lgraczyk (Talk | contribs)
Jump to: navigation, search

Contents


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:

  1. otwieramy aplikację VirtualBox (wybieramy Applications w górnym menu),
  2. włączamy kreator tworzenia nowej maszyny wirtualnej (Machine -> New)
  3. Name: student
  4. Type: Linux
  5. 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.
  6. 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)
  7. 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.
    1. Hard disk file type: VDI (VirtualBox Disk Image)
    2. 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)
    3. 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/.

Open-cdrom.png

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

  1. Uruchamiamy maszynę wirtualną (zaznaczamy maszynę w oknie VirtualBox'a i klikamy Start w górnym menu)
  2. W oknie Welcome wybieramy język angielski i klimay Install Ubuntu MATE
  3. W kolejnym oknie zaznaczamy ściąganie aktualizacji i nie zaznaczamy ściągania dodatkowego oprogramowania (kodeków MP3, itp.)
  4. 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]
  5. 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:
    1. 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.
    2. Partycja wymiany (swap)
      • Rozmiar: 2 GB (pozostały rozmiar dysku)
      • Typ: logical
      • Location: Beginning of this space
      • Use as: swap area
  6. Klikamy Install now i Continue
  7. W opcji wyboru lokacji zostawiamy Warsaw i klikamy Continue
  8. W ekranie wyboru klawiatury ustawiamy Polish - Polish i klikamy Continue
  9. 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
  10. Na koniec instalacji wyskoczy okienko Installaction complete - klikamy Restart Now
  11. 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
  12. Po restarcie pojawi się okno logowania - logujemy się na użytkownika student i w zasadzie mamy działający system
  13. 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:

  1. 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.
  2. 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.
  3. 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:

  1. Proszę pobrać tekst Romeo i Julii po angielsku:

wget http://db.fizyka.pw.edu.pl/sk-2015/_downloads/pg1112.txt

  1. Sprawdzić, w którym katalogu się znajdujemy (pwd)
  2. Stworzyć w katalogu /tmp katalogi foo i bar (do tworzenia katalogów polecenie mkdir, do przejścia do katalogu polecenie cd)
  3. Skopiować do katalogu foo plik z tekstem dramatu (cp)
  4. Przejść do katalogu bar i wyświetlić zawartość dramatu za pomocą ścieżki absolutnej (cat)
  5. 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

Instalowanie oprogramowania

Wszystkie sytemy operacyjne Linux przychodzą z (mniej lub bardziej bogatym) zestawem oprogramowania oraz narzędziami do automatycznej instalacji programów. Instalowanie programów w systemach Linux przypomina bardziej znane ze smartfonów aplikacje typu Google Play czy Apple Store, które pozwalają na automatyczną instalację zweryfikowanych aplikacji. W systemach Linux tego typu "sklepy" z (darmowym) nazywamy najczęściej repozytoriami a programy (jak i dodatkowe biblioteki) pakietami lub paczkami. Takie podejście jest znacznie bezpieczniejsze i pewniejsze niż uruchamianie losowych plików typu setup.exe ściągniętych z podejrzanych stron.

Uwaga: Oczywiście w systemie Linux istnieje możliwość ściągnięcia i zainstalowania programu, który nie istnieje w repozytoriach. Z reguły ściągamy wtedy archiwum ze skompilowany programem, po czym uruchamiamy dołaczony do niego skrypt instalacyjny.

W Ubuntu (i innych ystrybucjach pochodzących od systemu Debian) do zarządzania pakietami/paczkami służą narzędzia dpkg oraz apt.

Uwaga: Niektóre dystrybucje Linuxa (np. nasze Ubuntu) posiadają całkiem użyteczne graficzne nakładki na system instalacji pakietów z repozytoriów (np. program Synaptic). Taki graficzny program to już w zasadzie to samo co “sklepy” w smartfonach.

Typy repozytoriów w Ubuntu

Żródła z których pobieramy oprogramowanie są opisane w pliku /etc/apt/sources.list.

Domyślne repozytorium Ubuntu podzielone jest na 4 części:

  • Main – aplikacje o otwartym kodzie źródłowym szczególnie ważne i potrzebne, wspierane przez developerów Ubuntu
  • Restricted – programy dodatkowe, niewspierane przez Ubuntu, nieoparte na wolnej licencji
  • Universe – także niewspierane do końca pakiety Open Source
  • Multiverse – niewspierane i niewolne oprogramowanie

Do tego pliku można dopisywać kolejne repozytoria będące poza kontrolą dostawcy.

Przeszukiwanie pakietów

Po zmianie konfiguracji repozytoriów (tj. modyfikacji pliku /etc/apt/sources.list) nalezy pobrać informacje o pakietach z repozytorium. Służy do tego komenda

sudo apt-get update

Komenda sudo apt-get update pobiera również informacje o nowych pakietach, które wydali twórcy Ubuntu i dobrze ją wykonać przed każdą czynnością dotyczącą pakietów.

Do aktualizacji pakietów służy komenda:

sudo apt-get upgrade lub sudo apt-get dist-upgrade
(druga komenda nie tylko aktualizuje zainstalowane pakiety, ale również usuwa pakiety już niepotrzebne i usuwa niepotrzebne zależności między pakietami)

Do przeszukiwania repozytorium pakietów służy program apt-cache. By wyszukać pakiety, które mają w nazwie lub opisie ciąg znaków foo, należy napisać polecenie:

apt-cache search foo

By wyszukiwać tylko w nazwie pakietu należy wpisać:

apt-cache search -n foo

Zadanie 4: instalacja pakietów

Odnaleźć nazwę pakietu który dostarcza serwer ssh, w tym celu proszę przeszukać paczki które w nazwie mają ssh a następnie za pomocą grep znaleźć paczki które w nazwie mają server.

Za pomocą apt-get install zainstalować program emacs oraz serwer ssh (openssh-server).

Należy pamiętać o komendzie sudo apt-get update!