Не секрет, что основной проблемой при пользовании OpenWRT является недостаток свободной памяти на роутере под программы, с которыми приходится работать. При превращении роутера в медиакомбайн первым шагом является подключение внешнего накопителя для системных и пользовательских файлов.
Предположим, что произодитель был щедрым китайцем и порт USB распаян на плате (в противном случае начать следует с поисков следов наличия возможности сделать это собственноручно). Первым делом необходима поддержка USB ядром. Так как мы далеко в 21 веке, контроллер непременно USB2.0 (EHCI).
opkg update opkg install kmod-usb-core kmod-scsi-core kmod-usb2
Тут следует учесть что у нас будет не принтер или другое периферийное устройство, а накопитель. Поэтому добавим поддержку USB Mass Storage.
opkg install kmod-usb-storage
Теперь научим систему монтировать наши флешки/винчестеры и подхватывать их на лету, этот пакет необходим для работы fstab. Заодно добавим поддержку той файловой системы, которой будем пользоваться на накопителе.
opkg install block-mount kmod-fs-ext4
Включаем невключившиеся автоматически модули
insmod usbcore insmod ehci-hcd
В качестве дополнительного софта можно установить пакет usbutils, который позволит работать с lsusb и добавит прочий вспомогательный функционал. Также можно доставить e2fsprogs, позволяющий размечать накопители непосредственно из OpenWRT. Еще один полезный инструмент — blkid, показывающий список доступных блочных устройств в системе.
opkg install usbutils e2fsprogs blkid
Готовим накопитель на компьютере или прямо в консоли OpenWRT (кому как больше по душе, я предпочитаю GUI-шный Gparted).
# blkid|grep sda /dev/sda1: LABEL="system" UUID="5359cf76-00e2-4b82-bf0f-c51d6aca3713" TYPE="ext4" PARTUUID="0004a716-01" /dev/sda2: LABEL="swap" TYPE="swap" PARTUUID="0004a716-02" /dev/sda3: LABEL="data" UUID="bb922040-2b0c-47e4-a108-81de197b2424" TYPE="ext4" PARTUUID="0004a716-03"
Как видно из названий, первый выделен под системные файлы, второй — раздел подкачки и третий для всего остального.
Переносим все файлы на внешний накопитель
mkdir /mnt/sda1 mount /dev/sda1 /mnt/sda1 mkdir -p /tmp/cproot mount --bind / /tmp/cproot tar -C /tmp/cproot -cvf - . | tar -C /mnt/sda1 -x umount /tmp/cproot
Подключаем раздел для swap
mkswap /dev/sda2 swapon /dev/sda2
Создаем точку монтирования (например, /data) для третьего раздела и вносим изменения в /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 label 'swap' config mount option target / option device /dev/sda1 option fstype ext4 option options rw,sync option enabled 1 option enabled_fsck 0 config mount option target /data option device /dev/sda3 option fstype ext4 option options rw,sync option enabled 1 option enabled_fsck 0
После перезагрузки расклад в системе должен быть примерно как ниже
# df -h Filesystem Size Used Available Use% Mounted on rootfs 975.9M 35.8M 872.9M 4% / /dev/root 2.3M 2.3M 0 100% /rom tmpfs 29.9M 1.8M 28.1M 6% /tmp /dev/sda1 975.9M 35.8M 872.9M 4% / tmpfs 512.0K 0 512.0K 0% /dev /dev/sda3 291.8G 184.7G 92.2G 67% /data
Ссылки: