Podstawowa konfiguracja Raspberry Pi już za nami. Teraz chyba pora dostać się do danych zewnętrznych – czy to po sieci LAN, czy tych na dyskach podpiętych do USB (PenDrive, HDD).

PenDrive, HDD USB

To od razu chciałbym dodać, że z racji tego, że Pi pobiera dość mało energii (2-3 W) i za zasilacz z powodzeniem służyć może ładowarka od telefonu (0.7-1 A), tym samym niewiele tej energii ma do oddania, i raczej robi to niechętnie…

Choć nie jest to niemożliwe zwłaszcza przy dobrym zasilaczu 1 A. Dlatego do podłączenia urządzeń USB warto zaopatrzyć się w aktywny (z zasilaczem) HUB USB, co pozwoli na bezproblemowe podłączenie wielu urządzeń.

Po podłączeniu dysku USB do Raspberry Pi wyświetlamy listę napędów/urządzeń:

raspberry-pi_konsola_dyski-usb_01

sudo fdisk -l

W tym wypadku interesujący nas napęd to:

Disk /dev/sda: 4007 MB

A konkretnie partycja, która się na nim znajduje:

/dev/sda1 W95 FAT32

Przed zamontowaniem dysku do systemu musimy stworzyć katalog, który będzie naszym „punktem montowania”. Robimy to poleceniem:

sudo mkdir /media/sda1
  • mkdir – tworzy katalog
  • /media/ – folder gdzie stworzymy nasz katalog
  • sda1 – nazwa katalogu, użyłem takiej samej jak „nazwa” partycji

Jeśli zamierzacie często podłączać różne napędy „na chwilę” warto stworzyć sobie np. katalog „tmp”, do którego będą one „tymczasowo” montowane:

sudo mkdir /media/tmp

Jeśli natomiast z napędu zamierzacie korzystać regularnie – warto „dla porządku” stworzyć katalog o konkretnej – identyfikującej zasób – nazwie.

Montowanie napędu

Gdy już mamy katalog – możemy zamontować do niego napęd – robimy to poleceniem:

sudo mount -t auto /dev/sda1 /media/sda1

Po „-t” podałem „auto”, co oznacza, że system plików na urządzeniu zostanie rozpoznany automatycznie.  przypadku problemów (lub dla pewności, np. przy pisaniu skryptów) można podać konkretny format plików, np.:

Po zamontowaniu możemy sprawdzić, czy wszystko jest OK, korzystając z komendy:

df -h

Gdy dysk już nie jest nam potrzebny warto go „odmontować” (odłączyć) przed odłączeniem za pomocą polecenia:

sudo umount /media/sda1

raspberry-pi_konsola_dyski-usb_02

W przypadku polecenia „umount” mogą się jeszcze przydać 2 parametry:

  • -f – wymuszenie odmontowania (zaleca się używanie tylko wtedy, gdy system plików, który chcemy odmontować nie jest już osiągalny)
  • -l – tzw. „lazy unmount”, czyli system niby odmontowywuje zasób, ale cały czas czeka, i pozwala dokończyć pracę programom/procesom, które z niego korzystają

Montowanie z uprawnieniami dla wszystkich

Oczywiście można nadawać plika i folderom odpowiednie uprawnienia, ale czasem może się zdarzyć, że będziemy musieli podpiąć jakiś dysk w trybie „wszyscy mogą wszystko”, i tu może się przydać mała modyfikacja standardowego polecenia:

sudo mount -t auto -o umask=0 /dev/sda1 /media/sda1

Dla pliku „fstab” (czytaj niżej) będzie to np. taki wpis:

/dev/sda1 /media/usb1 auto defaults,umask=0 0 0

Polecenie/komenda/parametr „umask” w tej formie zadziała „tylko” dla dysków z systemem plików FAT/FAT32/NTFS.

Nie zadziała dla  ext2/3/4. W tym wypadku należy skorzystać (również) np. z polecenia „chmod”, np.:

sudo chmod 777 -R /media/usb1
sudo chmod 775 -R /media/usb1

Automatyczne montowanie

Jeśli z jakieś zasobów (dyski) są podłączone do Pi „zawsze” możemy skorzystać z:

  • /etc/rc.local

Montowanie z „fstab”

Najpierw wyświetlimy zawartość pliku poleceniem:

cat /etc/fstab

raspberry-pi_etc-fstab01

Jak widać, na razie jest to tylko karta pamięci (2 partycje), by dodać nowy zasób, przechodzimy do edycji tego pliku:

sudo nano /etc/fstab

raspberry-pi_etc-fstab02

I dodajemy nową pozycję wg. schematu:

[urządzenie] [punkt montowania] [system plików] [parametry] [opcje]

Urządzenie

Listę urządzeń wyświetlimy poleceniem:

sudo fdisk -ls

Przykład:

/dev/sda1

Punkt montowania

Miejsce, gdzie chcemy zamontować urządzenie, np.:

/media/dysk1

System plików

Np.:

Parametry

