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!
