Маршрутизатор Beeline SmartBox TURBO+ и прошивка OpenWrt. Подключаем USB диск.
Если в маршрутизаторе с прошивкой OpenWRT есть USB порт, то возможности такого устройства можно расширить подключив внешний накопитель. Это может быть обыкновенная флешка или жесткий диск (SSD или HDD).
На таком накопителе можно:
- Создать раздел подкачки, что увеличит объем виртуальной памяти устройства;
- Разместить раздел /overlay, увеличив его размер для установки большего количества программ, чем это позволяет сделать встроенная память маршрутизатора;
- Создать сетевое хранилище данных.
Базовая поддержка USB в прошивке OpenWRT
Как правило, прошивка для устройств с USB портом уже содержит базовую поддержку USB. Но на всякий случай проверьте, что у вас установлен пакет kmod-usb-core (Модуль ядра для поддержки USB) и один из драйверов в зависимости от контроллера USB порта (kmod-usb-ohci, kmod-usb-uhci, kmod-usb2, kmod-usb3). Для маршрутизатора Beeline SmartBox TURBO+ необходимы kmod-usb-core и kmod-usb3.
Как установить необходимые или недостающие компоненты (модули, пакеты) в прошивке OpenWRT
Установить необходимые пакеты можно в веб-интерфейсе в меню System -> Software:
Предварительно нажав кнопку [Update lists].
Так же необходимые компоненты можно установить через консоль. Для этого выполните следующие команды:
Сначала для обновления списка пакетов.
opkg update
а затем для установки необходимого
opkg install ИМЯ_ПАКЕТА
Установка поддержки USB хранилища на прошивке OpenWRT
Установка минимального набора утилит в консоли выглядит так:
opkg update opkg install kmod-usb-storage kmod-fs-ext4 fdisk block-mount e2fsprogs
Где,
- kmod-usb-storage — Поддержка ядром запоминающих устройств USB;
- kmod-fs-ext4 — драйвер поддержки файловой системы EXT4;
- fdisk — утилита для работы с разделами на диске;
- block-mount — cкрипты для подключения и проверки устройств;
- e2fsprogs — набор программ для форматирования и проверки разделов.
Необходимо перезагрузить маршрутизатор, чтобы в веб-интерфейсе LuCi корректно отображалось меню System -> Mount Points.
После этого необходимо подключить USB накопитель к роутеру и проверить, что он обнаружен маршрутизатором:
ls -al /dev/sd*
В моем примере подключен диск sda с тремя разделами sda1, sda2, sda3
Посмотреть подробную информацию о разделах можно командой:
fdisk -l
Как создать новую таблицу разделов на диске
Чтобы создать новую таблицу разделов на диске (флешке) выполните следующую команду в консоли:
fdisk /dev/sda
Где sda обнаруженный USB накопитель.
Утилита fdisk просит Вас ввести команду. Последовательность команд примерно следующая.
- o — создаем новую таблицу разделов, удалив всё что было ранее на диске;
- n — создаем первый раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор смещен на 256мб — +256M Это будет раздел подкачки
- n — создаем второй раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор смещен на 1Гб — +1G Это будет раздел overlay:
- n — создаем третий раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор — по умолчанию Это раздел для данных;
- w — сохраняем изменения.
Проверяем содеянное командой:
fdisk -l
Какой размер диска выделить для раздела подкачки и overlay
Для малых объемов оперативной памяти (до 8 ГБ включительно) в Linux принято создавать раздел подкачки в два раза больше оперативной памяти. В маршрутизаторе Beeline SmartBox TURBO+ установлено 128 МБ ОЗУ, поэтому файл подкачки делаем 256 МБ. Меньших объемов может не хватать, а большие скорее замедлят работу устройства, чем принесут пользу.
Размер overlay должен поместить в себя все возможные программы OpenWRT, 1 ГБ в обычных условиях должно быть достаточно.
Форматирование разделов в OpenWRT
Отформатируем созданные ранее разделы:
Сначала раздел подкачки
mkswap /dev/sda1
Затем overlay
mkfs.ext4 /dev/sda2
И раздел для данных
mkfs.ext4 /dev/sda3
Форматирование разделов большого размера может занять продолжительное время.
Какой тип файловой системы выбрать для диска
Файловая система EXT4 является «родной» для Linux, поэтому постарайтесь использовать именно ее. Как правило в роутерах с прошивкой OpenWRT запись на разделы NTFS (файловая система Windows) идет значительно медленнее чем на разделы с EXT4.
Если выбирать между EXT2, EXT3 и EXT4, то следует знать, что EXT2 самая быстрая, но не журналируемая файловая система и внезапное отключение диска при пропадании питания грозит потерей данных.
Выбор между EXT3 и EXT4 на роутере не столь очевиден, но Ext4 имеет преимущества по уменьшению фрагментации файлов, увеличению срока службы флэш-памяти и хранению больших файлов.
Монтирование разделов в OpenWRT
Когда разделы на диске созданы и отформатированы самое время их смонтировать на устройство.
Создадим таблицу fstab:
block detect >> /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 device '/dev/sda1' option enabled '0' config mount option target '/mnt/sda2' option enabled '0' option uuid '977820f8-d460-4a60-a6c3-6295345a33d5' config mount option target '/mnt/sda3' option enabled '0' option uuid '9ac62099-1fcd-4e79-bc1f-923ebc79c5e1'
Теперь включим автомонтирование swap-раздела на USB-диске (флешке). Для этого установим в блоке swap опции enabled значение 1.
Далее настроим монтирование остальных разделов. Второй раздел — в точку монтирования /overlay, для расширения памяти устройства для установки пакетов и прочего. Третий раздел — в точку монтирования /mnt/disk (вместо disk может быть что угодно, называйте как хотите), для хранения ваших файлов.
Плюс я увеличил время задержки до 15 секунд, так как USB-HDD диск не успевал раскрутиться и из-за этого не монтировался /overlay.
В итоге у меня файл /etc/config/fstab стал выглядеть так:
config global option anon_swap '0' option anon_mount '0' option auto_swap '1' option auto_mount '1' option delay_root '15' option check_fs '0' config swap option device '/dev/sda1' option enabled '1' config mount option target '/overlay' option enabled '1' option uuid '977820f8-d460-4a60-a6c3-6295345a33d5' config mount option target '/mnt/disk' option enabled '1' option uuid '9ac62099-1fcd-4e79-bc1f-923ebc79c5e1'
Создадим директорию для монтирования раздела с данными:
mkdir /mnt/disk
Теперь мы перенесем содержимое текущего оверлея на наш новый оверлей на внешнем диске и перезагрузим маршрутизатор:
mkdir /mnt/sda2 mount /dev/sda2 /mnt/sda2 tar -C /overlay -cvf - . | tar -C /mnt/sda2 -xf - umount /mnt/sda2 rm -rf /mnt/sda2 reboot
Проверка
Проверим из консоли, что смонтировался SWAP командой free
:
root@OpenWrt:~# free total used free shared buff/cache available Mem: 120448 50424 44756 92 25268 32760 Swap: 262140 0 262140
В последней строке указаны общий объем раздела подкачки и его использование.
Проверим остальные два раздела с помощью команды df -h
:
root@OpenWrt:~# df -h Filesystem Size Used Available Use% Mounted on /dev/root 4.3M 4.3M 0 100% /rom tmpfs 58.8M 92.0K 58.7M 0% /tmp /dev/sda2 973.4M 20.9M 885.3M 2% /overlay overlayfs:/overlay 973.4M 20.9M 885.3M 2% / tmpfs 512.0K 0 512.0K 0% /dev /dev/sda3 195.8G 2.0M 185.8G 0% /mnt/disk
Отметим, что раздел /dev/sda2 смонтирован как /overlay и размер памяти для пакетов OpenWRT увеличился.
Все это так же можно наблюдать в веб-конфигураторе LuCi:
Точки монтирования в меню System -> Mount Points
На главной странице можно посмотреть размер виртуальной памяти раздела подкачки и доступную память /overlay
Убедиться, что для пакетов теперь достаточно места так же можно в меню System -> Software
Постскриптум
Абсолютное большинство инструкций в интернете по OpenWRT в той или иной степени являются вольным переводом и пересказом официальной документации. Эта статья может вызвать такое же впечатление.
Я при написании данной статьи так же опирался на официальную документацию и вносил правки в файлы конфигурации применительно к моему маршрутизатору Beeline SmartBox TURBO+ с прошивкой OpenWRT 23.05.0-rc2.
Благодарности
При написании статьи были использованы следующие источники: