Przygotowanie systemu dla Raspberry Pi Zero: Różnice pomiędzy wersjami
(→Wgranie obrazu na kartę) |
(→Czy nie dałoby się jakoś prościej?) |
||
(Nie pokazano 65 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 2: | Linia 2: | ||
[[Plik:Raspberry_Pi_Zero.jpg|300px|thumb|right|Malina Zero i jej "twardy dysk".]] | [[Plik:Raspberry_Pi_Zero.jpg|300px|thumb|right|Malina Zero i jej "twardy dysk".]] | ||
− | Raspberry Pi Zero jest tak naprawdę | + | Raspberry Pi Zero (ang. ''raspberry'' - malina) jest tak naprawdę takim komputerem jak laptop i tak samo jak laptopy potrzebuje systemu operacyjnego do pracy zapisanego na dysku twardym. |
− | + | Ze względu na rozmiar płytki podłączenie do niej zwykłego dysku byłoby raczej niewygodne (choć można to zrobić przez łącze USB) i droższe niż cały komputer. Z tego powodu twórcy Maliny zdecydowali się używać w tej roli zwykłej karty pamięci microSD i dlatego też instalacja systemu wygląda nieco inaczej. Nie ma instalatora, okienek potwierdzających wybór itd. Całość sprowadza się do nagrania odpowiednich plików na kartę. Można sobie wyobrazić, że projektanci komputera "jakoś tam" przygotowali system na karcie microSD włożonej do pierwszej Maliny, a potem wykonali kopię całej jej zawartości. Taką kopię nazywamy '''obrazem dysku''' i jest ona dostępna w sieci. Naszym zadaniem jest wykonanie odwrotnej procedury: Musimy go ściągnąć na swój komputer, a potem odpowiednio zapisać na karcie microSD. Niestety zwykłe skopiowanie pliku -- tak jak kopiuje się na przykład zdjęcia -- nie wystarczy. Chodzi o to, żeby komputer rozpoznał zawartość karty jako system operacyjny, a nie zwykłe pliki, wczytał go do pamięci i uruchomił. Z tego powodu procedura nagrywania obrazu systemu na kartę SD jest nieco inna, ale nadal zupełnie prosta. | |
− | + | === Czy nie dałoby się jakoś prościej? === | |
+ | Pewnie tak; do pewnego stopnia całą poniższą procedurę można trochę uprościć. Jednak nagrywanie systemu na kartę jest świetną okazją żeby "otrzaskać się" z systemem. '''Nie przejmuj się, że coś nie wychodzi za pierwszym razem. Pytaj i spokojnie próbuj jeszcze raz.''' Rozwiązując kolejne problemy uczysz się nowych rzeczy o Ubuntu. Malina również działa z systemem Linux pochodzącym od Debiana, tak jak Ubuntu. Dlatego wszystko czego się dowiesz tutaj od razu przyda się przy zabawie z programowaniem Maliny. '''Wysiłek nie pójdzie więc na marne.''' Poniżej przykład, że nie trzeba skończyć studiów, żeby swobodnie bawić się Linuxem. | ||
− | == | + | <br clear=all> |
− | + | <youtube>W76o_iG7Y7g</youtube> | |
+ | <br clear=all> | ||
− | |||
− | |||
− | + | Kilka podstawowych instrukcji terminala przedstawia następny film (po polsku). Nie będziemy potrzebowali zbyt wielu poleceń w nim pokazanych, ale można go obejrzeć żeby zobaczyć jak ogólnie działa konsola. Wówczas instrukcje znajdujące się poniżej będą mniej "tajemnicze". Wyczerpującą listę poleceń można znaleźć na stronach [[lqwiki:Command|Linux Questions Wiki]]. | |
− | |||
− | |||
− | |||
− | |||
− | |||
<br clear=all> | <br clear=all> | ||
+ | <youtube>cfLxlFxNGuc</youtube> | ||
+ | <br clear=all> | ||
+ | |||
+ | == Obraz systemu dostarczony przez producenta == | ||
+ | |||
+ | === Pobranie obrazu systemu === | ||
+ | |||
+ | Na [//raspberrypi.org stronie głównej] projektu Maliny w sekcji '''Downloads''' (czerwona zakładka u góry) znajduje się kilka obrazów systemów do wyboru. Dwa u góry dostarczane są przez producenta płytki. Kilka następnych przez różne grupy użytkowników. Każdy z dostępnych tam systemów będzie działał, ale dla wygody wybierzmy raspbiana [//www.raspberrypi.org/downloads/raspbian/ STRETCH] oficjalnie wspieranego przez producenta. Występuje on w dwóch wersjach: normalnej i LITE. Ta druga zawiera ten sam system, ale przeznaczona jest dla osób, którym zależy na jak najmniejszym obrazie systemu. W tej chwili możemy ją zignorować, ale warto pamiętać, że istnieje możliwość zmniejszenia ilości miejsca zajmowanego przez system operacyjny. | ||
+ | |||
+ | |||
+ | '''''Uwaga:''' Żeby zminimalizować transfer danych ze strony (koszty!) obrazy systemów są spakowane. Dlatego zanim zaczniemy je nagrywać na dysk trzeba je rozpakować. Przykładowo pobrany plik RASPBIANA ma tylko 1.4GB, ale w środku znajduje się obraz systemu, który ma 4GB i wymaga co najmniej takiej karty pamięci. W Ubuntu spakowane pliki często są nazywane krótko: '''archiwum'''.'' | ||
+ | |||
+ | === Nagrywanie w systemie Ubuntu === | ||
+ | ==== Rozpakowanie archiwum ==== | ||
[[Plik:Archiwum_Raspbiana.png|300px|thumb|right|Archiwum otwarte w Menadżerze Archiwów]] | [[Plik:Archiwum_Raspbiana.png|300px|thumb|right|Archiwum otwarte w Menadżerze Archiwów]] | ||
− | Po otwarciu pliku w Menadżerze Archiwów w środku widzimy | + | Po zakończeniu ściągania i kliknięciu ściągniętego pliku system odkryje, że jest to archiwum, i zaproponuje użycie do jego otwarcia Menadżera Archiwów na co się zgadzamy. Możemy również sami uruchomić Menadżera Archiwów -- wystarczy kliknąć ikonę uruchamiania programów w lewym górnym rogu i tam zacząć pisać słowo ''archiwum''. Ikona Menadżera Archiwów bardzo szybko pojawi się wśród proponowanych programów. Po otwarciu Menadżera wystarczy wskazać plik archiwum, który chcemy otworzyć i rozpakować. |
+ | |||
+ | |||
+ | Po otwarciu pliku w Menadżerze Archiwów w środku widzimy pojedynczy plik zawierający obraz dysku systemowego, czyli właśnie to czego potrzebujemy. Wystarczy go wskazać i wybrać przycisk Rozpakuj po czym wskazać swój katalog domowy, Pulpit, Dokumenty, lub dowolne miejsce, byle tylko zapamiętać gdzie zostanie zapisany rozpakowany plik. | ||
+ | |||
+ | |||
+ | Za chwilę będziemy potrzebowali nazwy pliku z pełną ścieżką dostępu do niego w wersji "terminalowej". Dla ułatwienia podajmy przykłady. Jeśli rozpakowaliśmy obraz systemu o nazwie '''2018-10-09-raspbian-stretch.img''' na pulpit, to na dysku znajdziemy go w katalogu '''Desktop''' lub '''Pulpit''' (zależnie od wersji językowej systemu jaką instalowaliśmy). Pełna ścieżka będzie więc miała postać: | ||
+ | |||
+ | |||
+ | /home/''uzytkownik''/Desktop/2018-10-09-raspbian-stretch.img | ||
+ | |||
− | |||
− | |||
− | |||
− | |||
lub w wersji polskiej | lub w wersji polskiej | ||
− | |||
− | |||
− | + | /home/''uzytkownik''/Pulpit/2018-10-09-raspbian-stretch.img | |
+ | |||
W miejscie ''użytkownik'' należy wstawić nazwę konta, na które logowaliśmy się przy włączaniu Ubuntu. | W miejscie ''użytkownik'' należy wstawić nazwę konta, na które logowaliśmy się przy włączaniu Ubuntu. | ||
+ | Taką właśnie "ścieżką do pliku" posłużymy się w poleceniu '''dd''' zaraz po parametrze '''if=''' opisywanym dalej. Przykładowo dla użytkownika Piotr | ||
+ | |||
+ | |||
+ | sudo dd bs=4M <span style="color:navy">'''if=/home/Piotr/Pulpit/2018-10-09-raspbian-stretch.img'''</span> <span style="color:gray">''... (dalsze parametry pominięte)''</span> | ||
− | === Wyszukanie karty SD === | + | ==== Wyszukanie karty SD ==== |
− | + | Zanim wykonamy przepisanie obrazu systemu z pobranego pliku na kartę SD musimy dowiedzieć się jak system Ubuntu widzi kartę i dokąd skierować dane obrazu, żeby zostały na niej zapisane. | |
− | Po włożeniu karty | + | Po włożeniu karty do czytnika system wykrywa jej obecność i po chwili pojawi się ona jako nowy "dysk" w menadżerze plików. Tą operację nazywa się ''montowaniem'' systemu plików (każdy nośnik danych ma je poukładane zgodnie z jakimś znanym schematem, czyli ma pewien "system plików"). Nie będziemy wnikać w szczegóły, ale za chwilę będziemy mówić o odmontowaniu dysku i dlatego wspominamy kiedy nastąpiło montowanie. Przy czym nie należy myśleć, że włożenie karty do czytnika i montowanie to te same operacje. Tylko dla wygody Ubuntu wykonuje montowanie automatycznie, ale tak naprawdę karta może być włożona do czytnika, a nadal pozostawać zamontowana lub nie. Montowanie po prostu oznacza, że Ubuntu zrozumiało jaka jest struktura danych i może zacząć zapisywać czy kasować pliki. Jeśli na przykład karta jest kompletnie pusta i nie ma żadnego systemu plików, po jej włożeniu automatyczne montowanie zakończy się niepowodzeniem, ale nadal można taką kartę na przykład sformatować żeby nadać jej wybrany system plików. Zamontowane dyski da się przeglądać w Menadżerze Plików. |
− | Żeby wykonać | + | Żeby wykonać kopiowanie systemu posłużymy się poleceniem '''dd''' w terminalu. Wykonuje ono bardzo niskopoziomome przepisanie danych z jednego miejsca w drugie. Skąd wziąć dane już wiemy -- zwiera je plik obrazu systemu wypakowany z pobranego archiwum. Pozostaje pytanie gdzie należy zapisać jego zawartość? |
Żeby się tego dowiedzieć posłużymy się poleceniem '''df'''. Po otwarciu terminala (znów można kliknąć ikonę w prawym górnym rogu i zacząć pisać słowo "terminal") wpisujemy '''df -h''' i naciskamy Enter (to, że naciskamy Enter na końcu polecenia w terminalu od teraz uznamy za oczywiste, żeby nie musieć tego ciągle powtarzać). Powinna się pojawić lista obecnie dostępnych dysków oraz informacja o stopniu ich wykorzystania (do tego tak w ogóle służy polecenie df). Wygląda to mniej więcej tak (pogrubienia dodane w celu zwrócenia uwagi na istotne elementy, normalnie ich nie ma): | Żeby się tego dowiedzieć posłużymy się poleceniem '''df'''. Po otwarciu terminala (znów można kliknąć ikonę w prawym górnym rogu i zacząć pisać słowo "terminal") wpisujemy '''df -h''' i naciskamy Enter (to, że naciskamy Enter na końcu polecenia w terminalu od teraz uznamy za oczywiste, żeby nie musieć tego ciągle powtarzać). Powinna się pojawić lista obecnie dostępnych dysków oraz informacja o stopniu ich wykorzystania (do tego tak w ogóle służy polecenie df). Wygląda to mniej więcej tak (pogrubienia dodane w celu zwrócenia uwagi na istotne elementy, normalnie ich nie ma): | ||
Linia 63: | Linia 81: | ||
'''/dev/mmcblk0p1''' 63M 21M 43M 33% /media/ktos/boot | '''/dev/mmcblk0p1''' 63M 21M 43M 33% /media/ktos/boot | ||
− | Na powyższej liście interesują nas nazwy urządzeń wymienione w | + | Na powyższej liście interesują nas nazwy urządzeń wymienione w pierwszej kolumnie zaczynające się od '''/dev/''' Wśród nich znajduje się takie, którego rozmiar będzie pasował do zainstalowanej karty (mniej więcej). Powyżej '''najbardziej prawdopodobną nazwą urządzenia gdzie Linux "widzi" kartę SD będzie /dev/mmcblk0'''. A dlaczego nie /dev/mmcblk0'''p2''' lub /dev/mmcblk0'''p1'''? Końcówki p1/p2 '''ignorujemy''' ponieważ one wskazują tylko, że ten "dysk" jest podzielony na więcej części. Podobny schemat nazywania części dysku widać powyżej w przypadku urządzenia /dev/sda, które również ma partycje /dev/sda1 i /dev/sda2, ale nazwą całego urządzenia jest tylko '''/dev/sda''', wzięte bez numerów. Ale na wszelki wypadek warto przy okazji dodać, że '''/dev/sda''' to najczęściej główny dysk komputera i z pewnością nie tam należy kopiować obraz Raspbiana. Łatwo zauważyć, że /dev/sda2 ma rozmiar 223GB i na pewno nie jest poszukiwaną kartą SD. |
+ | |||
+ | |||
+ | [[Plik:Partycje_a_nagrywanie_raspbiana.png]] | ||
+ | |||
+ | |||
+ | Żeby zobaczyć jak to działa wpiszmy w terminalu polecenie wyświetlające wszystkie urządzenia, których nazwa zaczyna się od /dev/mm. Użyjemy do tego polecenia '''ls''' | ||
ktos@maszyna:~$ ls /dev/mm* | ktos@maszyna:~$ ls /dev/mm* | ||
/dev/mmcblk0 /dev/mmcblk0p1 /dev/mmcblk0p2 | /dev/mmcblk0 /dev/mmcblk0p1 /dev/mmcblk0p2 | ||
+ | |||
+ | ''(Jeśli na Twoim komputerze podejrzewasz, że może chodzić o urządzenie /dev/sde, użyj polecenia '''ls /dev/sde*''', i tak dalej; dopsuj je według potrzeb.)'' | ||
Zauważ, że najpierw wyświetlana jest nazwa głównego urządzenia (tutaj '''/dev/mmcblk0'''), a potem nazwy jego partycji z końcówkami ...p1 i ...p2. Dla całkowitej pewności wyciągnijmy kartę z czytnika i powtórzmy powyższe polecenie. Jeśli otrzymamy komunikat, że urządzenie nie jest już widoczne, oznacza to, że znaleźliśmy to co trzeba. Oczywiście na różnych komputerach nazwa może być inna, ale metoda pozostaje ta sama: wkładamy kartę, poleceniem '''df -h''' wyświetlamy dyski, znajdujemy głównego podejrzanego, i dla sprawdzenia po wyjęciu karty wyświetlamy dyski ponownie (poleceniem '''df -h''' lub '''ls''' z podejrzewanym początkiem nazwy) żeby się upewnić czy znaleźliśmy właściwą nazwę. | Zauważ, że najpierw wyświetlana jest nazwa głównego urządzenia (tutaj '''/dev/mmcblk0'''), a potem nazwy jego partycji z końcówkami ...p1 i ...p2. Dla całkowitej pewności wyciągnijmy kartę z czytnika i powtórzmy powyższe polecenie. Jeśli otrzymamy komunikat, że urządzenie nie jest już widoczne, oznacza to, że znaleźliśmy to co trzeba. Oczywiście na różnych komputerach nazwa może być inna, ale metoda pozostaje ta sama: wkładamy kartę, poleceniem '''df -h''' wyświetlamy dyski, znajdujemy głównego podejrzanego, i dla sprawdzenia po wyjęciu karty wyświetlamy dyski ponownie (poleceniem '''df -h''' lub '''ls''' z podejrzewanym początkiem nazwy) żeby się upewnić czy znaleźliśmy właściwą nazwę. | ||
− | Dlaczego znalezienie prawidłowej nazwy jest tak ważne? W następnym punkcie użyjemy polecenia '''dd''', które obchodzi się z danymi w sposób bezceremonialny. Jeśli podamy mu prawidłowe parametry, wykona to czego chcieliśmy bez zarzutu. Jeśli jednak wyślemy obraz RASPBIANA na jakieś źle trafione urządzenie możemy sobie skasować wiele ważnych rzeczy i komputer będzie wymagał instalowania systemu od nowa. Lepiej więc być pewnym, że wysyłamy dane na kartę SD. | + | <span style="color:red">Dlaczego znalezienie prawidłowej nazwy jest tak ważne? W następnym punkcie użyjemy polecenia '''dd''', które obchodzi się z danymi w sposób bezceremonialny. Jeśli podamy mu prawidłowe parametry, wykona to czego chcieliśmy bez zarzutu. Jeśli jednak wyślemy obraz RASPBIANA na jakieś źle trafione urządzenie możemy sobie skasować wiele ważnych rzeczy i komputer będzie wymagał instalowania systemu od nowa. Lepiej więc być pewnym, że wysyłamy dane na kartę SD.</span> |
− | === Wgranie obrazu na kartę === | + | ==== Wgranie obrazu na kartę ==== |
[[Plik:Zamontowane_partycje.jpg||300px|thumb|right|Przycisk odmontowywania partycji w Menadżerze Plików.]] | [[Plik:Zamontowane_partycje.jpg||300px|thumb|right|Przycisk odmontowywania partycji w Menadżerze Plików.]] | ||
Na sam koniec zostały nam już dwa proste polecenia. Po włożeniu karty do czytnika po pierwsze musimy się upewnić, że partycje znajdujące się na niej nie są zamontowane. Łatwo to sprawdzić w Menadźerze Plików. Zamontowane partycje mają obok nazwy kwadratowe ikony ze strzałką w górę pozwalające na odmontowanie. Jeśli widzimy taką partycję znajdującą się na włożonej karcie wybieramy przycisk odmontowywania partycji. System wyświetla przy okazji komunikat, że w tym momencie można bezpiecznie wyciągnąć kartę z czytnika, ale nie robimy tego, ponieważ mamy właśnie zamiar zapisać na niej obraz RASPBIANA. Wykonując polecenie '''df''' możemy się upewnić, że po odmontowaniu system nie widzi partycji na karcie. Przykładowo: | Na sam koniec zostały nam już dwa proste polecenia. Po włożeniu karty do czytnika po pierwsze musimy się upewnić, że partycje znajdujące się na niej nie są zamontowane. Łatwo to sprawdzić w Menadźerze Plików. Zamontowane partycje mają obok nazwy kwadratowe ikony ze strzałką w górę pozwalające na odmontowanie. Jeśli widzimy taką partycję znajdującą się na włożonej karcie wybieramy przycisk odmontowywania partycji. System wyświetla przy okazji komunikat, że w tym momencie można bezpiecznie wyciągnąć kartę z czytnika, ale nie robimy tego, ponieważ mamy właśnie zamiar zapisać na niej obraz RASPBIANA. Wykonując polecenie '''df''' możemy się upewnić, że po odmontowaniu system nie widzi partycji na karcie. Przykładowo: | ||
Linia 110: | Linia 136: | ||
<div class="thumb tright"><div class="thumbinner" style="width:252px;">[https://xkcd.com/149/ http://imgs.xkcd.com/comics/sandwich.png]<div class="thumbcaption"><div class="magnify"></div>'''sudo''' według xkcd: ''Zrób mi kanapkę./Co? Sam sobie zrób./Sudo zrób mi kanapkę./Ok.''</div></div></div> | <div class="thumb tright"><div class="thumbinner" style="width:252px;">[https://xkcd.com/149/ http://imgs.xkcd.com/comics/sandwich.png]<div class="thumbcaption"><div class="magnify"></div>'''sudo''' według xkcd: ''Zrób mi kanapkę./Co? Sam sobie zrób./Sudo zrób mi kanapkę./Ok.''</div></div></div> | ||
− | Ponieważ będziemy zapisywać dane bezpośrednio do urządzenia, a tak bezpośredni dostęp wymaga uprawnień uprzywilejowanego użytkownika przed poleceniem '''dd''' znajduje się jeszcze polecenie '''sudo''', które zanim pozwoli '''dd''' zadziałać poprosi nas najpierw o hasło. Bez '''sudo''' polecenie '''dd''' nie ma dostępu do urządzenia karty SD o czym informuje komunikatem ''"dd: nie udało się otworzyć '/dev/mmcblk0': Brak dostępu"'' Warto zapamiętać, że '''sudo''' otwiera drzwi do uprzywilejowanych działań i przypomnieć sobie o nim kiedy otrzymujemy komunikat o braku dostępu. | + | Ponieważ będziemy zapisywać dane bezpośrednio do urządzenia, a tak bezpośredni dostęp wymaga uprawnień uprzywilejowanego użytkownika przed poleceniem '''dd''' znajduje się jeszcze polecenie '''sudo''', które zanim pozwoli '''dd''' zadziałać poprosi nas najpierw o hasło. Bez '''sudo''' polecenie '''dd''' nie ma dostępu do urządzenia karty SD o czym informuje komunikatem ''"dd: nie udało się otworzyć '/dev/mmcblk0': Brak dostępu"'' Warto zapamiętać, że '''sudo''' otwiera drzwi do uprzywilejowanych działań i przypomnieć sobie o nim kiedy otrzymujemy komunikat o braku dostępu. '''Sudo''' to skrót od angielskiego ''superuser do'', czyli "''zrób to jako uprzywilejowany użytkownik''". |
'''Uwaga:''' Kiedy wpisujemy hasło w konsoli nie pojawia się żaden znak. Nie należy się tym przejmować tylko pisać i skończyć ENTEREM. Takie zachowanie podyktowane jest względami bezpieczeństwa. Dzięki temu nikt kto obserwuje ekran nie będzie wiedział nawet z ilu liter składa się hasło. | '''Uwaga:''' Kiedy wpisujemy hasło w konsoli nie pojawia się żaden znak. Nie należy się tym przejmować tylko pisać i skończyć ENTEREM. Takie zachowanie podyktowane jest względami bezpieczeństwa. Dzięki temu nikt kto obserwuje ekran nie będzie wiedział nawet z ilu liter składa się hasło. | ||
Linia 125: | Linia 151: | ||
ktos@maszyna:~/rpi-zero$ | ktos@maszyna:~/rpi-zero$ | ||
− | Po zakończeniu nagrywania, kiedy pojawi się podsumowanie i prompt systemowy, można dodatkowo wpisać polecenie '''sync'''. Dzięki niemu mamy pewność, że jakieś dane ciągle jeszcze nie czekają na zapis pomimo tego, że terminal przyjmuje już kolejne polecenia. Po wykonaniu '''sync''' można wyjąć kartę i | + | Po zakończeniu nagrywania, kiedy pojawi się podsumowanie i prompt systemowy, można dodatkowo wpisać polecenie '''sync'''. Dzięki niemu mamy pewność, że jakieś dane ciągle jeszcze nie czekają na zapis pomimo tego, że terminal przyjmuje już kolejne polecenia. Po wykonaniu '''sync''' (co zwykle dzieje się błyskawicznie) można wyjąć kartę z czytnika. |
+ | |||
+ | ==== Sprawdzenie karty i uruchomienie Maliny ==== | ||
+ | [[Plik:Wygląd_nagranej_karty_w_gnome-disk-utility.png|250px|thumb|right| Wygląd nagranej karty w programie Gnome disk utility, czyli w skrócie "dyski".]] | ||
+ | Jeśli karta jest prawidłowo przygotowana po włożeniu do czytnika ponownie system powinien wyświetlić dwie partycje dysku systemowego RASPBIANA (w tym jedną mniejszą o nazwie "boot"). | ||
+ | |||
+ | Innym testem może być użycie programu "dyski", czyli klikamy ikonę w lewym górnym rogu ekranu i tam wpisujemy "dyski" -- interesuje nas program z ikoną dysku twardego i kluczem do przykręcania śrub. W tym programie karta SD z nagranym obrazem wygląda jak na obrazku po prawej. | ||
<br clear=all> | <br clear=all> | ||
+ | Jak widać na poniższym filmie po włożeniu prawidłowo przygotowanej karty SD do płytki i podłączeniu zasilania natychmiast zaczyna mrugać dioda. W miarę jak kolejne elementy systemu są wczytywane do pamięci dioda zmienia jasność, a kiedy proces wczytywania zakończy się świeci bez przerwy. Jeżeli płytka nie rozpoznaje systemu na karcie, lub nie włożymy karty w ogóle, po włączeniu zasilania dioda nie włącza się -- warto o tym pamiętać zanim zaczniemy podejrzewać, że płytka jest zepsuta. | ||
+ | |||
<youtube>UXJ0Ue10g5E</youtube> | <youtube>UXJ0Ue10g5E</youtube> | ||
<br clear=all> | <br clear=all> | ||
− | + | === W systemie Windows === | |
+ | <span style="color:gray">''Kto wie niech napisze.''</span> | ||
− | == W | + | == Ustawienie domyślnej sieci WiFi dla RaspberryPi Zero W == |
− | + | Malina Zero w wersji W ma wbudowany modem WiFi i dzięki temu możemy się z nią łączyć za pośrednictwem WiFi. Jednak żeby to było możliwe musimy do nagranego obrazu dopisać informację o tym jak nazywa się sieć (czyli podać jej nazwę SSID) i jakie jest hasło. | |
+ | |||
+ | === Dodanie parametrów sieci WiFi do konfiguracji systemu === | ||
+ | Jeśli na karcie z systemem Raspbian, w partycji '''boot''', dodamy plik | ||
+ | |||
+ | |||
+ | wpa_supplicant.conf | ||
+ | |||
+ | |||
+ | to system w czasie uruchamiania uzupełni jego zawartością swoją konfigurację i spróbuje połączyć się z opisaną w nim siecią. Zawartość pliku dla pojedynczej sieci WiFi jest następująca | ||
+ | |||
+ | |||
+ | <pre style='background-color:#f7f7f7;padding-left:0.5em;border-radius:5px'> | ||
+ | country=PL | ||
+ | ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev | ||
+ | update_config=1 | ||
+ | network={ | ||
+ | ssid="nazwa wifi" | ||
+ | psk="hasło wifi" | ||
+ | key_mgmt=WPA-PSK | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | Oczywiście w miejsce ''nazwa wifi'' i ''hasło wifi'' należy wstawić wartości odpowiednie dla sieci z którą chcemy się połączyć, zostawiając w obu przypadkach cudzysłów, czyli na przykład <code style='color:#007700'>ssid="orange-dom"</code>, a nie <code style='color:#aa7777'>ssid=orange-dom</code>. | ||
+ | |||
+ | Przy okazji dodawania pliku <code>wpa_supplicant.conf</code> warto dodać w tym samym miejscu pusty plik o nazwie <code>ssh</code> lub upewnić się, że tam jest. Taki plik spowoduje, że system Raspbian włączy obsługę połączeń '''ssh''' i będziemy mogli połączyć się zdalnie z tak skonfigurowaną Maliną. | ||
+ | |||
+ | === Łączenie z Maliną w sieci WiFi === | ||
+ | |||
+ | Po włączeniu Rasperrypi mniej więcej po około minucie powinna być już połączona z siecią WiFi zgodnie z podaną konfiguracją. Jeśli włożyliśmy kartę ze świeżo nagranym systemem warto poczekać nieco dłużej bo często przy pierwszym uruchomieniu następuje wstępna konfiguracja i ponowny reset (co bez monitora widać wyłącznie po dłużej mrugającej diodzie). | ||
+ | |||
+ | |||
+ | Pojawia się jednak problem. Żeby połączyć się z Maliną moglibyśmy podać na komputerze podpiętym do tej samej sieci WiFi polecenie | ||
+ | |||
+ | |||
+ | ssh pi@<span style="color:gray">192.168.1.13</span> | ||
+ | |||
+ | |||
+ | gdzie numer <code>192.168.1.13</code> jest tylko przykładowym, jednym z wielu możliwych, adresów IP jaki Malina mogła otrzymać od routera WiFi w trakcie łączenia się z siecią. Niestety routery WiFi przydzielają podłączanym urządzeniom numery IP w sposób losowy i nie wiemy z góry jaki adres podać. Musimy go jakoś odkryć. | ||
+ | |||
+ | ==== Znajdowanie IP maliny przy pomocy routera ==== | ||
+ | Jeśli mamy dostęp do konfiguracji routera najprościej otworzyć ją w przeglądarce i tam sprawdzić jakie urządzenia są podłączone i jakie adresy IP zostały im przypisane. Niestety ze względu na ilość różnych routerów WiFi ciężko tutaj podać więcej szczegółów. Po prostu jeśli potrafisz to zrobić warto z tej metody skorzystać. Jeśli nie, trzeba spróbować trochę "węszenia" w sieci. | ||
+ | |||
+ | ==== Znajdowanie IP maliny z komputera programem nmap ==== | ||
+ | Na komputerze z którego chcemy się połączyć z Maliną wykonaj polecenie | ||
+ | |||
+ | |||
+ | ip addr | ||
+ | |||
+ | |||
+ | w odpowiedzi otrzymasz listę dostępnych połączeń sieciowych i kilka informacji o nich. Większość możemy zignorować, ale musimy zwrócić uwagę na podane adresy IP, czyli liczby w formacie X.X.X.X po słowie ''inet'' | ||
+ | |||
+ | |||
+ | 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 | ||
+ | link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 | ||
+ | inet 127.0.0.1/8 scope host lo | ||
+ | valid_lft forever preferred_lft forever | ||
+ | inet6 ::1/128 scope host | ||
+ | valid_lft forever preferred_lft forever | ||
+ | 2: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 | ||
+ | link/ether cc:2f:71:3d:4e:d8 brd ff:ff:ff:ff:ff:ff | ||
+ | <span style='font-weight:bold'>inet 192.168.1.70</span>/24 brd 192.168.1.255 scope global dynamic noprefixroute wlo1 | ||
+ | valid_lft 86213sec preferred_lft 86213sec | ||
+ | inet6 fe80::ec26:23d7:9bb4:750d/64 scope link noprefixroute | ||
+ | valid_lft forever preferred_lft forever | ||
+ | 3: enx00e04c30c9ac: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 | ||
+ | link/ether 00:e0:4c:30:c9:ac brd ff:ff:ff:ff:ff:ff | ||
+ | |||
+ | |||
+ | Spis zawiera różne połączenia, ale te, które łączą się z siecią WiFi w Ubuntu mają nazwy zaczynające się od w. Jak widać na przykładowym spisie powyżej taką nazwę ma drugie połączenie na liście (<code>wlo1</code>) i jego adres IP to <code>192.168.1.70</code>. Ten adres posłuży nam jako podstawa do wyszukania adresu maliny. | ||
+ | |||
+ | |||
+ | Router WiFi przydziela adresy IP losowo, ale tylko w pewnym zakresie. Najczęściej zmienia się tylko ostatnia cyfra. Dzięki temu jeśli laptop podłączony do sieci ma adres <code>A.B.C.D</code> to prawie na pewno Malina podłączona do tej samej sieci WiFi będzie miała adres zaczynający się liczbami <code>A.B.C.</code>, a tylko ostatnią trzeba wykryć. W przykładzie powyżej komputer miał adres w sieci WiFi <code>192.168.1.70</code>, a więc malina otrzymała adres zaczynający się od <code>192.168.1.</code>. Numery w adresie zmieniają się w przedziale 0..255, co oznacza, że malina może mieć jeden z adresów | ||
+ | |||
+ | 192.168.1.<span style='font-weight:bold'>0</span> | ||
+ | 192.168.1.<span style='font-weight:bold'>1</span> | ||
+ | 192.168.1.<span style='font-weight:bold'>2</span> | ||
+ | 192.168.1.<span style='font-weight:bold'>3</span> | ||
+ | ... | ||
+ | 192.168.1.<span style='font-weight:bold'>255</span> | ||
+ | |||
+ | |||
+ | Żeby sprawdzić te wszystkie możliwości możemy posłużyć się poleceniem | ||
+ | |||
+ | |||
+ | nmap 192.168.1.* <-- pamiętaj, że pierwsze 3 cyfry są tylko przykładowe; należy je wziąć z adresu IP laptopa! | ||
+ | |||
+ | |||
+ | Jeśli polecenia nie ma zainstaluj je przy pomocy <code>sudo apt install nmap</code>. '''nmap''' skanuje sieć, adres po adresie i próbuje wyszukać otwarte porty. Malina powinna mieć otwartą usługę łączenia po ssh wobec tego pomimo tego, że nmap znajdzie wiele różnych urządzeń podłączonych do routera (komputery, smart TV, komórki, tablety), prawdopodobnie tylko malina będzie miała otwarty port ssh co wygląda tak | ||
+ | |||
+ | |||
+ | Starting Nmap 7.60 ( https://nmap.org ) at 2018-10-26 01:25 CEST | ||
+ | <span style="font-weight:bold">Nmap scan report for router.asus.com (192.168.1.1)</span> | ||
+ | Host is up (0.0052s latency). | ||
+ | Not shown: 997 closed ports | ||
+ | PORT STATE SERVICE | ||
+ | 23/tcp open telnet | ||
+ | 53/tcp open domain | ||
+ | 80/tcp open http | ||
+ | |||
+ | |||
+ | <span style="font-weight:bold">Nmap scan report for 192.168.1.36</span> | ||
+ | Host is up (0.0095s latency). | ||
+ | All 1000 scanned ports on 192.168.1.36 are closed (920) or filtered (80) | ||
+ | |||
+ | |||
+ | <span style="font-weight:bold">Nmap scan report for oru (192.168.1.70)</span> | ||
+ | Host is up (0.000039s latency). | ||
+ | Not shown: 999 closed ports | ||
+ | PORT STATE SERVICE | ||
+ | 80/tcp open http | ||
+ | |||
+ | |||
+ | <span style="font-weight:bold">Nmap scan report for 192.168.1.86</span> | ||
+ | Host is up (0.019s latency). | ||
+ | Not shown: 999 closed ports | ||
+ | PORT STATE SERVICE | ||
+ | <span style="font-weight:bold">22/tcp open ssh</span> | ||
+ | |||
+ | |||
+ | Nmap done: 256 IP addresses (4 hosts up) scanned in 9.85 seconds | ||
+ | |||
+ | |||
+ | |||
+ | Jak widać w sieci powyżej są 4 urządzenia pod adresami <code>192.168.1.<span style="font-weight:bold">1</span></code>, <code>192.168.1.<span style="font-weight:bold">36</span></code>, <code>192.168.1.<span style="font-weight:bold">70</span></code>, <code>192.168.1.<span style="font-weight:bold">86</span></code>, ale tylko ostatnie ''<code>192.168.1.86</code>'' ma otwarty port usługi '''ssh''' i ten IP wskazuje malinę. | ||
+ | |||
+ | ==== Znajdowanie IP maliny przy pomocy komórki ==== | ||
+ | [[Plik:Wifi_analyzer_tools_LAN_neighbors_example.png|160px|thumb|right|Lista urządzeń w lokalnej sieci z WiFi Analyzera.]] | ||
+ | |||
+ | |||
+ | W Google Play dostępna jest darmowa aplikacja [https://play.google.com/store/apps/details?id=com.farproc.wifi.analyzer Wifi analyzer] pozwalająca analizować sieci wifi w zasięgu komórki. | ||
+ | |||
+ | |||
+ | Jeśli komórka jest podłączona do tej samej sieci co malina możemy wybrać opcję ```Tools > LAN neighbors``` żeby wyświetlić listę urządzeń w niej obecnych. | ||
+ | |||
+ | |||
+ | Jak widać na zrzucie ekranu obok w tym przypadku nawet nie musimy się domyślać które IP zostało przydzielone do Raspberrypi. | ||
+ | |||
+ | <br clear=all> | ||
+ | |||
+ | ==== Łączenie po ssh z użyciem adresu IP ==== | ||
+ | Jeśli mamy już ustalony numer IP maliny możemy spróbować połączenia z nią | ||
+ | |||
+ | |||
+ | ssh pi@192.168.1.86 | ||
+ | |||
+ | |||
+ | i wszystko powinno działać. | ||
+ | |||
+ | |||
+ | Uwaga: Przy pierwszym logowaniu pojawia się dość przydługi komunikat zakończony pytaniem ''Are you sure you want to continue connecting (yes/no)?'' na które trzeba odpowiedzieć wpisując <code>yes</code> i ENTER. | ||
+ | |||
+ | == Zmodyfikowany system z obsługą lokalnego połączenia sieciowego przez zasilający kabel USB == | ||
+ | Malina może zostać skonfigurowana w ten sposób, że zasilający kabel USB będzie jednocześnie działał jako lokalne połączenie sieciowe. Dzięki takiej konfiguracji nie musimy posiadać dodatkowej klawiatury i monitora ponieważ będziemy mogli połączyć się z nią zdalnie z komputera, do którego jest podłączona. | ||
+ | === Obraz systemu === | ||
+ | Konfigurację można przeprowadzić samodzielnie na zainstalowanym obrazie producenta, ale dla wygody wstępnie ustawiony system dostępny jest na tej stronie w pliku [http://robo.city/wiki/big-files/raspbian_z_usb.tar.gz raspbian_z_usb.tar.gz]. W odróżnieniu od oryginalnego obrazu systemu, który ma 4GB po rozpakowaniu, ten został przygotowany na '''8GB''' kartę, której używamy. | ||
+ | |||
+ | === Nagrywanie === | ||
+ | Po jego ściągnięciu i [[Przygotowanie_systemu_dla_Raspberry_PI_Zero#Rozpakowanie_archiwum|rozpakowaniu]] do nagrywania najprościej użyć programu '''dyski''' (w terminalu polecenie '''gnome-disks'''), który już znamy. Po włożeniu karty do czytnika należy: | ||
+ | [[Plik:Nagrywanie_obrazu_dysku_przy_pomocy_gnome_disk_managera.jpg|thumb|400px|right|Program '''dyski''' chwilę przed rozpoczęciem nagrywania obrazu.]] | ||
+ | # Wybrać myszką kartę na liście dysków po lewej. Uwaga to ważny krok ponieważ w następnym zaczniemy nagrywać obraz właśnie na wybrany dysk i nie chcemy pozostawić tego przypadkowi. | ||
+ | # W menu po prawej u góry (przycisk z ikoną z trzema poziomymi kreskami) należy wybrać opcję "Przywróć obraz dysku...". | ||
+ | # W wyświetlony okienku wskazać rozpakowany plik obrazu do nagrania, upewnić się że celem będzie urządzenie reprezentujące kartę SD (powinno być jeśli wykonaliśmy prawidłowo pierwszy krok) i rozpocząć nagrywanie. Program poprosi o potwierdzenie i dodatkowo o hasło administratora. | ||
+ | |||
+ | Nagrywanie potrwa ok. 10 min (transferujemy w końcu 8GB danych a starsze karty SD nie są najszybsze). | ||
+ | |||
+ | === Sprawdzenie === | ||
+ | Nagrany system działa tak samo jak ten standardowy więc sprawdzenie można wykonać podobnie jak powyżej. | ||
+ | |||
+ | <span style="color:purple>'''Uwaga:''' Połączenie działa tylko z gniazda podpisanego '''USB'''. Włączenie kabla do gniazda podpisanego '''PWR IN''' spowoduje normalne uruchmienie Maliny, ale system na komputerze zasilającym nie będzie jej widział.</span> | ||
+ | |||
+ | Dla pewności, że Malina jest normalnie wykrywana (a nie tylko pobiera prąd) na komputerze zasilającym możemy wydać polecenie '''lsusb''' w terminalu (skrót angielskiego ''list USB''). Wyświetlona zostanie lista wszystkich urządzeń USB, które system rozpoznał jako podłączone. Wśród nich powinniśmy znaleźć Malinę (pogrubina nazwa poniżej) jako "ethernetowy gadżet". | ||
+ | |||
+ | <code> | ||
+ | ktos@maszyna:~$ lsusb | ||
+ | Bus 002 Device 002: ID 8087:8000 Intel Corp. | ||
+ | Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub | ||
+ | Bus 001 Device 002: ID 8087:8008 Intel Corp. | ||
+ | Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub | ||
+ | Bus 004 Device 002: ID 090c:1000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Flash Drive | ||
+ | Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub | ||
+ | Bus 003 Device 006: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller | ||
+ | Bus 003 Device 004: ID 0bda:5728 Realtek Semiconductor Corp. | ||
+ | Bus 003 Device 008: ID 0525:a4a2 '''Netchip Technology, Inc. Linux-USB Ethernet/RNDIS Gadget''' | ||
+ | Bus 003 Device 007: ID 1c4f:0026 SiGma Micro Keyboard | ||
+ | Bus 003 Device 005: ID 046d:c52f Logitech, Inc. Unifying Receiver | ||
+ | Bus 003 Device 003: ID 1a40:0101 Terminus Technology Inc. Hub | ||
+ | Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub | ||
+ | </code>. | ||
+ | |||
+ | === Połączenie z Maliną z konsoli === | ||
+ | ==== Konfiguracja po stronie komputera zasilającego Malinę ==== | ||
+ | W starszych wersja Ubuntu (16 i wcześniejszych) program symulujący połączenie sieciowe po kablu USB powodował, że automatyka ustawień sieciowych nie potrafiła prawidłowo zakończyć wykrywania tak skonfigurowanej Maliny. W nowszych wersjach ręczna konfiguracja komputera zasilającego nie jest konieczna i powinna być ona dostępna w terminalu pod adresem '''raspberrypi.local'''. Prawidłową komunikację możemy potwierdzić poleceniem '''ping''', które wykonuje test echa, czyli wysyła prosty pakiet do drugiego urządzenia i sprawdza czy ono odpowiada. Wygląda to następująco (jego działanie przerywamy Ctrl-C kiedy już zobaczymy kilka udanych testów): | ||
+ | <pre> | ||
+ | ktos@maszyna:~$ ping raspberrypi.local | ||
+ | PING raspberrypi.local (169.254.1.44) 56(84) bytes of data. | ||
+ | 64 bytes from raspberrypi.local (169.254.1.44): icmp_seq=1 ttl=64 time=0.433 ms | ||
+ | 64 bytes from raspberrypi.local (169.254.1.44): icmp_seq=2 ttl=64 time=0.319 ms | ||
+ | 64 bytes from raspberrypi.local (169.254.1.44): icmp_seq=3 ttl=64 time=0.324 ms | ||
+ | 64 bytes from raspberrypi.local (169.254.1.44): icmp_seq=4 ttl=64 time=0.316 ms | ||
+ | ^C | ||
+ | --- raspberrypi.local ping statistics --- | ||
+ | 4 packets transmitted, 4 received, 0% packet loss, time 2999ms | ||
+ | rtt min/avg/max/mdev = 0.316/0.348/0.433/0.049 ms | ||
+ | </pre> | ||
+ | |||
+ | Jak widać w przedostatniej linijce połączenie działa w 100% (0% utraty pakietów), a w ostatniej kolumnie dla poszczególnych testów widzimy, że działa również bardzo szybko jak na połączenie internetowe: Na odpowiedź z Maliny trzeba czekać zaledwie ułamek milisekundy, a przykładowo na tym samym komputerze ping wysłany do serwera Google (<code>ping google.com</code>) pokazuje, że pakiety wędrują kilkanaście milisekund, a więc 50 razy dłużej (w sumie nic dziwnego, kabel USB jest znacznie krótszy niż wszystkie przewody łączące komputer z serwerami tysiące kilometrów dalej). | ||
+ | |||
+ | ==== Połączenie z terminalem na Malinie ==== | ||
+ | Mając pewność, że połączenie działa możemy z niego skorzystać łącząc się zdalnie z jej terminalem. W tym celu wykonujemy polecenie '''ssh''' i podając nazwę Maliny i użytkownika jako parametr. Domyślnie RASPBIAN jest skonfigurowany z użytkownikiem <code>pi</code> i hasłem <code>raspberry</code>, które należy wpisać w odpowiedzi na zapytanie. | ||
+ | <pre> | ||
+ | ktos@maszyna:~ $ ssh pi@raspberrypi.local | ||
+ | pi@raspberrypi.local's password: | ||
+ | |||
+ | The programs included with the Debian GNU/Linux system are free software; | ||
+ | the exact distribution terms for each program are described in the | ||
+ | individual files in /usr/share/doc/*/copyright. | ||
+ | |||
+ | Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent | ||
+ | permitted by applicable law. | ||
+ | Last login: Sun May 29 23:17:11 2016 | ||
+ | pi@raspberrypi:~ $ | ||
+ | </pre> | ||
+ | |||
+ | <span style="color:green">Zwróćmy uwagę, że po zalogowaniu na zdalnym terminalu prompt systemowy uległ zmianie i pokazuje '''pi@raspberrypi''' -- od teraz pracujemy już na Malinie!</span> | ||
+ | |||
+ | Wszystkie polecenia wydane w tym połączeniu będzie wykonywane tak jakby terminal został uruchomiony "zwyczajnie" na jej pulpicie. Kiedy będziemy chcieli przerwać połączenie i wrócić do naszego lokalnego terminala wystarczy wpisać standardowe polecenie '''exit''', które terminal rozumie jako chęć zakończenia pracy. (np. polecenie '''exit''' wpisane w lokalnej konsoli po prostu zamknie okno). | ||
+ | |||
+ | === Dostęp do plików Maliny z komputera zasilającego === | ||
+ | [[Plik:Polaczenie z systemem plikow maliny.jpg|thumb|600px|right|Żeby uzyskać dostęp do plików Maliny możemy użyć Manadżera plików. Po wybraniu opcji "Połącz z serwerem" znajdującej się po lewej stronie na dole, wpisujemy adres serwera jak powyżej. Po wybraniu przycisku '''Połącz''' będziemy zapytani o hasło użytkownika '''pi''' na Malinie (domyślnie ''raspberry'').]] | ||
+ | |||
+ | Po nawiązaniu zdalnego połączenia będziemy mogli tworzyć i edytować dowolne pliki z komputera zasilającego, a zapisywać je bezpośrednio na karcie SD działającej Maliny. Szczegóły podane są w podpisach zrzutów ekranu. | ||
+ | |||
+ | |||
+ | |||
+ | <br clear=all> | ||
+ | [[Plik:Dzialajce polaczenie z systemem plikow maliny.jpg|thumb|right|600px|Po nazwiązaniu połączenia dysk Maliny będzie dostępny podobnie jak karty SD czy pendrivy wkładane do komputera. ]] | ||
+ | Zwróć uwagę, że układ katalogów w katalogu domowym użytkownika '''pi''' na Raspbianie jest bardzo podobny do układu Twojego użytkownika na Ubuntu. To podobieństwo może powodować łatwe pomyłki i warto spojrzeć na pasek stanu u góry okna gdzie jest wyświetlana jest pełna ścieżka do katalogu z nazwą komputera, na którym pracujemy. | ||
+ | <br clear=all> | ||
+ | Otwarcie dostępu do plików znajdujących się na dysku Maliny pozwala na przykład uruchomić edytor tekstu '''gedit''' i zapisywać edytowany plik od razu na Malinie (wystarczy wybrać stworzone właśnie połączenie w oknie zapisywania pliku). Jeśli zapisanym plikiem będzie program w pythonie możemy go potem wykonać w konsoli na połączeniu '''ssh''' tak jak opisuje to [[Wstęp_do_pythona#Nieco_dłuższe_programy| rozdział o dłuższych programach]] we wstępnie do programowania. | ||
[[Category:Pi_Zero]] | [[Category:Pi_Zero]] |
Aktualna wersja na dzień 22:26, 11 lut 2019
Spis treści
O co chodzi?
Raspberry Pi Zero (ang. raspberry - malina) jest tak naprawdę takim komputerem jak laptop i tak samo jak laptopy potrzebuje systemu operacyjnego do pracy zapisanego na dysku twardym.
Ze względu na rozmiar płytki podłączenie do niej zwykłego dysku byłoby raczej niewygodne (choć można to zrobić przez łącze USB) i droższe niż cały komputer. Z tego powodu twórcy Maliny zdecydowali się używać w tej roli zwykłej karty pamięci microSD i dlatego też instalacja systemu wygląda nieco inaczej. Nie ma instalatora, okienek potwierdzających wybór itd. Całość sprowadza się do nagrania odpowiednich plików na kartę. Można sobie wyobrazić, że projektanci komputera "jakoś tam" przygotowali system na karcie microSD włożonej do pierwszej Maliny, a potem wykonali kopię całej jej zawartości. Taką kopię nazywamy obrazem dysku i jest ona dostępna w sieci. Naszym zadaniem jest wykonanie odwrotnej procedury: Musimy go ściągnąć na swój komputer, a potem odpowiednio zapisać na karcie microSD. Niestety zwykłe skopiowanie pliku -- tak jak kopiuje się na przykład zdjęcia -- nie wystarczy. Chodzi o to, żeby komputer rozpoznał zawartość karty jako system operacyjny, a nie zwykłe pliki, wczytał go do pamięci i uruchomił. Z tego powodu procedura nagrywania obrazu systemu na kartę SD jest nieco inna, ale nadal zupełnie prosta.
Czy nie dałoby się jakoś prościej?
Pewnie tak; do pewnego stopnia całą poniższą procedurę można trochę uprościć. Jednak nagrywanie systemu na kartę jest świetną okazją żeby "otrzaskać się" z systemem. Nie przejmuj się, że coś nie wychodzi za pierwszym razem. Pytaj i spokojnie próbuj jeszcze raz. Rozwiązując kolejne problemy uczysz się nowych rzeczy o Ubuntu. Malina również działa z systemem Linux pochodzącym od Debiana, tak jak Ubuntu. Dlatego wszystko czego się dowiesz tutaj od razu przyda się przy zabawie z programowaniem Maliny. Wysiłek nie pójdzie więc na marne. Poniżej przykład, że nie trzeba skończyć studiów, żeby swobodnie bawić się Linuxem.
Kilka podstawowych instrukcji terminala przedstawia następny film (po polsku). Nie będziemy potrzebowali zbyt wielu poleceń w nim pokazanych, ale można go obejrzeć żeby zobaczyć jak ogólnie działa konsola. Wówczas instrukcje znajdujące się poniżej będą mniej "tajemnicze". Wyczerpującą listę poleceń można znaleźć na stronach Linux Questions Wiki.
Obraz systemu dostarczony przez producenta
Pobranie obrazu systemu
Na stronie głównej projektu Maliny w sekcji Downloads (czerwona zakładka u góry) znajduje się kilka obrazów systemów do wyboru. Dwa u góry dostarczane są przez producenta płytki. Kilka następnych przez różne grupy użytkowników. Każdy z dostępnych tam systemów będzie działał, ale dla wygody wybierzmy raspbiana STRETCH oficjalnie wspieranego przez producenta. Występuje on w dwóch wersjach: normalnej i LITE. Ta druga zawiera ten sam system, ale przeznaczona jest dla osób, którym zależy na jak najmniejszym obrazie systemu. W tej chwili możemy ją zignorować, ale warto pamiętać, że istnieje możliwość zmniejszenia ilości miejsca zajmowanego przez system operacyjny.
Uwaga: Żeby zminimalizować transfer danych ze strony (koszty!) obrazy systemów są spakowane. Dlatego zanim zaczniemy je nagrywać na dysk trzeba je rozpakować. Przykładowo pobrany plik RASPBIANA ma tylko 1.4GB, ale w środku znajduje się obraz systemu, który ma 4GB i wymaga co najmniej takiej karty pamięci. W Ubuntu spakowane pliki często są nazywane krótko: archiwum.
Nagrywanie w systemie Ubuntu
Rozpakowanie archiwum
Po zakończeniu ściągania i kliknięciu ściągniętego pliku system odkryje, że jest to archiwum, i zaproponuje użycie do jego otwarcia Menadżera Archiwów na co się zgadzamy. Możemy również sami uruchomić Menadżera Archiwów -- wystarczy kliknąć ikonę uruchamiania programów w lewym górnym rogu i tam zacząć pisać słowo archiwum. Ikona Menadżera Archiwów bardzo szybko pojawi się wśród proponowanych programów. Po otwarciu Menadżera wystarczy wskazać plik archiwum, który chcemy otworzyć i rozpakować.
Po otwarciu pliku w Menadżerze Archiwów w środku widzimy pojedynczy plik zawierający obraz dysku systemowego, czyli właśnie to czego potrzebujemy. Wystarczy go wskazać i wybrać przycisk Rozpakuj po czym wskazać swój katalog domowy, Pulpit, Dokumenty, lub dowolne miejsce, byle tylko zapamiętać gdzie zostanie zapisany rozpakowany plik.
Za chwilę będziemy potrzebowali nazwy pliku z pełną ścieżką dostępu do niego w wersji "terminalowej". Dla ułatwienia podajmy przykłady. Jeśli rozpakowaliśmy obraz systemu o nazwie 2018-10-09-raspbian-stretch.img na pulpit, to na dysku znajdziemy go w katalogu Desktop lub Pulpit (zależnie od wersji językowej systemu jaką instalowaliśmy). Pełna ścieżka będzie więc miała postać:
/home/uzytkownik/Desktop/2018-10-09-raspbian-stretch.img
lub w wersji polskiej
/home/uzytkownik/Pulpit/2018-10-09-raspbian-stretch.img
W miejscie użytkownik należy wstawić nazwę konta, na które logowaliśmy się przy włączaniu Ubuntu.
Taką właśnie "ścieżką do pliku" posłużymy się w poleceniu dd zaraz po parametrze if= opisywanym dalej. Przykładowo dla użytkownika Piotr
sudo dd bs=4M if=/home/Piotr/Pulpit/2018-10-09-raspbian-stretch.img ... (dalsze parametry pominięte)
Wyszukanie karty SD
Zanim wykonamy przepisanie obrazu systemu z pobranego pliku na kartę SD musimy dowiedzieć się jak system Ubuntu widzi kartę i dokąd skierować dane obrazu, żeby zostały na niej zapisane.
Po włożeniu karty do czytnika system wykrywa jej obecność i po chwili pojawi się ona jako nowy "dysk" w menadżerze plików. Tą operację nazywa się montowaniem systemu plików (każdy nośnik danych ma je poukładane zgodnie z jakimś znanym schematem, czyli ma pewien "system plików"). Nie będziemy wnikać w szczegóły, ale za chwilę będziemy mówić o odmontowaniu dysku i dlatego wspominamy kiedy nastąpiło montowanie. Przy czym nie należy myśleć, że włożenie karty do czytnika i montowanie to te same operacje. Tylko dla wygody Ubuntu wykonuje montowanie automatycznie, ale tak naprawdę karta może być włożona do czytnika, a nadal pozostawać zamontowana lub nie. Montowanie po prostu oznacza, że Ubuntu zrozumiało jaka jest struktura danych i może zacząć zapisywać czy kasować pliki. Jeśli na przykład karta jest kompletnie pusta i nie ma żadnego systemu plików, po jej włożeniu automatyczne montowanie zakończy się niepowodzeniem, ale nadal można taką kartę na przykład sformatować żeby nadać jej wybrany system plików. Zamontowane dyski da się przeglądać w Menadżerze Plików.
Żeby wykonać kopiowanie systemu posłużymy się poleceniem dd w terminalu. Wykonuje ono bardzo niskopoziomome przepisanie danych z jednego miejsca w drugie. Skąd wziąć dane już wiemy -- zwiera je plik obrazu systemu wypakowany z pobranego archiwum. Pozostaje pytanie gdzie należy zapisać jego zawartość?
Żeby się tego dowiedzieć posłużymy się poleceniem df. Po otwarciu terminala (znów można kliknąć ikonę w prawym górnym rogu i zacząć pisać słowo "terminal") wpisujemy df -h i naciskamy Enter (to, że naciskamy Enter na końcu polecenia w terminalu od teraz uznamy za oczywiste, żeby nie musieć tego ciągle powtarzać). Powinna się pojawić lista obecnie dostępnych dysków oraz informacja o stopniu ich wykorzystania (do tego tak w ogóle służy polecenie df). Wygląda to mniej więcej tak (pogrubienia dodane w celu zwrócenia uwagi na istotne elementy, normalnie ich nie ma):
ktos@maszyna:~$ df -h System plików rozm. użyte dost. %uż. zamont. na udev 5,9G 0 5,9G 0% /dev tmpfs 1,2G 9,5M 1,2G 1% /run /dev/sda2 223G 174G 38G 83% / tmpfs 5,9G 276K 5,9G 1% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 5,9G 0 5,9G 0% /sys/fs/cgroup /dev/sda1 200M 12M 188M 6% /boot/efi cgmfs 100K 0 100K 0% /run/cgmanager/fs tmpfs 1,2G 52K 1,2G 1% /run/user/1000 /dev/mmcblk0p2 7,2G 3,3G 3,6G 48% /media/ktos/2f840c69-cecb-4b10-87e4-01b9d28c231c /dev/mmcblk0p1 63M 21M 43M 33% /media/ktos/boot
Na powyższej liście interesują nas nazwy urządzeń wymienione w pierwszej kolumnie zaczynające się od /dev/ Wśród nich znajduje się takie, którego rozmiar będzie pasował do zainstalowanej karty (mniej więcej). Powyżej najbardziej prawdopodobną nazwą urządzenia gdzie Linux "widzi" kartę SD będzie /dev/mmcblk0. A dlaczego nie /dev/mmcblk0p2 lub /dev/mmcblk0p1? Końcówki p1/p2 ignorujemy ponieważ one wskazują tylko, że ten "dysk" jest podzielony na więcej części. Podobny schemat nazywania części dysku widać powyżej w przypadku urządzenia /dev/sda, które również ma partycje /dev/sda1 i /dev/sda2, ale nazwą całego urządzenia jest tylko /dev/sda, wzięte bez numerów. Ale na wszelki wypadek warto przy okazji dodać, że /dev/sda to najczęściej główny dysk komputera i z pewnością nie tam należy kopiować obraz Raspbiana. Łatwo zauważyć, że /dev/sda2 ma rozmiar 223GB i na pewno nie jest poszukiwaną kartą SD.
Żeby zobaczyć jak to działa wpiszmy w terminalu polecenie wyświetlające wszystkie urządzenia, których nazwa zaczyna się od /dev/mm. Użyjemy do tego polecenia ls
ktos@maszyna:~$ ls /dev/mm* /dev/mmcblk0 /dev/mmcblk0p1 /dev/mmcblk0p2
(Jeśli na Twoim komputerze podejrzewasz, że może chodzić o urządzenie /dev/sde, użyj polecenia ls /dev/sde*, i tak dalej; dopsuj je według potrzeb.)
Zauważ, że najpierw wyświetlana jest nazwa głównego urządzenia (tutaj /dev/mmcblk0), a potem nazwy jego partycji z końcówkami ...p1 i ...p2. Dla całkowitej pewności wyciągnijmy kartę z czytnika i powtórzmy powyższe polecenie. Jeśli otrzymamy komunikat, że urządzenie nie jest już widoczne, oznacza to, że znaleźliśmy to co trzeba. Oczywiście na różnych komputerach nazwa może być inna, ale metoda pozostaje ta sama: wkładamy kartę, poleceniem df -h wyświetlamy dyski, znajdujemy głównego podejrzanego, i dla sprawdzenia po wyjęciu karty wyświetlamy dyski ponownie (poleceniem df -h lub ls z podejrzewanym początkiem nazwy) żeby się upewnić czy znaleźliśmy właściwą nazwę.
Dlaczego znalezienie prawidłowej nazwy jest tak ważne? W następnym punkcie użyjemy polecenia dd, które obchodzi się z danymi w sposób bezceremonialny. Jeśli podamy mu prawidłowe parametry, wykona to czego chcieliśmy bez zarzutu. Jeśli jednak wyślemy obraz RASPBIANA na jakieś źle trafione urządzenie możemy sobie skasować wiele ważnych rzeczy i komputer będzie wymagał instalowania systemu od nowa. Lepiej więc być pewnym, że wysyłamy dane na kartę SD.
Wgranie obrazu na kartę
Na sam koniec zostały nam już dwa proste polecenia. Po włożeniu karty do czytnika po pierwsze musimy się upewnić, że partycje znajdujące się na niej nie są zamontowane. Łatwo to sprawdzić w Menadźerze Plików. Zamontowane partycje mają obok nazwy kwadratowe ikony ze strzałką w górę pozwalające na odmontowanie. Jeśli widzimy taką partycję znajdującą się na włożonej karcie wybieramy przycisk odmontowywania partycji. System wyświetla przy okazji komunikat, że w tym momencie można bezpiecznie wyciągnąć kartę z czytnika, ale nie robimy tego, ponieważ mamy właśnie zamiar zapisać na niej obraz RASPBIANA. Wykonując polecenie df możemy się upewnić, że po odmontowaniu system nie widzi partycji na karcie. Przykładowo:
przed odmontowaniem
ktos@maszyna:~$ df -h System plików rozm. użyte dost. %uż. zamont. na udev 5,9G 0 5,9G 0% /dev tmpfs 1,2G 9,5M 1,2G 1% /run /dev/sda2 223G 174G 38G 83% / tmpfs 5,9G 276K 5,9G 1% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 5,9G 0 5,9G 0% /sys/fs/cgroup /dev/sda1 200M 12M 188M 6% /boot/efi cgmfs 100K 0 100K 0% /run/cgmanager/fs tmpfs 1,2G 52K 1,2G 1% /run/user/1000 /dev/mmcblk0p2 7,2G 3,3G 3,6G 48% /media/ktos/2f840c69-cecb-4b10-87e4-01b9d28c231c /dev/mmcblk0p1 63M 21M 43M 33% /media/ktos/boot
po odmontowaniu (brak ostatnich dwóch linijek)
ktos@maszyna:~$ df -h System plików rozm. użyte dost. %uż. zamont. na udev 5,9G 0 5,9G 0% /dev tmpfs 1,2G 9,5M 1,2G 1% /run /dev/sda2 223G 174G 38G 83% / tmpfs 5,9G 276K 5,9G 1% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 5,9G 0 5,9G 0% /sys/fs/cgroup /dev/sda1 200M 12M 188M 6% /boot/efi cgmfs 100K 0 100K 0% /run/cgmanager/fs tmpfs 1,2G 52K 1,2G 1% /run/user/1000
Teraz pozostaje nam tylko wykonać przeniesienie obrazu na kartę. Polecenie dd będzie potrzebowało minut, żeby zapisać obraz. Niestety w tym czasie nie będzie niczego dodatkowego wyświetlać, a więc należy się uzbroić w cierpliwość. W końcu kopiujemy 4GB danych i to musi chwilę potrwać. Polecenie ma następującą składnię:
ktos@maszyna:~$ sudo dd bs=4M if=nazwa_pliku_z_obrazem_raspbian of=nazwa_urzadzenia_karty_sd
Ponieważ będziemy zapisywać dane bezpośrednio do urządzenia, a tak bezpośredni dostęp wymaga uprawnień uprzywilejowanego użytkownika przed poleceniem dd znajduje się jeszcze polecenie sudo, które zanim pozwoli dd zadziałać poprosi nas najpierw o hasło. Bez sudo polecenie dd nie ma dostępu do urządzenia karty SD o czym informuje komunikatem "dd: nie udało się otworzyć '/dev/mmcblk0': Brak dostępu" Warto zapamiętać, że sudo otwiera drzwi do uprzywilejowanych działań i przypomnieć sobie o nim kiedy otrzymujemy komunikat o braku dostępu. Sudo to skrót od angielskiego superuser do, czyli "zrób to jako uprzywilejowany użytkownik".
Uwaga: Kiedy wpisujemy hasło w konsoli nie pojawia się żaden znak. Nie należy się tym przejmować tylko pisać i skończyć ENTEREM. Takie zachowanie podyktowane jest względami bezpieczeństwa. Dzięki temu nikt kto obserwuje ekran nie będzie wiedział nawet z ilu liter składa się hasło.
Paramter bs (ang. buffer size) definiuje jakimi porcjami obraz będzie kopiowany. Ze względu na specyfikę obrazu nagrywanego na kartę SD należy kopiować porcjami nie większymi niż 4MB. Parametr if (ang. input file) określa skąd dane mają być odczytywane, ostatni parametr of (ang. output file) określa gdzie dane mają być zapisywane. W przypadku obrazu RASPBIANA i przykładowego urządzenia karty SD znalezionego w poprzednim punkcie ostatecznie wyglądałoby ono następująco
ktos@maszyna:~/rpi-zero$ sudo dd bs=4M if=2016-05-27-raspbian-jessie.img of=/dev/mmcblk0 [sudo] hasło użytkownika ktos: (hasło i ENTER) (kilka minut oczekiwania) 1004+1 przeczytanych recordów 1004+1 zapisanych recordów 4019191808 bytes (4,0 GB, 3,7 GiB) copied, 391,843 s, 10,3 MB/s ktos@maszyna:~/rpi-zero$
Po zakończeniu nagrywania, kiedy pojawi się podsumowanie i prompt systemowy, można dodatkowo wpisać polecenie sync. Dzięki niemu mamy pewność, że jakieś dane ciągle jeszcze nie czekają na zapis pomimo tego, że terminal przyjmuje już kolejne polecenia. Po wykonaniu sync (co zwykle dzieje się błyskawicznie) można wyjąć kartę z czytnika.
Sprawdzenie karty i uruchomienie Maliny
Jeśli karta jest prawidłowo przygotowana po włożeniu do czytnika ponownie system powinien wyświetlić dwie partycje dysku systemowego RASPBIANA (w tym jedną mniejszą o nazwie "boot").
Innym testem może być użycie programu "dyski", czyli klikamy ikonę w lewym górnym rogu ekranu i tam wpisujemy "dyski" -- interesuje nas program z ikoną dysku twardego i kluczem do przykręcania śrub. W tym programie karta SD z nagranym obrazem wygląda jak na obrazku po prawej.
Jak widać na poniższym filmie po włożeniu prawidłowo przygotowanej karty SD do płytki i podłączeniu zasilania natychmiast zaczyna mrugać dioda. W miarę jak kolejne elementy systemu są wczytywane do pamięci dioda zmienia jasność, a kiedy proces wczytywania zakończy się świeci bez przerwy. Jeżeli płytka nie rozpoznaje systemu na karcie, lub nie włożymy karty w ogóle, po włączeniu zasilania dioda nie włącza się -- warto o tym pamiętać zanim zaczniemy podejrzewać, że płytka jest zepsuta.
W systemie Windows
Kto wie niech napisze.
Ustawienie domyślnej sieci WiFi dla RaspberryPi Zero W
Malina Zero w wersji W ma wbudowany modem WiFi i dzięki temu możemy się z nią łączyć za pośrednictwem WiFi. Jednak żeby to było możliwe musimy do nagranego obrazu dopisać informację o tym jak nazywa się sieć (czyli podać jej nazwę SSID) i jakie jest hasło.
Dodanie parametrów sieci WiFi do konfiguracji systemu
Jeśli na karcie z systemem Raspbian, w partycji boot, dodamy plik
wpa_supplicant.conf
to system w czasie uruchamiania uzupełni jego zawartością swoją konfigurację i spróbuje połączyć się z opisaną w nim siecią. Zawartość pliku dla pojedynczej sieci WiFi jest następująca
country=PL ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="nazwa wifi" psk="hasło wifi" key_mgmt=WPA-PSK }
Oczywiście w miejsce nazwa wifi i hasło wifi należy wstawić wartości odpowiednie dla sieci z którą chcemy się połączyć, zostawiając w obu przypadkach cudzysłów, czyli na przykład ssid="orange-dom"
, a nie ssid=orange-dom
.
Przy okazji dodawania pliku wpa_supplicant.conf
warto dodać w tym samym miejscu pusty plik o nazwie ssh
lub upewnić się, że tam jest. Taki plik spowoduje, że system Raspbian włączy obsługę połączeń ssh i będziemy mogli połączyć się zdalnie z tak skonfigurowaną Maliną.
Łączenie z Maliną w sieci WiFi
Po włączeniu Rasperrypi mniej więcej po około minucie powinna być już połączona z siecią WiFi zgodnie z podaną konfiguracją. Jeśli włożyliśmy kartę ze świeżo nagranym systemem warto poczekać nieco dłużej bo często przy pierwszym uruchomieniu następuje wstępna konfiguracja i ponowny reset (co bez monitora widać wyłącznie po dłużej mrugającej diodzie).
Pojawia się jednak problem. Żeby połączyć się z Maliną moglibyśmy podać na komputerze podpiętym do tej samej sieci WiFi polecenie
ssh pi@192.168.1.13
gdzie numer 192.168.1.13
jest tylko przykładowym, jednym z wielu możliwych, adresów IP jaki Malina mogła otrzymać od routera WiFi w trakcie łączenia się z siecią. Niestety routery WiFi przydzielają podłączanym urządzeniom numery IP w sposób losowy i nie wiemy z góry jaki adres podać. Musimy go jakoś odkryć.
Znajdowanie IP maliny przy pomocy routera
Jeśli mamy dostęp do konfiguracji routera najprościej otworzyć ją w przeglądarce i tam sprawdzić jakie urządzenia są podłączone i jakie adresy IP zostały im przypisane. Niestety ze względu na ilość różnych routerów WiFi ciężko tutaj podać więcej szczegółów. Po prostu jeśli potrafisz to zrobić warto z tej metody skorzystać. Jeśli nie, trzeba spróbować trochę "węszenia" w sieci.
Znajdowanie IP maliny z komputera programem nmap
Na komputerze z którego chcemy się połączyć z Maliną wykonaj polecenie
ip addr
w odpowiedzi otrzymasz listę dostępnych połączeń sieciowych i kilka informacji o nich. Większość możemy zignorować, ale musimy zwrócić uwagę na podane adresy IP, czyli liczby w formacie X.X.X.X po słowie inet
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether cc:2f:71:3d:4e:d8 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.70/24 brd 192.168.1.255 scope global dynamic noprefixroute wlo1
valid_lft 86213sec preferred_lft 86213sec
inet6 fe80::ec26:23d7:9bb4:750d/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: enx00e04c30c9ac: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:e0:4c:30:c9:ac brd ff:ff:ff:ff:ff:ff
Spis zawiera różne połączenia, ale te, które łączą się z siecią WiFi w Ubuntu mają nazwy zaczynające się od w. Jak widać na przykładowym spisie powyżej taką nazwę ma drugie połączenie na liście (wlo1
) i jego adres IP to 192.168.1.70
. Ten adres posłuży nam jako podstawa do wyszukania adresu maliny.
Router WiFi przydziela adresy IP losowo, ale tylko w pewnym zakresie. Najczęściej zmienia się tylko ostatnia cyfra. Dzięki temu jeśli laptop podłączony do sieci ma adres A.B.C.D
to prawie na pewno Malina podłączona do tej samej sieci WiFi będzie miała adres zaczynający się liczbami A.B.C.
, a tylko ostatnią trzeba wykryć. W przykładzie powyżej komputer miał adres w sieci WiFi 192.168.1.70
, a więc malina otrzymała adres zaczynający się od 192.168.1.
. Numery w adresie zmieniają się w przedziale 0..255, co oznacza, że malina może mieć jeden z adresów
192.168.1.0 192.168.1.1 192.168.1.2 192.168.1.3 ... 192.168.1.255
Żeby sprawdzić te wszystkie możliwości możemy posłużyć się poleceniem
nmap 192.168.1.* <-- pamiętaj, że pierwsze 3 cyfry są tylko przykładowe; należy je wziąć z adresu IP laptopa!
Jeśli polecenia nie ma zainstaluj je przy pomocy sudo apt install nmap
. nmap skanuje sieć, adres po adresie i próbuje wyszukać otwarte porty. Malina powinna mieć otwartą usługę łączenia po ssh wobec tego pomimo tego, że nmap znajdzie wiele różnych urządzeń podłączonych do routera (komputery, smart TV, komórki, tablety), prawdopodobnie tylko malina będzie miała otwarty port ssh co wygląda tak
Starting Nmap 7.60 ( https://nmap.org ) at 2018-10-26 01:25 CEST Nmap scan report for router.asus.com (192.168.1.1) Host is up (0.0052s latency). Not shown: 997 closed ports PORT STATE SERVICE 23/tcp open telnet 53/tcp open domain 80/tcp open http
Nmap scan report for 192.168.1.36
Host is up (0.0095s latency).
All 1000 scanned ports on 192.168.1.36 are closed (920) or filtered (80)
Nmap scan report for oru (192.168.1.70)
Host is up (0.000039s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
80/tcp open http
Nmap scan report for 192.168.1.86 Host is up (0.019s latency). Not shown: 999 closed ports PORT STATE SERVICE 22/tcp open ssh
Nmap done: 256 IP addresses (4 hosts up) scanned in 9.85 seconds
Jak widać w sieci powyżej są 4 urządzenia pod adresami 192.168.1.1
, 192.168.1.36
, 192.168.1.70
, 192.168.1.86
, ale tylko ostatnie 192.168.1.86
ma otwarty port usługi ssh i ten IP wskazuje malinę.
Znajdowanie IP maliny przy pomocy komórki
W Google Play dostępna jest darmowa aplikacja Wifi analyzer pozwalająca analizować sieci wifi w zasięgu komórki.
Jeśli komórka jest podłączona do tej samej sieci co malina możemy wybrać opcję ```Tools > LAN neighbors``` żeby wyświetlić listę urządzeń w niej obecnych.
Jak widać na zrzucie ekranu obok w tym przypadku nawet nie musimy się domyślać które IP zostało przydzielone do Raspberrypi.
Łączenie po ssh z użyciem adresu IP
Jeśli mamy już ustalony numer IP maliny możemy spróbować połączenia z nią
ssh pi@192.168.1.86
i wszystko powinno działać.
Uwaga: Przy pierwszym logowaniu pojawia się dość przydługi komunikat zakończony pytaniem Are you sure you want to continue connecting (yes/no)? na które trzeba odpowiedzieć wpisując yes
i ENTER.
Zmodyfikowany system z obsługą lokalnego połączenia sieciowego przez zasilający kabel USB
Malina może zostać skonfigurowana w ten sposób, że zasilający kabel USB będzie jednocześnie działał jako lokalne połączenie sieciowe. Dzięki takiej konfiguracji nie musimy posiadać dodatkowej klawiatury i monitora ponieważ będziemy mogli połączyć się z nią zdalnie z komputera, do którego jest podłączona.
Obraz systemu
Konfigurację można przeprowadzić samodzielnie na zainstalowanym obrazie producenta, ale dla wygody wstępnie ustawiony system dostępny jest na tej stronie w pliku raspbian_z_usb.tar.gz. W odróżnieniu od oryginalnego obrazu systemu, który ma 4GB po rozpakowaniu, ten został przygotowany na 8GB kartę, której używamy.
Nagrywanie
Po jego ściągnięciu i rozpakowaniu do nagrywania najprościej użyć programu dyski (w terminalu polecenie gnome-disks), który już znamy. Po włożeniu karty do czytnika należy:
- Wybrać myszką kartę na liście dysków po lewej. Uwaga to ważny krok ponieważ w następnym zaczniemy nagrywać obraz właśnie na wybrany dysk i nie chcemy pozostawić tego przypadkowi.
- W menu po prawej u góry (przycisk z ikoną z trzema poziomymi kreskami) należy wybrać opcję "Przywróć obraz dysku...".
- W wyświetlony okienku wskazać rozpakowany plik obrazu do nagrania, upewnić się że celem będzie urządzenie reprezentujące kartę SD (powinno być jeśli wykonaliśmy prawidłowo pierwszy krok) i rozpocząć nagrywanie. Program poprosi o potwierdzenie i dodatkowo o hasło administratora.
Nagrywanie potrwa ok. 10 min (transferujemy w końcu 8GB danych a starsze karty SD nie są najszybsze).
Sprawdzenie
Nagrany system działa tak samo jak ten standardowy więc sprawdzenie można wykonać podobnie jak powyżej.
Uwaga: Połączenie działa tylko z gniazda podpisanego USB. Włączenie kabla do gniazda podpisanego PWR IN spowoduje normalne uruchmienie Maliny, ale system na komputerze zasilającym nie będzie jej widział.
Dla pewności, że Malina jest normalnie wykrywana (a nie tylko pobiera prąd) na komputerze zasilającym możemy wydać polecenie lsusb w terminalu (skrót angielskiego list USB). Wyświetlona zostanie lista wszystkich urządzeń USB, które system rozpoznał jako podłączone. Wśród nich powinniśmy znaleźć Malinę (pogrubina nazwa poniżej) jako "ethernetowy gadżet".
ktos@maszyna:~$ lsusb
Bus 002 Device 002: ID 8087:8000 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 090c:1000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Flash Drive
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 006: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 003 Device 004: ID 0bda:5728 Realtek Semiconductor Corp.
Bus 003 Device 008: ID 0525:a4a2 Netchip Technology, Inc. Linux-USB Ethernet/RNDIS Gadget
Bus 003 Device 007: ID 1c4f:0026 SiGma Micro Keyboard
Bus 003 Device 005: ID 046d:c52f Logitech, Inc. Unifying Receiver
Bus 003 Device 003: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
.
Połączenie z Maliną z konsoli
Konfiguracja po stronie komputera zasilającego Malinę
W starszych wersja Ubuntu (16 i wcześniejszych) program symulujący połączenie sieciowe po kablu USB powodował, że automatyka ustawień sieciowych nie potrafiła prawidłowo zakończyć wykrywania tak skonfigurowanej Maliny. W nowszych wersjach ręczna konfiguracja komputera zasilającego nie jest konieczna i powinna być ona dostępna w terminalu pod adresem raspberrypi.local. Prawidłową komunikację możemy potwierdzić poleceniem ping, które wykonuje test echa, czyli wysyła prosty pakiet do drugiego urządzenia i sprawdza czy ono odpowiada. Wygląda to następująco (jego działanie przerywamy Ctrl-C kiedy już zobaczymy kilka udanych testów):
ktos@maszyna:~$ ping raspberrypi.local PING raspberrypi.local (169.254.1.44) 56(84) bytes of data. 64 bytes from raspberrypi.local (169.254.1.44): icmp_seq=1 ttl=64 time=0.433 ms 64 bytes from raspberrypi.local (169.254.1.44): icmp_seq=2 ttl=64 time=0.319 ms 64 bytes from raspberrypi.local (169.254.1.44): icmp_seq=3 ttl=64 time=0.324 ms 64 bytes from raspberrypi.local (169.254.1.44): icmp_seq=4 ttl=64 time=0.316 ms ^C --- raspberrypi.local ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 2999ms rtt min/avg/max/mdev = 0.316/0.348/0.433/0.049 ms
Jak widać w przedostatniej linijce połączenie działa w 100% (0% utraty pakietów), a w ostatniej kolumnie dla poszczególnych testów widzimy, że działa również bardzo szybko jak na połączenie internetowe: Na odpowiedź z Maliny trzeba czekać zaledwie ułamek milisekundy, a przykładowo na tym samym komputerze ping wysłany do serwera Google (ping google.com
) pokazuje, że pakiety wędrują kilkanaście milisekund, a więc 50 razy dłużej (w sumie nic dziwnego, kabel USB jest znacznie krótszy niż wszystkie przewody łączące komputer z serwerami tysiące kilometrów dalej).
Połączenie z terminalem na Malinie
Mając pewność, że połączenie działa możemy z niego skorzystać łącząc się zdalnie z jej terminalem. W tym celu wykonujemy polecenie ssh i podając nazwę Maliny i użytkownika jako parametr. Domyślnie RASPBIAN jest skonfigurowany z użytkownikiem pi
i hasłem raspberry
, które należy wpisać w odpowiedzi na zapytanie.
ktos@maszyna:~ $ ssh pi@raspberrypi.local pi@raspberrypi.local's password: The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sun May 29 23:17:11 2016 pi@raspberrypi:~ $
Zwróćmy uwagę, że po zalogowaniu na zdalnym terminalu prompt systemowy uległ zmianie i pokazuje pi@raspberrypi -- od teraz pracujemy już na Malinie!
Wszystkie polecenia wydane w tym połączeniu będzie wykonywane tak jakby terminal został uruchomiony "zwyczajnie" na jej pulpicie. Kiedy będziemy chcieli przerwać połączenie i wrócić do naszego lokalnego terminala wystarczy wpisać standardowe polecenie exit, które terminal rozumie jako chęć zakończenia pracy. (np. polecenie exit wpisane w lokalnej konsoli po prostu zamknie okno).
Dostęp do plików Maliny z komputera zasilającego
Po nawiązaniu zdalnego połączenia będziemy mogli tworzyć i edytować dowolne pliki z komputera zasilającego, a zapisywać je bezpośrednio na karcie SD działającej Maliny. Szczegóły podane są w podpisach zrzutów ekranu.
Zwróć uwagę, że układ katalogów w katalogu domowym użytkownika pi na Raspbianie jest bardzo podobny do układu Twojego użytkownika na Ubuntu. To podobieństwo może powodować łatwe pomyłki i warto spojrzeć na pasek stanu u góry okna gdzie jest wyświetlana jest pełna ścieżka do katalogu z nazwą komputera, na którym pracujemy.
Otwarcie dostępu do plików znajdujących się na dysku Maliny pozwala na przykład uruchomić edytor tekstu gedit i zapisywać edytowany plik od razu na Malinie (wystarczy wybrać stworzone właśnie połączenie w oknie zapisywania pliku). Jeśli zapisanym plikiem będzie program w pythonie możemy go potem wykonać w konsoli na połączeniu ssh tak jak opisuje to rozdział o dłuższych programach we wstępnie do programowania.