Иногда на роутере мало флешки, но есть USB-порт.
Задача - подключить флеху и поставить пакет на нее без переноса всего рута на флеху.
USB Stick
Устанавливаем все что нужно для подключения флехи и настраиваем монтирование:
apk update apk add kmod-usb3 kmod-usb-storage kmod-fs-ext4 block-mount mkfs.ext4 -O ^has_journal /dev/sda1 mkdir /opt
Дальше настраиваем автоматическое монтирование с помощью block-mount. Сначала поглядим:
block detect
Ну и потом сконфигурируем:
block detect > /etc/config/fstab uci set fstab.@global[0].anon_mount='0' uci set fstab.@global[0].auto_mount='1' uci set fstab.@global[0].auto_swap='1' uci set fstab.@mount[1].enabled='1' uci set fstab.@mount[1].target='/opt' uci commit fstab /etc/init.d/fstab enable /etc/init.d/fstab boot #/sbin/block mount
Установка пакета
Я буду экспериментировать на пакете xray-core, который довольно большой - примерно 30Mb в установленном виде.
Идея такова - распаковать пакет, перенести настройки пакета в рут, а основной бинарь просто оставить на флехе и в рут поместить просто ссылку на него.
После того, как флешка нормально монтируется после перезагрузки в /opt - скачиваем xray-core, распаковываем его и конфигурируем, чтобы его бинарь запускался с флехи:
apk update cd /opt/ apk fetch xray-core apk extract --allow-untrusted ./xray-core-25.8.3-r1.apk mv ./etc/config/xray /etc/config/ mv ./etc/init.d/xray /etc/init.d/ mkdir /etc/xray ln -s /opt/usr/bin/xray /usr/bin/xray uci set xray.enabled.enabled='1' /etc/init.d/xray enable /etc/init.d/xray start
Всё!
Discussion