From Łukasz Graczykowski
            (Difference between revisions)
                                                
            
			
			
			
			
		
		|   |   | 
| Line 167: | Line 167: | 
|  |  |  |  | 
|  | Przy dodawaniu użytkowników można: |  | Przy dodawaniu użytkowników można: | 
| - | * Ustawić domyślną powłokę dla użytkownika (np. na /bin/sh, albo /bin/false), | + | * Ustawić domyślną powłokę dla użytkownika (na inną niż ''bash'', np. <code>/bin/sh</code>, albo <code>/bin/false</code>), | 
|  | * Ustawić położenie katalogu domowego, |  | * Ustawić położenie katalogu domowego, | 
|  | * Wyłączyć możliwość logowania hasłem, |  | * Wyłączyć możliwość logowania hasłem, | 
|  | * Wyłączyć możliwość logowania w ogóle. |  | * Wyłączyć możliwość logowania w ogóle. | 
Revision as of 15:31, 5 October 2016
  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/sdaoraz 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 /tmpkatalogifooibar(do tworzenia katalogów poleceniemkdir, do przejścia do katalogu poleceniecd)
-  Skopiować do katalogu fooplik z tekstem dramatu (cp)
-  Przejść do katalogu bari wyświetlić zawartość dramatu za pomocą ścieżki absolutnej (cat)
-  Skopiować dramat z katalogu foodobarza pomocą ścieżki względnej
  Podstawy administracji systemem Linux - instalacja oprogramowania 
  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:  dodawanie nowych repozytoriów 
Należy zmodyfikować plik /etc/apt/sources.list wten sposób, aby umożliwić korzystanie z oprogramowania Canonical Partners. W tym celu należy odkomentować linijkę:
deb http://archive.canonical.com/ubuntu xenial partner
Należy pamiętać, że po każdej modyfikacji repozytoriów należy wykonać pownonie komendę apt-get update!
  Zadanie 5:  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!
  Podstawy administracji systemem Linux - użytkownicy 
  Dodawanie i usuwanie użytkowników 
Do dodawania użytkownikow służy komenda adduser, a do ich kasowania deluser.
Przy dodawaniu użytkowników można:
-  Ustawić domyślną powłokę dla użytkownika (na inną niż bash, np. /bin/sh, albo/bin/false),
-  Ustawić położenie katalogu domowego,
-  Wyłączyć możliwość logowania hasłem,
-  Wyłączyć możliwość logowania w ogóle.