Kurs Intel Edison – #4 – podstawy Linuxa, praca w konsoli

Kurs Intel Edison – #4 – podstawy Linuxa, praca w konsoli

Poprzednio zajęliśmy się instalacją niezbędnego oprogramowania oraz sterowników. Wybraliśmy również  najważniejsze ustawienia (nazwa, hasło, dostęp do Internetu).

W tej części kursu połączymy się z modułem przez sieć WiFi. Omówimy zdalny sposób na pracę z konsolą oraz wymianę plików.

W poprzedniej części wykorzystaliśmy narzędzie configure_edison do skonfigurowania modułu. Za pomocą przeglądarki przetestowaliśmy łączność z Edisonem. Teraz poznamy więcej możliwości sieciowych modułu Intel Edison, który jest bohaterem tego kursu.

Zestaw elementów do kursu

 999+ pozytywnych opinii  Gwarancja pomocy  Wysyłka w 24h

Elementy konieczne do wykonania ćwiczeń zebrane zostały w gotowe zestawy, które można nabyć w Botlandzie. W kuferku znajdziecie ponad 180 elementów w tym moduł Intel Edison!

Zamów w Botland.com.pl »

Intel Edison - połączenie przez SSH

Zaczniemy od pracy za pomocą SSH. Dotychczas łączyliśmy się z płytką poprzez konwerter UART-USB, czas wykorzystać sieć bezprzewodową. Najpierw musimy ustalić jaki adres IP ma masz Edison. Informacje na ten temat znaleźć można w poprzedniej części. W moim przypadku był to adres 192.168.1.30 - takim właśnie będziemy posługiwać się w przykładach.

Uruchamiamy putty, który poprzednio wykorzystywaliśmy do połączenia przez złącze szeregowe. Jeśli program mamy już włączony i połączony z płytką, to możemy uruchomić jego drugą kopię. Wybieramy połączenie przez SSH (domyślne) oraz wpisujemy adres IP modułu. Możemy również zapisać ustawienia na później przyciskiem Save.

ssh_01

Intel Edison - łączenie z modułem przez SSH.

Następnie klikamy Open i nawiązujemy połączenie z modułem Intel Edison.

Logowanie oraz dalsza obsługa przebiega tak samo jak w przypadku połączenia przez konwerter UART-USB:

ssh_02

Intel Edison - połączony przez SSH.

Jaka jest zaleta ssh? Przede wszystkim można łączyć się bezprzewodowo. Moglibyśmy również podłączyć płytkę do zasilania w innym pokoju i pracować na niej zdalnie. Co więcej, jeśli Edison miałby publiczny adres IP moglibyśmy pracować na dużo większe odległości.


Dlaczego więc projektanci płytki umieścili na niej konwerter UART-USB? Po pierwsze dzięki niemu mogliśmy skonfigurować płytkę i połączyć się z siecią WiFi. Poza tym, takie połączenie jest niezbędne podczas aktualizacji oprogramowania i wprowadzania zmian do bootloadera.

Nie będziemy tych tematów poruszać w kursie, więc od tej chwili moglibyśmy zrezygnować z tego połączenia i wykorzystywać tylko jeden kabel USB zamiast dwóch (zawsze jest to wygodniejsze).

Dostęp do plików przez SCP

Gdy mamy już połączenie przez SSH, możemy nauczyć się kopiowania plików między komputerem PC, a płytką Intel Edison przy wykorzystaniu SCPSCP. W tym celu musimy pobrać i zainstalować program WinSCP.

Podczas instalacji możemy zaimportować połączenia zapisane w programie putty. Jednak, jeśli wykorzystamy tę opcję, to będziemy musieli zmienić ustawienia (domyślnie wybierany jest protokół SFTP zamiast SCP).

Po uruchomieniu WinSCP zobaczymy okno z dostępnymi połączeniami. Jeśli nie zaimportowaliśmy ustawień z putty, wybieramy Nowe połączenie i ustawiamy:

  • Protokół pliku - SCP
  • Nazwa hosta - adres IP modułu Intel Edison
  • Numer portu - 22
  • Nazwa użytkownika - root
  • Hasło - ustawione wcześniej hasło dostępu
ssh_03

Intel Edison - logowanie przez SCP.

Następnie klikamy na przycisku Logowanie i czekamy na uzyskanie połączenia. Po chwili powinniśmy zobaczyć okno podobne do poniższego:

ssh_04

Intel Edison - wymiana plików przez WinSCP.

Po lewej stronie widzimy zawartość naszego komputera PC, po prawej pliki zapisane na płytce Intel Edison. W górnej części zobaczymy strukturę katalogów, a w dolnej listę plików dostępnych w zaznaczonym katalogu.

System plików na Intel Edison

Między systemami plików Windows i Linux istnieją istotne różnice. Pierwsza, mało ważna, ale mocno irytująca, to ukośniki. Windows stostuje znak \ (backslash), natomiast Unix-y / (slash). Niby różnica niewielka, ale bardzo łatwo się pomylić.

