OpenWRT. Корневая файловая система на внешнем устройстве (extroot).
При установке пакетов приходится сталкиваться с ситуацией ограниченности памяти роутера и невозможности установить необходимые для работы пакеты.
root@OpenWrt:~# opkg install golang
Installing golang (1.21.13-1) to root...
Collected errors:
* verify_pkg_installable: Only have 7120kb available on filesystem /overlay, pkg golang needs 36586
* opkg_install_cmd: Cannot install package golang.
Если у вашего роутера есть свободный USB порт ситуацию можно решить путём подключение к нему USB накопитея и переноса корневой файловой системы на этот накопитель.
Подключаем USB накопитель к порту роутера, перезагружаем роутер, подключаемся к роутеру по SSH.
ssh root@192.168.135.1 -o port=5863
Устанавливаем необходимые пакеты
root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install block-mount kmod-fs-ext4 kmod-usb-storage e2fsprogs kmod-usb-ohci kmod-usb-uhci fdisk
На тот случай если вам будет необходимо получить доступ к исходному разделу для изменения настроек extroot настраиваем его монтирование к каталог /rwm
root@OpenWrt:~# DEVICE="$(awk -e '/\s\/overlay\s/{print $1}' /etc/mtab)"
root@OpenWrt:~# uci -q delete fstab.rwm
root@OpenWrt:~# uci set fstab.rwm="mount"
root@OpenWrt:~# uci set fstab.rwm.device="${DEVICE}"
root@OpenWrt:~# uci set fstab.rwm.target="/rwm"
root@OpenWrt:~# uci commit fstab
Каталог /rwm будет содержать исходный корневой раздел, который используется в качестве основного до тех пор, пока extroot не будет смонтирован.
Настраиваем extroot.
Создаём на подключенном USB накопителье /dev/sda1 раздел ext4
root@OpenWrt:~# mkfs.ext4 /dev/sda1
Конфигурируем /dev/sda1 как новый корневой радел:
root@OpenWrt:~# DEVICE="/dev/sda1"
root@OpenWrt:~# eval $(block info "${DEVICE}" | grep -o -e "UUID=\S*")
root@OpenWrt:~# uci -q delete fstab.overlay
root@OpenWrt:~# uci set fstab.overlay="mount"
root@OpenWrt:~# uci set fstab.overlay.uuid="${UUID}"
root@OpenWrt:~# uci set fstab.overlay.target="/overlay"
root@OpenWrt:~# uci commit fstab
Переносим содержимое текущего корневого раздела на раздел на подключенном USB накопителе:
root@OpenWrt:~# mount /dev/sda1 /mnt
root@OpenWrt:~# cp -a -f /overlay/. /mnt
root@OpenWrt:~# umount /mnt
Перезагружаем роутер:
root@OpenWrt:~# reboot
Контролируем произошедшие изменения.
Web-интерфейс ⇒ Система ⇒ Монтирование разделов
должен быть показан раздел на внешнем USB устройстве подмонтированный как overlay.




Web-интерфейс ⇒ Система ⇒ Менеджер пакетов
должно быть показано большее свободное пространство на overlay разделе.


Из терминала:
root@OpenWrt:~# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 3.8M 3.8M 0 100% /rom
tmpfs 59.6M 100.0K 59.5M 0% /tmp
/dev/sda1 13.4G 14.0M 12.7G 0% /overlay
overlayfs:/overlay 13.4G 14.0M 12.7G 0% /
tmpfs 512.0K 0 512.0K 0% /dev
/dev/mtdblock5 9.7M 4.3M 5.4M 44% /rwm