Crmgo Blog

OpenWRT na pendrive

OpenWRT na pendrive

Zaktualizuj listę pakietów i zainstaluj niezbędne moduły obsługujące nośniki USB oraz system plików ext4: Nie zwracaj uwagi na komunikat o błędzie pojawiający się podczas instalacji pakietu kmod-usb-storage (Barrier Breaker 14.07). W rzeczywistości moduł instaluje się pomyślnie.…

OpenWRT na pendrive

Zaktualizuj listę pakietów i zainstaluj niezbędne moduły obsługujące nośniki USB oraz system plików ext4:

root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install block-mount kmod-usb-core kmod-usb2 kmod-usb-ohci kmod-usb-storage kmod-fs-ext4

Nie zwracaj uwagi na komunikat o błędzie pojawiający się podczas instalacji pakietu kmod-usb-storage (Barrier Breaker 14.07). W rzeczywistości — moduł instaluje się pomyślnie.

kmod: failed to insert /lib/modules/3.10.49/sd_mod.ko

Uruchom ponownie router:

root@OpenWrt:~# reboot

Podłącz nośnik USB i sprawdź, jak system zareaguje (powinien go wykryć). W moim przypadku polecenie dmesg wyświetliło następujące dane:

root@OpenWrt:~# dmesg
...
[   18.800000] usb-storage 1-1.4:1.0: USB Mass Storage device detected
[   18.810000] scsi0 : usb-storage 1-1.4:1.0
[   18.810000] usbcore: registered new interface driver usb-storage
[   19.810000] scsi 0:0:0:0: Direct-Access SanDisk  Cruzer Fit 1.27 PQ: 0 ANSI: 6
[   19.820000] sd 0:0:0:0: [sda] 62530624 512-byte logical blocks: (32.0 GB/29.8 GiB)
[   19.830000] sd 0:0:0:0: [sda] Write Protect is off
[   19.830000] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
[   19.830000] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[   19.850000]  sda: sda1 sda2 sda3
[   19.860000] sd 0:0:0:0: [sda] Attached SCSI removable disk
...

Jeśli system wykrył nośnik i wszystkie jego partycje — edytuj plik /etc/config/fstab, określając punkty montowania.

Zamiast nazw partycji „sdxx” w pliku fstab użyj identyfikatorów „uuid”, ponieważ są one unikalne. Jeśli podłączysz kolejny (a nawet kilka) nośników, nie ma gwarancji, że router przydzieli systemowemu nośnikowi USB odpowiednią nazwę. Dlatego zamiast nazwy partycji „device” podawaj unikalny identyfikator partycji „uuid”.

Identyfikatory partycji można uzyskać, wykonując polecenie block detect, a następnie wprowadzając odpowiednie zmiany w fstab. Jeśli instalujesz system od zera, lepiej wygenerować plik fstab automatycznie:

root@OpenWrt:~# block detect >> /etc/config/fstab

Sprawdź, co wyszło:

root@OpenWrt:~# cat /etc/config/fstab
config 'global'
    option    anon_swap    '0'
    option    anon_mount   '0'
    option    auto_swap    '1'
    option    auto_mount   '1'
    option    delay_root   '5'
    option    check_fs     '0'

config 'swap'
    option    uuid         'b91e3bff-9e15-4fd0-82e7-25d75d889ce6'
    option    enabled      '0'

config 'mount'
    option    target       '/mnt/sda2'
    option    uuid         '7ee9d192-239f-4401-b749-3fb60b4f8eaa'
    option    enabled      '0'

config 'mount'
    option    target       '/mnt/sda3'
    option    uuid         'ad0381c6-31b8-4eda-ac21-a87bbd09eef2'
    option    enabled      '0

Wprowadź zmiany do pliku /etc/config/fstab. Parametry partycji sda3, utworzonej specjalnie dla NAS, na razie zakomentuj lub usuń (konfiguracją NAS zajmiemy się później):

root@OpenWrt:~# vi /etc/config/fstab 
config 'global'
    option    anon_swap    '0'
    option    anon_mount   '1'
    option    auto_swap    '1'
    option    auto_mount   '1'
    option    delay_root   '5'
    option    check_fs     '0'
    option    from_fstab   '1'

config 'swap'
    option    uuid         'b91e3bff-9e15-4fd0-82e7-25d75d889ce6'
    option    enabled      '1'

config 'mount'
    option    target       '/overlay'
    option    uuid         '7ee9d192-239f-4401-b749-3fb60b4f8eaa'
    option    fstype       'ext4'
    option    options      'rw,sync'
    option    enabled      '1'

Jeśli parametry punktów montowania są oczywiste, chciałbym zatrzymać się przy parametrach sekcji globalnej bardziej szczegółowo:

option anon_swap  '0' # монтировать своп-раздел, даже если он не описан в fstab
option anon_mount '1' # монтировать раздел с данными, даже если он не описан в fstab
option auto_swap  '1' # автоматически монтировать своп-раздел при его обнаружении
option auto_mount '1' # автоматически монтировать раздел с данными при его обнаружении 
option delay_root '5' # задержка X секунд до попытки монтирования корневого раздела
option check_fs   '0' # проверять файловую систему при монтировании
option from_fstab '1' # читать данные fstab в случае "горячего" подключения устройства

Utwórz tymczasowy katalog /mnt/sda2 (do przeniesienia systemu, który znajduje się we wewnętrznej pamięci routera) i zamontuj w nim partycję nośnika USB.

root@OpenWrt:~# mkdir /mnt/sda2 
root@OpenWrt:~# mount /dev/sda2 /mnt/sda2

Skopiuj partycję /overlay z wewnętrznej pamięci routera na partycję znajdującą się na nośniku USB. Operacja kopiowania odbywa się z zachowaniem wszystkich uprawnień.

root@OpenWrt:~# tar -C /overlay -cf - . | tar -C /mnt/sda2 -xf -

Teraz można odmontować partycję i usunąć tymczasowy katalog:

root@OpenWrt:~# umount /mnt/sda2
root@OpenWrt:~# rm -rf /mnt/sda2

Uruchom ponownie router:

root@OpenWrt:~# reboot

Jeśli wszystko zostało wykonane poprawnie, router powinien uruchomić się z nośnika USB. Jeśli router się nie uruchamia: odłącz nośnik USB, uruchom system z wewnętrznym /overlay, podłącz nośnik USB, zamontuj partycje i sprawdź plik fstab (czasami — kilkakrotnie … to pomaga :)) Sprawdzone na własnej skórze!

Uwaga: wpis mógł powstać z pomocą AI i redakcji. Odpowiedzialny: Dmytro Lomaka, Kaltenkirchen.