Przywrócenie montownia nośników w sposób zgodny z OpenWrt
Ostatnia zmiana: 2019-11-09 21:10

Gargoyle ma własny mechanizm montowania dysków (zawarty w pakiecie plugin-gargoyle-usb-storage), który automatycznie montuje znalezione nośniki w katalogu /tmp/usb_mount/. Nie w każdym przypadku odpowiada to użytkownikom, którzy chcieli by mieć pełniejszą kontrolę nad miejscem montowania czy innymi parametrami tego procesu. Można bezproblemowo wrócić do sposobu montowania nośników który jest standardem w OpenWrt - z wykorzystaniem pakietu block-mount i pliku /etc/config/fstab. Poniższe dane są prawdziwe dla wydań Gargoyle o numerach 1.5.7 i późniejszych (bazujących na OpenWrt Attitude Adjustment).
Mamy do wyboru albo całkowitą rezygnację z mechanizmów stosowanych w Gargoyle i przywrócenie standardowego sposobu montowania nośników (omawia tu punkt pierwszy), mamy możliwość także zrobienia extroota (punt drugi) lub integracji extroota z istniejącym rozwiązaniem stosowanym w Gargoyle (punkt trzeci). Należy wybrać jeden z tych sposobów.

Przywrócenie standardowego sposobu montowania

Podstawowym działaniem jest odinstalowanie pakietu plugin-gargoyle-usb-storage. Stracimy w ten sposób możliwość konfigurowania udostępniania zasobów przez sambę, ftp i nfs z poziomu GUI, ale jeżeli zostawimy go to będzie niepotrzebnie ponownie rywalizował w montowaniu partycji w systemie, co czasami może przynieść niepożądane efekty.


    # opkg remove plugin-gargoyle-usb-storage

Teoretycznie to wszystko, ale zostają jeszcze wpisy w menu Gargoyle, które nie są usuwane automatycznie. Należy je więc usunąć poleceniami


    # uci del gargoyle.display.system_usb_storage
    # uci del gargoyle.scripts.system_usb_storage
    # uci del gargoyle.system.usb_storage
    # uci commit gargoyle


Instalujemy pakiet block-mount i koniecznie włączamy montowanie na starcie systemu


    # opkg update
    # opkg install block-mount
    # /etc/init.d/fstab enable
    # uci set fstab.automount.anon_mount=1
    # uci commit

Konfiguracja opisana jest w innym dokumencie. Należy pamiętać o zmodyfikowaniu pliku konfiguracyjnego /etc/config/fstab (w szczególności - pierwszej sekcji gdzie zdefiniowane jest urządzenie /dev/sda1!)

extroot

Wymaga tak samo instalacji pakietu block-mount. Konfiguracja standardowo w pliku /etc/config/fstab, opisana jest w tym dokumencie. Jeżeli mamy pendrive z systemem plików ext4 to sekcja konfiguracyjna może wyglądać następująco:


    config mount
        option target /overlay
        option device /dev/sda1
        option fstype ext4
        option options rw,noatime
        option enabled 1

Należy pamiętać, że po włączeniu extroota system jest bez konfiguracji, należy ustawić wszystko od nowa (lub przenieść wcześniej istniejąca z flash na pendrive)

UWAGA: Pakiety samba36-server, vsftpd i nfs-kernel-server w Gargoyle są zmodyfikowane do współpracy z pakietem plugin-gargoyle-usb-storage i konfiguruje się je przez uci. Aby odzyskać normalną funkcjonalność pakietów, należy je po prostu ponownie zainstalować z repozytorium OpenWrt (nie Gargoyle!).

Integracja extroota z pakietem plugin-gargoyle-usb-storage (konfiguracja ręczna)

