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).
Spis treści w artykule
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ń:
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.:
- -t fvat (dla FAT32, chyba obecnie najczęściej spotykany system plików na kartach pamięci i PenDrive)
- -t ntfs (dla NTFS, tryb „tylko do odczytu”, przeczytaj więcej tutaj)
- -t ntfs-3g (dla NTFS, korzystamy z programu ntfs-3g, przeczytaj więcej tutaj)
- -t ext4 (dla Ext4, system plików używany m.in. przez Pi dla głównej partycji)
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
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
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
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.:
- auto – system sam postara się rozpoznać system plików
- fvat – dla FAT32, chyba obecnie najczęściej spotykany system plików na kartach pamięci i PenDrive
- ntfs – dla NTFS, tryb „tylko do odczytu”, przeczytaj więcej tutaj
- ntfs-3g – dla NTFS, korzystamy z programu ntfs-3g, przeczytaj więcej tutaj
- ext4 – dla Ext4, system plików używany m.in. przez Pi dla głównej partycji
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
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
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
Problem można rozwiązać za pomocą opcji „Wait for Network at Boot” jaka pojawiła się w aplikacji raspi-config:
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
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01
A ja trochę inną metodę mam na montowanie wybranego urządzenia. A wszystko przez to, że metoda z /etc/fstab „trochę zawiodła” mnie. Po prostu po zdefiniowaniu wpisu w tym pliku system nie podnosił się, gdy wybrane urządzenie nie było wpięte w port USB. (Dokładnie to coś mieli i zatrzymuje się w pewnym momencie. I pewnie stosowne komunikaty wyświetlają się, ale że korzystam z VNC, to nie bardzo mam jak sprawdzić co się dzieje – a na razie nie mam jak podpiąć monitora/telewizora aby sprawdzić co jest grane. W każdym razie zanim ruszy VNC niewiele „widzę” :-) )
A moja metoda na obejście tego problemu to plik .rules w /etc/udev/rules.d/
A wygląda to tak:
ACTION=="add", KERNEL=="sd[a-z][0-9]", ENV{ID_FS_UUID}=="12345678-9abc-def0-1234-56789abcdef0" RUN+="/bin/mount -t auto -o rw,noauto -U 12345678-9abc-def0-1234-56789abcdef0 /HDD"
ACTION=="remove", KERNEL=="sd[a-z][0-9]", ENV{ID_FS_UUID}=="12345678-9abc-def0-1234-56789abcdef0" RUN+="/bin/umount /HDD"
Może niezbyt eleganckie, ale działa!
Prosiłbym o sugestie i komentarz do mojego rozwiązania, czy da się to jakoś ładniej ubrać albo dopracować?
Ja czasami (np. zasoby sieciowe pod miniDLNA) montuje z wykorzystaniem pliku etc/rc.local
Wystarczy przed „exit 0” dodać odpowiednią linijkę, np.:
Ps. Zaktualizowałem o ten sposób wpis…
Mam połączenie PC z neostradą za pomocą modemu SAGEM FAST 800 , 32bitowy (Windows XP).
Jak mogę wykorzystać SAGEM do połącenia internetowego?
Z tego co kojarzę to ten modem nie ma wyjścia rj45 (LAN), a tylko USB – więc teoretycznie (bo nie wiem jak ze sterownikami dla tego modemu do Pi) pewnie można by go podpiąć bezpośrednio do Pi – tylko wtedy tracisz dostęp do internetu z innych urządzeń… Chyba, że udostępnisz im (bez dodatkowego urządzenia – np. hub – konkretnie jednemu) za pomocą kabla sieciowego internet z Pi. Na pewno da radę (testowane), choć jeśli nie musisz – lepiej skorzystać z innego rozwiązania, bo pomijając kwestie ew. wydajności – to w przypadku Pi LAN też jest „na USB” i takie połączenie (modem USB + transfer po LAN) może mocno rozgrzewać Malinkę…
Można też – jeśli masz gniazdo sieciowe w komputerze – połączyć komputer z Pi za pomocą kabla sieciowego (crossover) i na komputerze udostępnić internet dla Pi… Minus taki, że internet na Pi masz tylko gdy działa PC.
Dlatego chyba najlepszym wyjściem – choć wymagającym zainwestowania dodatkowych środków (ok 90-150+ zł) – wydaje się zakup własnego routera z modemem ADSL. Zazwyczaj do takiego routera możesz podłączyć 4 urządzenia/komputery po kablu, a jak kupisz w wersji z WiFi – to masz jeszcze łącze bezprzewodowe (np. dla telefonu, laptopa itp.)
Ew. możesz skontaktować się z Orange (TP) czy nie mogą Ci wymienić tego modemu na jakiegoś LiveBox’a…
Oczywiście chodzi mi o połączenie RASPBERRY Pi z internetem
Witaj, ja mam troszkę inny problem,
używam Xbiana może to tego wina nie wiem, zamontowałem dysk usb, wszystko jest cacy oprócz tego, że przy kopiowaniu czegokolwiek na usb, ubywa mi miejsca ale z karty sd…, żeby bylo śmieszniej to za chiny ludowe nie mogę znaleć tych plików na karcie sd bo są na dysku usb na który je skopiowałem!!! WTF, jeśli coś skasuje z USB to miejce sie robi ale na karcie SD, na usb mam format plików FAT32, df -h pokazuje mi zamontowany dysk jako media/xxxxx-xxxxx, naprawdę nie ogarniam tego…
A Xbian przypadkiem nie ma w standardzie automatycznego montowania dysków USB? Może stąd ten problem – jakieś podwójne montowanie (automatyczne + ręczne).
A może to jakieś „buforowanie”?
Jest dokladnie jak piszesz w xbianie za automontowanie dyskow odpowiedzialny jest mountusb, standardowo po komendzie df -h widze zamontowany dysk usb NTFS albo FAT32(bez róznicy)jako media/XXXX-XXXX ale w fstab nie ma wpisu o dysku USB, jak dodam wpis do fstab to przy df -h już nie pokazuje zamontowanego dysku, ale w mc czy przez sambe moge na niego wejść bez problemu. Ale jakby nie bylo przy próbie skopiowania czegokolwiek na usb ilośc wolnego miejsca zmniejsza się z karty SD, plik istnieje na dysku USB na karcie SD go nie ma, oczywiście jak ilość wolnego miejsca będzie za mała na SD to nic się nie da nagrać(NA USB) bo pisze że za mało miejsca. Ja po prostu tego nie kumam.
Może to jakiś błąd w systemie? Gdzieś na ich forum czy jakiejś ich bugzilli nie ma nic na ten temat?
Sprawdź czy przy montowaniu za pomocą „/etc/fstab” (po „UUID”) będzie taki sam problem…
Mało prawdopodobne – ale dla pewności może warto sprawdzić czy nie pomoże wyłączenie swap’a (sudo swapoff -a)
Sprawa się wyjaśniła, zbugowana wersja, wyszła nowa i wszystko jest jak powinno. Swoją drogą pierwszy raz w życiu miałem z tego typu bugiem do czynienia i jestem ciekaw dlaczego tak było. Dodałem wpis po UUID w fstabie i byl taki sam problem + nie widać było wogole tego dysku przy komendzie df -h, fdisk -l pokazywał, że jest w /media/XXXX-XXXX też był i dało sie na niego kopiować,kasować etc. W każdym razie dzięki za pomoc i za artykuły wiele się z nich nauczyłem a jestem noga w Linuksie, więc naprawdę mi pomogły.
Dlatego własnie pytałem, czy to nie jakiś ich błąd… Bo problem był… hm… nietypowy… Jakby go podzielić na 2 niezależne – to może dałoby się jakoś wyjaśnić… ;-)
Co do artykułów – jest już wstępnie przygotowana całkiem spora liczba kolejnych nt Raspberry Pi, ale czekają „pół surowe” na ostateczne zredagowanie i opublikowanie (obrazki, „ładne zdania” itp.) co zajmuje chyba najwięcej czasu… Mam nadzieję, że uda mi się „lada chwila” znaleźć czas (i/lub zmobilizować się) by przynajmniej 1-2 tygodniowo publikować…
[Komentarz zdublowany]
Stworzyłem katalog , nie mogę zamontować w nim napędu.
sudo fdisk -l
Disk /dev/sdc: 74,6 GiB, 80059342336 bytes, 156365903 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xfed8145e
Device Boot Start End Sectors Size Id Type
/dev/sdc1 2048 152616959 152614912 72,8G 83 Linux
$ sudo mount -t auto /dev/sdc1 /media/sdc1
mount: wrong fs type, bad option, bad superblock on /dev/sdc1,
missing codepage or helper program, or other error
Sprawdź czy dysk nie ma jakichś błędów, ew – jeśli jest pusty – sformatuj go. Jeśli to nie pomoże, to zamiast „auto” spróbuj wskazać konkretny typ plików…
używam dysku zewnętrznego od co najmniej dwóch miesięcy , nie miałem z nim problemów aż pewnego dnia pomimo że jest widoczny w systemie nie mogę go otworzyć , zamontować , nie miał błędów,, nie jest pusty , wskazać konkretny typ plików… otwierałem i uruchamiałem go jako root → system plików→ media→grzegorz→ tu mój dysk
No jak tak się zachowuje, to musi mieć jakiś błąd… No chyba, ze coś w systemie się… Próbowałaś do innego komputera, czy nawet choćby inny port USB? Jak nie masz innego komputera, to może jakiś Linux Live i pod nim test?
Nie sterty pod innym portem USB nie ma zmian.Nie dysponuję innym sprzętem , może później tym bardziej Live.
Na razie dziękuje za pomoc.
Niby prosta rzecz montowanie – ale 10 artykułów przewinąłem aż zadziałało. Dobrze i rzeczowy opisany temat.
Poradnik pisany na bazie doświadczeń, a nie (tylko) teorii. Ciesze się, że pomógł :-)
Witam, mam zamontowany dysk w katalogu media, chciałbym na nim zapisywać pliki pobrane przez transmission ale nie mam do tego uprawnień. Jak należy je zmienić?? I jak dodać katalogi z tego dysku do innej grupy niż pi.
Masz w artykule informacje o „chmod” czy „umask”, i prawdopodobnie to powinno wystarczyć.
No właśnie nie wystarcza bo dokładnie tak montuje dyski.
No to albo musisz nadać uprawnienia do danego zasobu dla danego użytkownika, albo wspomóc się „sudo”.