Kolejna różnica to brak podziału na dyski C, D, E itd., który znamy z Windows. W przypadku Linuxa, wszystkie pliki są dostępne w jednym drzewie katalogów. Najwyższy poziom tego drzewa jest oznaczany jako / i nazywany root, czyli korzeń.

Na / można patrzeć trochę jak na ikonkę "Mój komputer" znaną z Windows. Poniżej widoczne jest przykładowe drzewo katalogów z Edisona:

ssh_06

Warto poświęcić chwilę na zapoznanie się ze strukturą katalogów zapisanych na Edisonie. Jest ona w większości zgodna ze standardem FHS, czyli Filesystem Hierarchy Standard. Najważniejsze dla nas katalogi to:

  • /bin - podstawowe programy dostępne z linii poleceń
  • /boot - partycja z konfiguracją i obrazem jądra Linuxa
  • /etc - katalog z ustawieniami systemowymi
  • /home/root - nasz katalog domowy (gdy logujemy się jako "root")
  • /sketch - tutaj Arduino IDE wgrywa nasze programy (jako plik sketch.elf)

Następna ważna różnica, to wielkości liter w nazwach. W przypadku Linux-a wielkości liter są rozróżnialne, więc edison.txt i Edison.txt, to różne pliki, które mogą być nawet zapisane w tym samym katalogu.


W przypadku Windows, o typie pliku decyduje tzw. rozszerzenie. Mamy więc znak kropki i najczęściej 3-literowy skrót po nim (jpg, mp3, exe, itd). Jest to pozostałość jeszcze z czasów DOSa, ale bardzo silnie zadomowiona w tych systemach.

Widząc plik Edison.exe wiemy, że to aplikacja, a Edison.jpg jest pewnie obrazkiem. Linux nie używa rozszerzeń plików - możemy oczywiście nazwać plik Edison.exe, ale równie dobrze możemy nazwać go Pro.gram.Edison.

O tym, czy program można uruchamiać decydują uprawnienia związane z plikiem. W programie WinSCP możemy wybrać plik znajdujący się na płytce Edisona oraz wybrać opcję Właściwości (lub kliknąć F9). Zobaczymy wtedy pełne informacje o pliku:

ssh_05

Uprawnienia plików w Linuxie.

Prawa dostępu zapewniają kontrolę uprawnień w przypadku systemów sieciowych, do których ma dostęp wielu użytkowników. Uprawnienie R oznacza Read, czyli prawo do odczytywania plików. W to Write, czyli zapis i modyfikacja, natomiast X pochodzi od eXecute i informuje, że plik może być uruchamiamy.

Intel Edison - praca w konsoli

Poznaliśmy już dwa sposoby na łączenie się z konsolą systemu - przez łącze szeregowe oraz ssh. Możemy wybrać dowolny sposób, a po zalogowaniu zobaczymy wiersz poleceń:

bash_01

Intel Edison - praca z konsoli.

Dla wielu osób przyzwyczajonych do graficznych interfejsów taka praca może wydawać się bardzo niewygodna. Jednak po zdobyciu odrobiny wprawy oraz poznaniu odpowiednich poleceń, można przekonać się, że to właśnie interfejsy graficzne są niewygodne oraz bardzo nieefektywne.

Interfejs tekstowy ma jednak kilka niewątpliwych zalet. Pierwsza, to niewielkie zapotrzebowanie na pasmo łącza - możemy połączyć się z Edisonem np. przez modem GSM i nawet niewielka prędkość transmisji pozwoli na pracę zdalną. Interfejs graficzny wymaga przesyłania dużych ilości danych w porównaniu z tekstowym.

Kolejna zaleta to niewielkie zapotrzebowanie na zasoby systemu - uruchomienie X serwera, czyli interfejsu graficznego na komputerze wbudowanym sprawia, że system operacyjny zajmuje dużo więcej miejsca oraz wymaga szybkiego procesora. Do pracy w trybie tekstowym wystarczy mały (nawet 20-30MB) dysk oraz niezbyt wydajny procesor. Ponieważ Intel Edison jest układem IoT, został wyposażony w energooszczędny procesor, który jest jednak o wiele wolniejszy niż np. procesor Raspberry Pi.

Jak więc zacząć przygodę z konsolą w trybie tekstowym? Trzeba połączyć się z Edisonem i próbować jak działają kolejne polecenia. Na początek zobaczmy, który katalog jest aktualnie aktywny. Służy do tego polecenie pwd. Po zalogowaniu znajdziemy się w katalogu /home/root.

bash_02

Podstawy pracy z systemem Linux.

Do sprawdzenia zawartości katalogu używamy polecenia ls. Można je wywołać bez parametrów, wyświetli wówczas plik w aktualnym katalogu. Jeśli jako parametr padamy katalog, to zobaczymy jego zawartość zamiast bieżącego, przykładowo: ls /.