Najczęściej jednak oczekiwane jest zrobienie extroota wraz zachowaniem możliwości konfigurowania usług przy pomocy gui. Możliwe jest to do wykonania, mając pod uwagę kilka ograniczeń:

  • partycja systemowa (na której jest system plików - extroot) nie będzie widoczna dla pluginu gargoyle usb-storage, czyli tym samym nie da się udostępnić z niej danych. Dane muszą być na innym dysku lub innej partycji
  • montowanie dodatkowych dysków lub partycji wykonywane jest przez plugin-gargoyle-usb-storage. fstab będzie służył tylko i wyłącznie do wykonania extroota
  • usługi które zastaną zainstalowane ręcznie na extroocie (np. minidlna) i odwołują się partycji innych dysków (nie extroota) muszą uruchamiać się z opóźnieniem aby widziały dysk. Dyski montowane są przez procesy pluginu mogą być dostępne dopiero po kilku sekundach po starcie systemu, więc wszystkie usługi przed korzystaniem z dysku muszą poczekać na jego dostępność.
W przeciwieństwie do przedstawionego wyżej metody na "normalnie" przywrócenie montowania nośników, tu pakiet block-mount wykorzystywany jest tylko do zrobienia extroota. Należy wykonać następujące czynności:

  • zainstalować pakiet block-mount (jeżeli nie ma go jeszcze w systemie)


    # opkg update
    # opkg install block-mount


  • wyłączyć automatyczne montowania nośników przez hotplug w block-mount


    # uci set fstab.automount.anon_mount=0
    # uci commit fstab

Dzięki tej opcji fstab nie będzie automatycznie montował innych partycji i nie będzie konkurował z pluginem gargoyle usb-storage.

  • zrobić extroota - przytoczony dokument opisuje ten proces. Jeżeli mamy pendrive z systemem plików ext4 to sprowadza się to poleceń:


    # uci set fstab.@mount[0].target=/overlay
    # uci set fstab.@mount[0].uuid=<uuid_partycji>
    # uci set fstab.@mount[0].fstype=ext4
    # uci set fstab.@mount[0].options=rw,noatime
    # uci set fstab.@mount[0].enabled=1
    # uci commit fstab

Należy bezwzględnie pamiętać o stosowaniu UUID zamiast nazw dysków jeżeli mamy zamiar kiedykolwiek używać więcej niż jednego nośnika. Identyfikator UUID można uzyskać wykonując polecenie blkid.

  • uruchomić fstaba


    # /etc/init.d/fstab enable

Po restarcie routera zostanie zamontowana partycja jako główny system plików (extroot) i na tym skończy się działanie pakietu block-mount. Później plugin gargoyle usb-storage przejmie kontrolę nad pozostałymi niezamontowanymi partycjami i będzie je obsługiwał w sposób specyficzny dla Gargoyle - w szczególności będzie umożliwiał graficzną konfigurację usług na tych pozostałych nośnikach.

Tworzenie extroota z poziomu interfejsu użytkownika

Niezależnie od możliwości "ręcznego" utworzenia extroota, należy pamiętać że od wersji 1.5.9.10 możliwe jest wykonanie tego także z poziomu GUI podczas formatowania nośnika.

image

Formatowanie pozwala na utworzenie świeżego systemu plików na całym nośniku oraz określenie wielkości partycji wymiany (swap) - maksymalnie zostaną utworzone więc tylko dwie partycje. Jeżeli zostanie zaznaczone odpowiednie pole, na tym nośniku zostanie wykonany automatycznie extroot oraz zostanie przeniesiona cała istniejąca konfiguracja systemu na nowy nośnik. Należy pamiętać o ograniczeniach wymienionych w poprzednim punkcie.
Czy został wykonany extroot można przekonać się z zakładce "Dodatki" - pamięć wewnętrzna powinna pokazywać pojemność użytego nośnika oraz na zakładce "Nośniki USB" - powinna pojawić się informacja że extroot jest użyty. Z poziomu tej zakładki można też "bezpiecznie" usunąć extroota.

Podobnie jak w poprzednim przypadku, partycja systemowa (na której jest system plików - extroot) nie będzie widoczna dla pluginu gargoyle usb-storage, czyli tym samym nie da się udostępnić z niej danych z poziomu gui. Dane muszą być na innym dysku lub innej partycji.