Kategorie
Sprzęt

Dodanie dysku USB do routera z OpenWRT

Dzisiaj nieco nietypowe rozwiązanie, otóż mój dysk sieciowy (NAS) ostatnio odmówił posłuszeństwa, a żeby zrobić z nim porządek, potrzebuję w nim co nieco pogrzebać, w związku, w między czasie z tym chciałbym wykorzystać port USB 3.0 wbudowany w mój router WRT3200ACM z oprogramowaniem OpenWRT w celu udostępnienia w sieci dysku USB.

Do tego celu używam 2TB dysk w obudowie WD My Book Essential (3.5” z zewnętrznym zasilaniem) ze złączem USB 3.0. Dysk sformatowałem w exFat (z poziomu komputera nim zacząłem), ze względu na kompatybilność zarówno w Windows, jak i Mac. Gdy będę chciał go odłączyć z sieci, zawsze będę miał dostęp do danych, podłączając kabel USB bezpośrednio do komputera.

A więc zaczynamy…

Większość kroków odbywać się z poziomu terminala.

W tym wpisie skupię się na tym, jak dodać dysk do routera. W osobnym wpisie (link na końcu) opiszę jak udostępnić ten dysk w sieci lokalnej.

Instalacja obsługi dysku USB

W pierwszej kolejności aktualizujemy pakiety.

opkg update

Następnie dodajemy wsparcie dla urządzeń USB.

opkg install kmod-usb-storage kmod-usb-storage-uas

W moim przypadku muszę dodać również obsługę exFat. W zależności, jaki system plików wybierzecie, musicie zainstalować go zgodnie z tym poradnikiem.

opkg install kmod-fs-exfat libblkid

Dodatkowo potrzebne nam będą narzędzia do sprawdzenia, czy nasze urządzenie USB działa prawidłowo. Instalujemy je za pomocą poniższej komendy:

opkg install usbutils

Teraz możemy podłączyć nasz dysk.

Jeżeli wszystko wykonaliśmy prawidłowo, wykonując poniższą komendę, zobaczymy nasz dysk na liście urządzeń podłączonych do USB.

lsusb -t

Powinniśmy zobaczyć coś takiego:

[email protected]:~# lsusb -t
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    |__ Port 1: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 5000M

Sprawdzenie widoczności dysku

Sprawdzamy, czy nasz dysk i partycje są widoczne w systemie.

ls -l /dev/sd*

Powinniśmy zobaczyć coś takiego:

[email protected]:~# ls -l /dev/sd*
brw-------    1 root     root        8,   0 May  1 21:20 /dev/sda
brw-------    1 root     root        8,   1 May  1 21:20 /dev/sda1

W następnym kroku zainstalujemy dodatkowe narzędzie, które będziemy używali do montowania partycji.

opkg install block-mount

Wykonujemy komendę:

block info | grep "/dev/sd"

Powinniśmy zobaczyć coś takiego:

[email protected]:~# block info | grep "/dev/sd"
/dev/sda1: UUID="5EAC-6F27" LABEL="2TB" TYPE="exfat"

Montowanie dysku

Przygotowujemy plik konfiguracyjny:

block detect | uci import fstab

Włączenie automatycznego montowania na podstawie wygenerowanego pliku konfiguracyjnego:

uci set [email protected][-1].enabled='1'
uci commit fstab

Montujemy nasz dysk:

block mount

(Opcjonalne) Jeżeli chcemy się upewnić, czy automatyczne montowanie dysku działa przy starcie systemu, wykonujemy:

reboot

Sprawdzamy, czy nasz dysk jest widoczny za pomocą:

df

Powinniśmy zobaczyć coś takiego:

[email protected]:/mnt# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1            1953419264     10368 1953408896   0% /mnt/sda1

Oraz:

uci show fstab

Powinniśmy zobaczyć coś takiego:

[email protected]:~# uci show fstab
[email protected][0]=mount
[email protected][0].target='/mnt/sda1'
[email protected][0].uuid='5EAC-6F27'
[email protected][0].enabled='1'

Jeżeli mamy jakieś problemy, upewniamy się, że w polu @mount[0].enabled widnieje wartość 1.

Jeżeli mamy jakieś dane na dysku, możemy je zobaczyć:

ls -l /mnt/sda1

Upewniamy się, że wszystko działa prawidłowo wykonując komendę:

block info

Powinniśmy zobaczyć coś takiego:

[email protected]:~# block info
/dev/sda1: UUID="5EAC-6F27" LABEL="2TB" MOUNT="/mnt/sda1" TYPE="exfat"

Całość kończymy komendą:

service fstab boot

Uśpienie dysku (Opcjonalne)

Moja kieszeń WD posiada wbudowane oprogramowanie, które po czasie wstrzymuje silnik dysku / usypia go. Dysk nadal jest dostępny, ale gdy jest nieużywany, nie będzie się niepotrzebnie kręcił. W momencie, gdy dysk jest potrzebny, wówczas rozkręci się na nowo.

Jeżeli nie mamy możliwości programowej, wówczas możemy wesprzeć się dodatkowym rozwiązaniem, pozwoli nam zaprogramować bezpośrednio dysk w celu wykonania tego samego.

W tym celu instalujemy hdparm:

opkg update
opkg install hdparm

Zakładając (z powyższych kroków), że nasz dysk jest dostępny jako /dev/sda1, poniższą komendą ustawiamy, po jakim czasie dysk przejdzie w stan wstrzymania. Czas ten ustawiamy jako wielokrotność 5-ciu sekund. Minuta to wartość 12, jeżeli chcemy ustawić 15 minut, potrzebujemy wartość 180.

hdparm -S 180 /dev/sda1

Powyższa opcja jest opcją sprzętową. Wprowadza on zmiany w ustawieniach dysku, dzięki czemu zostają one zachowane, nawet gdy podłączymy nasz dysk do innego urządzenia / komputera. Niestety, nie zawsze to działa. Niektóre obudowy odmawiają przyjęcia powyższe komendy, zwracając błąd. W tym przypadku istnieje dodatkowe programowe rozwiązanie o nazwie hd-idle, która może być zintegrowane z naszym panelem administracyjnym routera z poziomu przeglądarki internetowej.

Pakiet hd-idle, po określonym czasie (zdefiniowanym w panelu administracyjnym) wysyła komendę spindown-now w celu wyłączenia obrotów dysku i przejścia w stan wstrzymania.

Instalujemy go za pomocą komendy:

opkg install luci-app-hd-idle

Po czym przechodzimy do naszego panelu sterowania, Services > HDD idle, gdzie ustawiamy, czy ta opcja programowa ma być włączona, dla jakiego dysku oraz czas.

Zalecam najpierw sprawdzić, czy sprzętowa opcja działa (czy to wbudowana, czy zaprogramowana), gdyż nie wymaga ona żadnych dodatkowych pakietów, które muszą być włączone na naszym routerze a dopiero wybrać rozwiązanie programowe.


I to by było na tyle, jeżeli chodzi o dodanie dysku, możemy przejść dalej do udostępnienia naszego dysku w sieci lokalnej. Ten krok opisałem jednak w osobnym wpisie: Udostępnienie dysku USB w sieci z routera OpenWRT


Credits:
https://openwrt.org/docs/guide-user/storage/usb-drives