Crmgo Blog

OpenWRT na flash disk

OpenWRT na flash disk

Aktualizujte seznam balíčků a proveďte instalaci potřebných modulů pro podporu USB úložišť a souborového systému ext4: Nemějte na zřeteli chybovou zprávu, která se objeví během instalace balíčku kmod-usb-storage (Barrier Breaker 14.07). Ve skutečnosti se modul úspěšně nainstaluje.…

OpenWRT na flash disk

Aktualizujeme seznam balíčků a nainstalujeme potřebné moduly pro podporu USB úložišť a souborového systému 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

Nevěnujte pozornost chybovému hlášení, které se objeví během instalace balíčku kmod-usb-storage (Barrier Breaker 14.07). Modul se ve skutečnosti úspěšně nainstaloval.

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

Restartujeme router:

root@OpenWrt:~# reboot

Připojíme USB úložiště a sledujeme, jak na to systém zareaguje (měl by ho detekovat). V mém případě příkaz dmesg vypsal následující:

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
...

Pokud systém vidí úložiště a všechny jeho oddíly, upravíme soubor /etc/config/fstab a zadáme body připojení.

Místo názvů oddílů „sdxx“ v souboru fstab použijte identifikátory „uuid“, protože jsou jedinečné. Pokud připojíte další (nebo dokonce více) úložišť, není zaručeno, že router přiřadí USB úložišti správný název. Proto místo názvu zařízení „device“ uveďte jedinečný identifikátor oddílu „uuid“.

Identifikátory oddílů zjistíte spuštěním příkazu block detect, poté proveďte příslušné změny ve fstab. Pokud instalujete systém od začátku, je lepší vygenerovat fstab automaticky:

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

Zkontrolujeme výsledek:

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

Upravíme soubor /etc/config/fstab. Parametry oddílu sda3, který byl vytvořen pro NAS, zatím zakomentujeme nebo odstraníme (nastavení NAS provedeme později):

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'

Pokud jsou body připojení zřejmé, podrobněji se zastavíme u parametrů sekce global:

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 в случае "горячего" подключения устройства

Vytvoříme dočasný adresář /mnt/sda2 (pro přesun systému, který je umístěn ve vnitřní paměti routeru), a připojíme do něj oddíl USB úložiště.

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

Zkopírujeme oddíl /overlay ze vnitřní paměti routeru na oddíl umístěný na USB úložišti. Kopírování se provede s zachováním všech oprávnění.

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

Nyní můžeme oddíl odpojit a smazat dočasný adresář:

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

Restartujeme router:

root@OpenWrt:~# reboot

Pokud je vše provedeno správně, router by se měl spustit z USB úložiště. Pokud se router nespustí: odpojte USB úložiště, spusťte systém se vnitřním /overlay, připojte USB úložiště, připojte oddíly a zkontrolujte fstab (někdy i několikrát … pomáhá to :)) Otestováno na vlastní kůži!

Poznámka: příspěvek mohl vzniknout s pomocí AI a lidskou redakcí. Odpovědný: Dmytro Lomaka, Kaltenkirchen.