Aby zmienić bieżący katalog, możemy wykorzystać polecenie cd. Wywołane bez parametrów, powoduje powrót to domyślnego katalogu domowego, czyli /home/root. Jeśli natomiast podamy ścieżkę do katalogu jako parametr, zostanie on ustawiony jako aktualny.

Omówienie wszystkich poleceń wymagałoby napisania książki. Poniżej zamieścimy więc krótki opis najbardziej (naszym zdaniem) przydatnych poleceń. Edison działa w oparciu o system Linux, do dalszej nauki można wykorzystać właściwie każdy dobry podręcznik dla tego systemu.

  • cat - wyświetla zawartość pliku tekstowego
  • cd - zmiana katalogu
  • chmod - zmiana uprawnień pliku
  • cp - kopiowanie plików
  • date - wyświetla lub ustawia aktualną datę i godzinę
  • gcc - kompilator języka C
  • g++ - kompilator języka C++
  • grep - narzędzie do wyszukiwania wzorców
  • ifconfig - konfiguracja połączeń sieciowych
  • kill - zatrzymuje działanie programów
  • ls - lista plików
  • mkdir - utworzenie podkatalogu
  • mv - przenoszenie plików
  • netstat - wyświetla aktualne połączenia sieciowe
  • node - uruchamia skrypt Node.js
  • opkg - manager pakietów
  • passwd - zmiana hasła dostępu
  • ping - wysłanie pakietu ICMP w celu przetestowania połączenia
  • ps - wyświetla aktualnie uruchomione programy
  • pwd - wyświetla ścieżkę do aktualnego katalogu
  • python - interpreter języka Python
  • readelf - wyświetla informacje o plikach w formacie elf (odpowiednik .exe)
  • reboot - restart systemu
  • rm - kasowanie plików
  • sededytor strumieniowy
  • shutdown - wyłączenie systemu
  • tar - narzędzie do obsługi archiwów
  • top - wyświetla uruchomione programy oraz wykorzystanie CPU i pamięci
  • whoami - wyświetla nazwę aktualnie zalogowanego użytkownika
  • wget - pozwala na pobieranie plików oraz stron www
  • vi - edytor plików, raczej trudny na początek (plik można edytować przez SCP)

Programowanie Intel Edisona - dostępne możliwości

Jak wiemy na pokładzie Edisona znajdziemy system Yocto Linux. Dzięki temu mamy możliwość wykorzystywania bogatej oferty bibliotek oraz języków programowania.

Możemy pisać oraz uruchamiać skrypty powłoki - wbrew pozorom dają one bardzo duże możliwości. Niestety język w nich używany nie zawsze jest łatwy do pisania, a jeszcze gorzej bywa z analizowaniem cudzego kodu.

Być może dlatego coraz popularniejszy staje się Python. Jest to w pełni obiektowy język skryptowy. Edison pozwala na uruchamianie skryptów napisanych w Pythonie oraz na pracę w trybie interaktywnym.

python_logotyp

Kolejnym językiem skryptowym, który nie kojarzy się z pracą po stronie serwera jest Javascript. Po wielu latach wykorzystywania go jako język wbudowany w przeglądarki internetowe, doczekał się całkiem sprawnej implementacji jako pełnoprawny język skryptowy.

NodeJS jest bardzo interesującym projektem, który ma szansę konkurować ze wspomnianym wcześniej Pythonem. Intel dostarcza gotowe środowisko do pisania aplikacji node.js dla Edisona - jest to Intel XDK. Oczywiście skrypty można też edytować i uruchamiać z poziomu konsoli.

nodejs

Języki C i C++ nadal cieszą się ogromną popularnością. Na Edisona można kompilować programy w tych językach na kilka sposobów. Wśród programów zainstalowanych na płytce znajdziemy kompilatory C oraz C++, można więc pisać i kompilować programy na Edisonie.

cpp

Jednak znacznie wygodniej jest programować na PC, a na płytce docelowej jedynie uruchamiać program wynikowy. Do tego celu możemy wykorzystać dwa środowiska. Pierwsze to popularne Arduino IDE, pracę z którym omówimy w niniejszym kursie. Intel dostarcza również środowisko oparte o Eclipse, za pomocą którego można pisać, kompilować i debugować programy w C i C++.

Dlaczego wybraliśmy Arduino?

W kursie na początku omówione zostanie programowanie z poziomu Arduino. Wybór taki jest związany z duża popularnością tego języka oraz opublikowanym już kursem Arduino, którym będzie można się tutaj wspierać.

Podsumowanie

Potrafimy już pracować już zdalnie z modułem Intel Edison wykorzystując sieć bezprzewodową. Wiemy jak kopiować pliki między komputerem stacjonarnym oraz płytką, znamy również podstawowe polecenia systemu Linux. W kolejnej części zaczniemy programować nasz moduł za pomocą Arduino IDE.

Nawigacja kursu

Autor kursu: Piotr (Elvis) Bugalski
Redakcja: Damian (Treker) Szymański

Edison, Intel, kurs, kursEdison, programowanie

Trwa ładowanie komentarzy...