Kilka wybranych:

  • defaults – chyba najczęściej stosowne
  • auto/noauto – montowanie automatyczne/ręczne
  • ro/rw – tylko do odczytu/odczyt i zapis
  • exec/noexec – pliki wykonywalne na dysku/bez obsługi plików wykonywalnych
  • nofail – przydatne, jeśli dysk czasem może być niedostępny, by nie wstrzymywać startu systemu

Parametry można łączyć, wpisując po przecinku, np.:

rw,noexec

Opcje

Na obecną chwilę uznajmy, że „0 0” jest OK :-)

Przykładowy wpis:

/dev/sda1 /media/dysk1 auto defaults 0 0

Na koniec wychodzimy z pliku, zapisując zmiany: CTRL+Q i Y.

Montowanie z „rc.local”

Jeśli z jakichś przyczyn nie chcemy lub nie możemy skorzystać z pliku „fstab” – można odpowiedni wpis dodać do pliku „rc.local”:

sudo nano /etc/rc.local

I przed „exit 0” dodajemy odpowiednią linijkę, np:

mount -t vfat /dev/sda1 /media/temp

Automatyczne montowanie z wykorzystaniem UUID

Często zdarza się tak, że chcemy, by konkretne urządzenie było montowane zawsze do tego samego katalogu. Tu z pomocą przyjdzie nam indywidualny identyfikator urządzenia (UUID), który odczytamy za pomocą komendy:

sudo blkid

raspberry-pi_etc-fstab03

Interesuje nas linijka:

/dev/sda1: LABEL="... SDC 8GB" "UUID="0000-1111" TYPE="vfat"

Gdzie „/dev/sda1” to urządzenie, którego chcemy użyć. Zapisujemy wartość UUID która (załóżmy, że tak jest) wynosi „0000-1111”.

Montowanie z UUID w fstab

Edytujemy plik „fstab”:

sudo nano /etc/fstab

I dodajemy wpis podobnie jak wyżej, tylko zamiast „dev/sda1” wpisujemy UUID:

UUID=0000-1111 /media/dysk1 auto defaults 0 0

Na koniec restart lub komenda, którą automatycznie podmontujemy wszystkie zasoby zdefiniowane w „fstab”:

sudo mount -a

raspberry-pi_etc-fstab04

Montowanie z UUID w rc.local

Edytujemy plik:

sudo nano /etc/rc.local

i przed „exit 0” dodajemy odpowiednią linijkę, np.:

mount  -t vfat -U NASZ_UUID /media/temp

Zasoby sieciowe (LAN)

Procedura (z małymi wyjątkami) wygląda tutaj bardzo podobnie co powyżej – również zaczynamy od stworzenia odpowiedniego „punktu montowania”:

sudo mkdir /media/pc01

Następnie przystępujemy do montowania:

sudo mount -t cifs -o username=patryk,password=hasło //IP_komputera/nazwa_zasobu /media/pc01
  • Między „//IP_komputera/patryk” a „/media/pc01” znajduje się spacja
  • Jeśli w nazwie zasobu występuje spacja, korzystamy z cudzysłowów, //IP_komputera/nazwa zasobu″

A dla konta „gość”:

sudo mount -t cifs -o guest //IP_komputera/nazwa_zasobu /media/pc01

Można też – jak wyżej – skorzystać z „fstab” by montować zasoby automatycznie:

//IP_komputera/nazwa_zasobu /media/pc01 cifs username=patryk,password=hasło 0 0

Komendą:

df -h

podejrzymy, czy wszystko jest OK, i nasz „dysk sieciowy” został podłączony lokalnie.

Również w tym wypadku „na koniec” możemy odmontować niepotrzebny zasób:

sudo umount /media/pc01
W nowych wersjach systemu Raspbian (Debian 8 Jessie) prawdopodobnie pojawi się problem z montowaniem dysków/zasobów sieciowych, gdyż w domyślnej konfiguracji system podczas startu nie czeka na sieć, i zaczyna przetwarzać m.in. wpisy w pliku fstab, zanim będzie dostępna sieć, a tym samym zasoby nie zostaną prawidłowo zamontowane.

Problem można rozwiązać za pomocą opcji „Wait for Network at Boot” jaka pojawiła się w aplikacji raspi-config:

raspberry-pi_raspi-config_wait-for-network-at-boot01

Wtedy nie ma potrzeby korzystania ze skryptu, jako alternatywnej metody.

Uprawnienia do zapisu dla użytkownika innego niże root

Często problemy sprawia takie zamontowanie dysku sieciowego, by również inni użytkownicy niż „root” mogli zapisywać na nim swoje dane.

W takim przypadku można skorzystać z takiego polecenia w fstab:

//IP_komputera/nazwa_zasobu /media/pc01 cifs users,rw,username=patryk,password=hasło,uid=1001,file_mode=0777,dir_mode=0777 0 0

Istotny jest tu parametr „uid” który określa użytkownika. Parametr ten odczytacie za pomocą polecenia:

sudo id nazawa_użytkownka
(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk