Dodatek: Jak pisać programy na zajęcia i opanować obsługę Linuksa/Uniksa?

Aby nauczyć się pracować w czasie laboratoriów na nowo poznanym systemie operacyjnym oraz móc pisać w domu kolejne programy, wymagany jest dostęp do komputera działającego pod nadzorem systemu UNIX/Linux (należy zauważyć, że oba wymienione systemy jakkolwiek do siebie dość podobne, nie są ze sobą tożsame). W szczególności, może to być własny komputer uruchamiany pod nadzorem Linuksa, który podłączony do sieci internetowej pozwoli nam na pełny dostęp do działającego pod systemem UNIX komputera diablo, albo też komputer działający pod nadzorem innego systemu operacyjnego, pozwalający na zdalną pracę na diablo w ograniczonym zakresie. Poniżej przedstawiono pokrótce pięć sposobów na zorganizowanie sobie środowiska pracy, wskazując równocześnie na ich wady i zalety. Dwa pierwsze z nich są rekomendowane jako najwygodniejsze w perspektywie kursu Podstaw Programowania, kolejne już nie (jednak wiedza o nich może się w szczególnych przypadkach nadal przydać).

Jeśli o Linuksie wiesz niewiele lub nic to możesz najpierw zajrzeć do pierwszego rozdziału skryptu Środowisko programisty lub obejrzeć kilkanaście pierwszych minut prezentacji o serwerowej wersji Ubuntu, dostępnej na kanale Pasja informatyki (My oczywiście instalujemy sobie wersję desktopową systemu) (Uwaga a propos dostępnego na kanale Pasja informatyki kursu C++: jest to już nieco leciwa, ale bardzo rzeczowa i jasno przedstawiona prezentacja, opisująca odmienne od naszego podejście do programowania - po pierwsze tam uczymy się programowania z wykorzystaniem obiektowego języka C++, a tu używamy do tego celu strukturalnego języka C, po drugie autorzy korzystają w swoim kursie ze zintegrowanego środowiska programistycznego (IDE), my będziemy wykorzystywali system rozproszony).

Uwaga: Jeśli masz komputer z macOS (MacBook, etc.) to nie musisz instalować tam Linuksa! macOS i Linux to systemy operacyjne z tym samym rdzeniem i komendy poznane na laboratorium mogą też być użyte na komputerze działającym pod nadzorem macOSa. Powinieneś też dać radę łączyć się z diablo i panamintem przez ssh.

Pierwszą rzeczą, jaką należy zrobić, aby zacząć programowanie na macOS jest pobranie Xcode Command Line Tools – są one niezbędne do poprawnego funkcjonowania terminala podczas pracy z kodem. Możemy to zrobić przynajmniej na dwa sposoby. Najprostszy, ale jednocześnie zużywający najwięcej miejsca na dysku to pobranie Xcode z App Store. Xcode Command Line Tools są pobierane razem z nim. Drugi sposób to zainstalowanie jedynie potrzebnego nam pakietu poprzez wpisanie w terminalu komendy:

xcode-select --install

W razie problemów na tej stronie znajduje się pełen poradnik jak to zrobić.

Teraz, mając rzeczy niezbędne powinniśmy pobrać wybrany przez nas edytor tekstu i możemy zacząć programować. Jeżeli chcielibyśmy instalować rozszerzenia oraz programy, które na Linuksie instalujemy za pomocą komendy apt-get, musimy zainstalować Homebrew. Proces instalacji jest opisany tutaj. Zdecydowana większość komend terminala wygląda i działa tak samo jak na Linuksie. Dla wygody możesz jeszcze dodać na pulpicie skrót do emulatora terminala i innych, ulubionych, właśnie zainstalowanych komponentów (Uwaga dzięki uprzejmości Tomka Lutkowskiego :).

1. Instalacja Linuksa na wydzielonej partycji dyskowej, rekomendowane

Zalety:

Wady:

Aby zainstalować Linuksa, wcale nie trzeba rezygnować z posiadania systemu Windows. Obydwa systemy mogą być zainstalowane obok siebie na jednym komputerze – system, który ma zostać uruchomiony wybierany jest zawsze po jego włączeniu. Wiele tutoriali opisujących w jaki sposób wejść w posiadanie dwóch systemów operacyjnych można znaleźć w internecie po wpisaniu hasła: "how to install linux with windows" lub "linux windows dual boot".

Najlepszą (najprostszą/bezpieczną) metodą na zainstalowanie Linuksa jest posiadanie komputera z Windows, na którym wydzielona będzie wolna partycja, na której będzie można zainstalować Linuksa. Wtedy w czasie instalacji samodzielnie wskazujemy, że Linuksa chcemy zainstalować na tej właśnie partycji – resztą zajmie się instalator.

Ważną kwestią jest wybór jednej z wielu dystrybucji Linuksa. Ogromną popularność uzyskało w ostatnim czasie Ubuntu, które swój sukces zawdzięcza przede wszystkim prostocie obsługi systemu. System ten można spokojnie polecić osobom, które do tej pory nie miały kontaktu z innym systemem niż Windows.

Wybrać należy także wersję systemu. Nie zawsze wybór najnowszej wersji jest dobrym rozwiązaniem – może być jeszcze niedopracowana i posiadać błędy. Najbezpieczniejszym wyborem jest zainstalowanie ostatniej wersji LTS (Long Term Support), czyli wersji długowspieranej. Najnowszy LTS dla Ubuntu to 20.04.

Właściciele komputerów z preinstalowanym systemem Windows 8/10, mogą mieć problemy z instalacją innego systemu, jeśli Windows zainstalowany jest w trybie EFI, aczkolwiek problemy te dotyczą raczej starszych wersji Ubuntu i EFI. Użytkownicy komputerów z systemem zainstalowanym w tym trybie powinni przede wysztkim upewnić się, że Secure Boot w opcjach EFI jest wyłączony przed instalacją Linuxa (Klucze Secure Boota należy również zresetować, w niektórych przypadkach może pomóc również wyłączenie Fast Boota). Opis tego problemu i sugerowanych rozwiązań można znaleźć m.in. tutaj lub tutaj. Dla osób w takiej sytuacji, które nie chcą rozwiązywać tego problemu lub opisane rozwiązania nie działają, lepszym wyjściem będzie 2. sposób pracy.

Przykładowy poradnik jak zainstalować Ubuntu obok Windowsa 10 lub 8 znajduje się tutaj.

Informacje na temat "Skąd wziąć Linuksa?" znajdują się w punkcie 3.

2. Instalacja Linuksa na wirtualnej maszynie (czyli system w systemie), rekomendowane

Zalety:

Wady:

Rozwiązanie to polega na zainstalowaniu systemu operacyjnego Linux w innym systemie operacyjnym (Windows, OS X) wykorzystując do tego specjalne oprogramowanie zwane wirtualną maszyną, np. Oracle VM VirtualBox. Dla osób bojących się o bezpieczeństwo pierwszego systemu operacyjnego, chcących zainstalować Linuksa jedynie na próbę, jest to rozwiązanie optymalne. Jak to zrobić, opisane jest np. tutaj.

Kilka dodatkowych uwag do używania wirtualnej maszyny (VM) Ubuntu na VirtualBoxie (VB) – co ustawić przy instalacji (jeśli nie było domyślne) i potem dodać do VM:

To da Państwu w miarę sensownie działający system Ubuntu 20.04 na wirtualnej maszynie z użyciem VirtualBoxa. Od tego miejsca polecam wybrać sobie swój edytor do programowania (Visual Studio Code, SKONFIGUROWANY emacs itd.) i zajrzenie na stronę Łukasza Jańca do materiałów i poradnika "Jak przeżyć...". To (raczej) Państwu pomoże zacząć przygodę z programowaniem :)

3. Linux z LiveCD (LivePendrive :) ), odradzane

Zalety:

Wady:

LiveCD to Linux instalowany każdorazowo z płyty w pamięci RAM komputera. Rozwiązanie polecane jest tym, którzy mają bardzo mało miejsca na dysku i nie mogą sobie pozwolić na zainstalowanie drugiego systemu operacyjnego.

SKĄD WZIĄĆ LINUKSA?

