Przygotowanie systemu dla Raspberry Pi Zero: Różnice pomiędzy wersjami

Z RoboCity
(Wgranie obrazu na kartę)
(Wgranie obrazu na kartę)
Linia 90: Linia 90:
 
  cgmfs          100K    0  100K  0% /run/cgmanager/fs
 
  cgmfs          100K    0  100K  0% /run/cgmanager/fs
 
  tmpfs          1,2G  52K  1,2G  1% /run/user/1000
 
  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:~$ dd bs=4M if=nazwa_pliku_z_obrazem_raspbian of=nazwa_urzadzenia_karty_sd
 +
 +
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:~$ dd bs=4M if=2016-05-27-raspbian-jessie.img of=/dev/mmcblk0
 +
 +
 +
Po zakończeniu nagrywania (pojawi się znouw prompt systemu w terminalu) można dodatkowo wpisac 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 włożyć ponownie. System powinien wyświetlić dwie partycje dysku systemowego RASPBIANA, co dowodzi, że karta jest gotowa do użycia w Malinie.
  
 
== W systemie Windows ==
 
== W systemie Windows ==

Wersja z 20:13, 10 cze 2016

O co chodzi?

Malina Zero i jej "twardy dysk".

Raspberry Pi Zero jest tak naprawdę pełnym komputerem o takiej samej wydajności jak pierwszy Xbox. Jak każdy taki komputer potrzebuje systemu operacyjnego do pracy.

W zwykłych komputerach systemy instaluje się z dysków CD albo kupuje się komputer z już zainstalowanym systemem. Malina Zero (ang. raspberry to właśnie malina) jest tak mała, że podłączanie do niej dysków twardych i czytników CD byłoby raczej śmieszne, a już na pewno mało wygodne (choć można to zrobić przez łącze USB!). Dlatego twórcy tego komputera zdecydowali się używać jako "dysku twardego" karty microSD. Instalacja systemu wygląda więc nieco inaczej i podobna jest do zwykłego kopiowania plików.

Można sobie wyobrazić, że producenci komputera "jakoś tam" zainstalowali system na karcie microSD włożonej do swojej Maliny, a potem skopiowali całą jej zawartość do pliku, który udostępnili potem w internecie. Naszym zadaniem jest wykonanie odwrotnej procedury. Musimy pobrać obraz dysku z internetu (czyli po prostu ściągnąć pojedynczy plik), a potem zapisać ten plik na swojej karcie microSD. Przy czym trzeba zwrócić uwagę, że zwykłe zapisanie pliku -- tak jak kopiuje się na przykład zdjęcia -- nie wystarczy. Dlaczego? Nie zagłębiając się w szczegóły chodzi o to, że jeden z fragmentów systemu operacyjnego musi się znaleźć w specjalnej części dysku, żeby komputer potrafił go uruchomić. Z tego powodu procedura wgrywania ściągniętego obrazu systemu na kartę SD jest nieco inna, ale nadal zupełnie prosta.

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 JESSIE 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. Możemy z niej zrezygnować, 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, który ma 4GB. Takie spakowane pliki często nazywa się archiwum.

Nagrywanie w systemie Ubuntu

Rozpakowanie archiwum

Przeglądarka proponuje użycie Menadżera Archiwów do otwarcia pliku. Zgadzamy się.

Po kliknięciu przycisku Download przeglądarka odkryje, że pobieranym plikiem jest archiwum ZIP, i zaproponuje użycie do jego otwarcia Menadżera Archiwów na co się zgadzamy i czekamy aż plik zostanie pobrany. Nie będzie też problemu jeśli po prostu zapiszemy plik na dysk. Podobnie jak przeglądarka internetowa zachowuje się zwykła przeglądarka plików. Kiedy wskażemy pobrane archiwum ZIP ona także zaproponuje otwarcie Menadżera Archiwów. 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ć.



Archiwum otwarte w Menadżerze Archiwów

Po otwarciu pliku w Menadżerze Archiwów w środku widzimy "surowy obraz dysku" 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.



Wyszukanie karty SD

W następnym punkcie będziemy chcieli wykonać przepisanie obrazu systemu z pobranego pliku na kartę SD. Jednak żeby to wykonać musimy dowiedzieć się jak system Ubuntu widzi kartę i dokąd skierować dane obrazu. Wiemy już, że zwykłe zapisanie pliku obrazu w folderze karty nie zadziała.

Po włożeniu karty SD do komputera system Ubuntu 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. 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. Dla wygody Ubuntu wykonuje je równocześnie, ale tak naprawdę karta może być włożona, a nadal zamontowana lub nie. Montowanie po prostu oznacza, że Ubuntu zrozumiało jaka jest struktura danych i może zacząć zapisywać czy kasować pliki.

Żeby wykonać kopiownie systemu posłużymy się poleceniem dd w terminalu. Wykonuje ono bardzo niskopoziome przepisanie danych z jednego miejsca w drugie. Skąd wziąć dane już wiemy -- zwiera je plik, który wypakowaliśmy 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:

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 piewszej 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. Końcówki p1/p2 możemy zignorować 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 1 i 2.) Ż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

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ę

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:

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:~$ dd bs=4M if=nazwa_pliku_z_obrazem_raspbian of=nazwa_urzadzenia_karty_sd

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:~$ dd bs=4M if=2016-05-27-raspbian-jessie.img of=/dev/mmcblk0


Po zakończeniu nagrywania (pojawi się znouw prompt systemu w terminalu) można dodatkowo wpisac 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 włożyć ponownie. System powinien wyświetlić dwie partycje dysku systemowego RASPBIANA, co dowodzi, że karta jest gotowa do użycia w Malinie.

W systemie Windows

Kto wie niech napisze.