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…
Zoptymalizowane dla OpenWrt 25.12 przy użyciu
apkzamiastopkg
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.
apk updateNastępnie dodajemy wsparcie dla urządzeń USB.
apk add kmod-usb-storage kmod-usb-storage-uasW 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.
apk add kmod-fs-exfat libblkid1Dodatkowo potrzebne nam będą narzędzia do sprawdzenia, czy nasze urządzenie USB działa prawidłowo. Instalujemy je za pomocą poniższej komendy:
apk add usbutilsTeraz 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 -tPowinniśmy zobaczyć coś takiego:
root@OpenWrt:~# 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, 5000Mlub w przypadku wspieranego protokołu UASP:
root@OpenWrt:~# 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=uas, 5000MSprawdzenie widoczności dysku
Sprawdzamy, czy nasz dysk i partycje są widoczne w systemie.
ls -l /dev/sd*Powinniśmy zobaczyć coś takiego:
root@OpenWrt:~# 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/sda1W następnym kroku zainstalujemy dodatkowe narzędzie, które będziemy używali do montowania partycji.
apk add block-mountWykonujemy komendę:
block info | grep "/dev/sd"Powinniśmy zobaczyć coś takiego:
root@OpenWrt:~# block info | grep "/dev/sd"
/dev/sda1: UUID="5EAC-6F27" LABEL="2TB" TYPE="exfat"Montowanie dysku
Przygotowujemy plik konfiguracyjny:
block detect | uci import fstabWłączenie automatycznego montowania na podstawie wygenerowanego pliku konfiguracyjnego:
uci set fstab.@mount[-1].enabled='1'
uci commit fstabMontujemy nasz dysk:
block mount(Opcjonalne) Jeżeli chcemy się upewnić, czy automatyczne montowanie dysku działa przy starcie systemu, wykonujemy:
rebootSprawdzamy, czy nasz dysk jest widoczny za pomocą:
dfPowinniśmy zobaczyć coś takiego:
root@OpenWrt:/mnt# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 195341. 10368 1953408896 0% /mnt/sda1Oraz:
uci show fstabPowinniśmy zobaczyć coś takiego:
root@OpenWrt:~# uci show fstab
fstab.@mount[0]=mount
fstab.@mount[0].target='/mnt/sda1'
fstab.@mount[0].uuid='5EAC-6F27'
fstab.@mount[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/sda1Upewniamy się, że wszystko działa prawidłowo wykonując komendę:
block infoPowinniśmy zobaczyć coś takiego:
root@OpenWrt:~# block info
/dev/sda1: UUID="5EAC-6F27" LABEL="2TB" MOUNT="/mnt/sda1" TYPE="exfat"Całość kończymy komendą:
service fstab bootUś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:
apk update
apk add hdparmZakł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/sda1Powyż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:
apk add luci-app-hd-idlePo 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
Credits1








Komentarze i Reakcje