Obecnie rolę LiveCD pełni przeważnie specjalnie skonfigurowany pendrive. Przykładowym programem służącym do tworzenia bootowalnych pendrive'ów jest program Rufus. Program ten potrzebuje pliku .iso z systemem który pobrać można (za darmo!) np. z oficjalnej strony Ubuntu. Po uruchomieniu komputera należy jeszcze zmienić priorytety bootowania, tak żeby pendrive miał wyższy niż dysk twardy.

W przypadku m.in. Ubuntu LiveCD (i LivePendrive :) ) mogą służyć zarówno jako LiveCD jak i nośnik instalacyjny systemu.

UWAGA OGÓLNA DO ROZWIĄZAŃ 1–3

Chcąc się zalogować z podłączonego do sieci internetowej komputera z systemem Linux na serwer diablo należy w terminalu wpisać komendę:

ssh diablo.kcir.pwr.edu.pl -l login_uzytkownika

Alternatywnie login użytkownika można podać w postaci:

ssh login_uzytkownika@diablo.kcir.pwr.edu.pl

a jeśli jest on identyczny na komputerze lokalnym i zdalnym można go pominąć.

Dodatkowe podanie opcji -X (lub -Y jeśli takowa jest dostępna) pozwoli na przekierowanie wyświetlania aplikacji graficznych na lokalną stację użytkownika. Dla osób bardziej zaawansowanych warto dodać, że wykorzystanie opcji -L pozwala na przekierowywanie portów i tunelowanie, o czym więcej można poczytać na przykład tutaj , a co może np. pozwolić na dostęp do sieci internetowej z domowego komputera tak, jakby pracowało się z domeny politechnicznej.

Do kopiowania plików z prywatnego Linuksa na diablo i w drugą stronę przyda się polecenie scp, o którym więcej informacji można znaleźć tutaj. Należy pamiętać o tym, by w operacjach kopiowania zdalnym hostem (remote host) było komputer diablo, zaś lokalnym – własny, oraz o tym, że przy odwoływaniu się do komputera zdalnego login użytkownika podejemy w formacie login_uzytkownika@adres.komputera.zdalnego (jak w drugim z podanych powyżej sposobów dla polecenia ssh).

Warto zdawać sobie sprawę z tego, że protokoły z rodziny SSH korzystają zwykle z portu 22 protokołu komunikacyjnego stosowanego w sieci internetowej (tak jak HTTP zwyczajowo korzysta z portu 80). Zdarza się niestety, że niektórzy administratorzy sieci, w tym bezprzewodowych, blokują komunikację na innych portach niż najbardziej podstawowe (za jaki uważany jest port 80, a 22 przez niektórych już nie) – taką siecią jest niestety ogólnodostępna na terenie kampusu PWr sieć bezprzewodowa PWR-WIFI. Stąd, na komputerze diablo została uruchomiona usługa ssh również na porcie 2022 (by skorzystać z tego portu należy przy poleceniu ssh dodać opcję -p 2022, zaś przy poleceniu scp opcję -P 2022). W przypadku bezprzewodowego dostępu z terenu kampusu można skorzystać alternatywnie z sieci bezprzewodowej eduroam (dostęp do tej sieci posiadają jedynie pracownicy akademiccy i studenci), która jednakże wymaga wstępnej konfiguracji (o czym trochę informacji można znaleźć tutaj), ale po skonfigurowaniu pozwoli na bezproblemowe korzytanie z portu 22, a także na bezpłatny dostęp do sieci internetowej z terenu kampusu dowolnej uczelni na świecie, która dostarcza usługę eduroam. Gdyby te rozwiązania nie przyniosły oczekiwanych skutków należy kontaktować się z administratorem wykorzystywanej sieci komputerowej (by sprawdzić, czy z poziomu danej sieci komputer diablo jest w ogóle widoczny można użyć polecenia ping diablo.kcir.pwr.edu.pl).

Dla początkujących, którzy nie chcą się łatwo rozstać z interfejsem graficznym i łączyć się z diablo tylko przez terminal istnieje również możliwość zdalnego montowania własnego katalogu z diablo na lokalnym Linuksie. Wykorzystuje się do tego menadżer okien i opcję "Połącz z serwerem" (zwykle w menu Plik). W oknie dialogowym jako protokół należy wybrać SSH lub SFTP.

4. Komputer z innym systemem operacyjnym niż Linux/UNIX, mocno odradzane

Zalety:

Wady:

Rozwiązanie zdecydowanie niepolecane. Nie pozwala ono na dobre poznanie nowego systemu operacyjnego, a praca zdalna jest mało wydajna i uzależniona od podłączenia do internetu. Jeśli ktoś mimo wszystko się na nie zdecyduje, to może się logować zdalnie na diablo z wykorzystaniem takich programów jak Putty lub Secure Shell Client (praca zdalna jedynie w trybie tekstowym), zaś przesyłać pliki między komputerem lokalnym a diablo za pomocą programu WinSCP. Programy Putty i WinSCP można pobrać m.in. tutaj. Do pracy w trybie graficznym (z możliwością zdalnego uruchamiania aplikacji graficznych) potrzebne jest dodatkowe oprogramowanie pełniące w systemie Windows rolę serwera X Window. W tym celu można wykorzystać programy w rodzaju Cygwin czy Xming (kierując się na przykład wskazówkami podanymi tutaj).

W Windows 10 programy Putty i WinSCP mogą być zastąpione przez użycie Power Shella. Shell ten jest wyposażony w podstawowe komendy ssh oraz scp, także pozwala na zdalne logowanie jak i przesyłanie plików. Naszym zdaniem jest to jednakże terminal bardzo niewygodny do pracy.

5. Windows Subsystem for Linux, odradzane

Zalety:

Wady:

Dostępnym od niedawna rozwiązaniem jest obecny w systemie Windows 10 podsystem Windows Subsystem for Linux, który dostarcza użytkownikom systemu Windows funkcjonalność zbliżoną do linuksowego terminala. Możemy z jego pomocą poruszać się po windowsowym systemie plików, montowanym w katalogu /mnt. Daje nam on również dostęp do wielu linuksowych narzędzi, w tym kompilatora gcc. Istnieje też możliwość połączenia się z serwerem diablo za pomocą komendy ssh, podobnie jak ma to miejsce na zwykłym Linuksie. To rozwiązanie pozwala na edytowanie programów w dowolnym edytorze uruchamianym na Windowsie, a następnie przy użyciu Windows Subsystem for Linux na ich kompilowanie za pomocą gcc czy przesyłanie na serwer diablo poleceniem scp.

Niestety rozwiązanie to ma swoje wady - jest ono mniej wydajne od czystego Linuksa na osobnej partycji, zwłaszcza w trybie okienkowym. Zainstalowany subsystem nie będzie kompletną dystrybucją Linuksa, niektóre polecenia (jak np. lsusb) nie będą w nim dostępne. Dodatkowo wspieranych jest tylko kilka dystrybucji Linuksa, co uniemożliwia nam zabawę z instalowaniem tych najciekawszych ;).

Więcej informacji wraz z instrukcją instalacji można znaleźć tutaj.

Dodatek: Program X2Go

W sali laboratoryjnej 248/C4, na stanowiskach roboczych graficzną sesję na serwerze inyo realizuje program X2Go. Jako dodatkową funkcjonalność program ten umożliwia zawieszanie i wznawiania graficznej sesji użytkownika. Po wznowieniu wszystkie aktualnie uruchomione programy/terminale/edytory tekstu są od razu włączone. Wznowianie sesji nie musi się odbywać na tym samym stanowisku roboczym, można to zrobić na każdym komputerze z linuksem ze skonfigurowanym programem X2Go.

Aby móc przenosić sesję z komputera używanego na zajęciach na własny komputer i w drugą stronę należy:

(Ważne) Nadal należy regularnie zapisywać postępy w pracy! Zawieszenie sesji w X2Go może być wygodne ale może być też zawodne (np. chwilowe wyłącznie serwera). Może też powodować pewne błędy, np. w przypadku ustawienia innego środowiska niż MATE, przesłania kluczy do automatycznego logowania lub błędnego kodowania znaków.

About this document ...

This document was generated using the LaTeX2HTML translator Version 2019.2 (Released June 5, 2019)

The command line arguments were:
latex2html -html_version 3.2,latin2,unicode -split 0 -no_navigation dodatek_praca_zdalna

The translation was initiated on 2022-09-29