NAND Foresee в OpenWrt 24.10.3 — поддержка, прошивка, UBI и «подводные камни»

NAND Foresee в OpenWrt 24.10.3 — поддержка, прошивка, UBI и «подводные камни»

Foresee — это линейка флеш-памяти от производителя Longsys, которую часто можно встретить в роутерах и IoT-железках эконом-класса. Эти чипы не громко пиарятся, зато стоят адекватно и встречаются повсюду — от компактных клиентских устройств до домашних точек доступа. С выходом OpenWrt 24.10.3 основная интрига для пользователя простая: будет ли «из коробки» нормальная поддержка, насколько надежно работать с UBI/UBIFS и что делать, если система вдруг начинает жаловаться на ECC-ошибки. Ниже — живой, практический разбор без занудного академизма, но с полезными командами и рабочими сценариями.

Сразу оговоримся: NAND — капризная штука. В отличие от eMMC или NVMe, здесь на вас смотрят «голые» блоки, таблицы плохих блоков, порой щепотка драйверной магии и обязательно корректная разметка MTD. Чипы Foresee не исключение. Если все сделать правильно, OpenWrt 24.10.3 ведет себя предсказуемо и стабильно. Если торопиться, можно поймать пару серых волос и «кирпич». Разберем всё по порядку.

Железо и идентификация: что именно у вас за Foresee

Первое, что нас интересует — это параметры конкретного NAND. У разных ревизий отличаются размер страницы, объем OOB-области, требования по коррекции ошибок и поддерживаемые режимы. Мы не гадаем, а смотрим факты в логах ядра и MTD. Это избавляет от «проб и ошибок» при прошивке и разметке.

Полезные команды диагностики в OpenWrt 24.10.3. Они покажут, как ядро увидело чип и что думает о его блоках и геометрии. Выполняем по SSH:

  • dmesg | grep -i -e nand -e mtd — быстрое знакомство с контроллером и найденным чипом.
  • cat /proc/mtd — список MTD-разделов, их размер и назначение.
  • ubinfo -a — если уже используете UBI, тут видно объем, количество блоков, wear-leveling и т.д.
  • logread -e UBI — полезно при разборе автоподключения томов и «психологии» загрузки.

Для ориентира — типовые профили, с которыми чаще всего сталкиваются пользователи. Это не «железобетонный стандарт», а удобная шпаргалка при первом знакомстве с устройством.

Типовой профиль Страница / OOB ECC (типичная сила) Комментарий
NAND 2 КБ 2048 Б / 64–128 Б BCH 4–8 бит/512 Б Встречается в бюджетных роутерах; чувствителен к износу при частых перезаписях.
NAND 4 КБ 4096 Б / 224–256 Б BCH 8–16 бит/1 КБ Более современный вариант, комфортнее для UBI, реже «сыплет» ECC.
NAND 8 КБ 8192 Б / 448–1024 Б BCH 16+ бит/1 КБ На потребительских роутерах редкость, но приятно в эксплуатации.

Еще один нюанс — таблица плохих блоков (BBT). Наличие пары «красных» блоков на новых чипах — не трагедия. Критично другое: появляются ли новые плохие блоки при активной записи. Если рост есть, имеет смысл подумать об уменьшении количества перезаписей и переносе шумных логов в RAM.

Поддержка в OpenWrt 24.10.3: UBI/UBIFS, разметка и процесс обновления

OpenWrt уже много лет «дружит» с NAND через связку MTD + UBI/UBIFS. В 24.10.3 все привычно: sysupgrade понимает NAND-платформы, UBI-тома поднимаются автоматически, а UBIFS ведет себя адекватно на чипах с разной геометрией. Главное — корректная разметка в DTS и внимание к загрузчику.

Базовый поток таков. Заводская прошивка ставится из веб-интерфейса производителя, далее — переход на OpenWrt factory-образ. После первого запуска на NAND обычно уже лежит UBI-том с корнем. Дальнейшие обновления — sysupgrade, предпочтительно с сохранением конфигов, если точно уверены в совместимости. Для «чистой» миграции используйте ключ -n, но не забывайте про бэкапы.

Где чаще всего спотыкаются. Первое — попытка залить sysupgrade-образ прямо в «сырой» MTD без UBI-слоя. Второе — несоответствие OOB-разметки ожиданиям загрузчика или драйвера. Третье — перенос старых конфигов, которые тянут с собой «кривую» fstab/mtab и создают петлю ошибок при монтировании.

Для проверки, что вы действительно работаете через UBI, а не по «сырым» разделам, используйте mount и ubinfo -a. Если видите ubi0:rootfs и ubifs в роли корневой ФС — все идет как задумано. Если же /overlay внезапно JFFS2 на «сыром» MTD — это повод навести порядок.

Практика: команды, сценарии миграции и тесты скорости

Начнем с диагностики текущего состояния. Снимите бэкап конфигов, посмотрите, как устроены разделы, и заодно оцените здоровье чипа. Так проще жить в дальнейшем и понятнее, где искать проблемы.

  • Бэкап конфигов: sysupgrade -b /tmp/backup.tar.gz и скачайте файл с роутера.
  • Состояние MTD: cat /proc/mtd, dmesg | grep -i mtd.
  • UBI-инфо: ubinfo -a, ubihealthd в логах, если присутствует.
  • Плохие блоки: dmesg | grep -i "bad" и nanddump при продвинутой диагностике.

Если хотите «обнулить» overlay и заново развернуть корень на UBI, действуем аккуратно. Схема ниже подходит для опытных пользователей и предполагает физический доступ к устройству на случай нештатной ситуации.

  1. Сделайте бэкап: sysupgrade -b /tmp/backup.tar.gz.
  2. Перейдите на чистую установку: sysupgrade -n /tmp/openwrt-24.10.3-...-sysupgrade.bin.
  3. После перезагрузки проверьте: mount, должно быть ubi0:rootfs/ubifs.
  4. Верните нужные конфиги выборочно, избегая старых fstab и всего, что трогает MTD/UBI.

Тесты скорости и «ощущений». Для быстрой оценки можно использовать dd и fio (последний — из репозитория, если доступен для вашей архитектуры). Чуда не ждите — NAND не про мегабайты в секунду, а про предсказуемость и надежность.

  • dd if=/dev/zero of=/overlay/test.bin bs=256k count=128 conv=fsync — грубая запись ~32 МБ.
  • fio --name=randrw --filename=/overlay/fio.bin --size=32M --rw=randrw --bs=4k --iodepth=1 --direct=1 --numjobs=1 --runtime=30 --time_based — смешанный профиль «как под реальную жизнь».

Компрессия на UBIFS. По умолчанию используются LZO/Zlib. Если у вас много мелких файлов конфигов, эффект будет заметный: скорость чтения чуть выше, запись — мягче по износу. Для «шумных» путей (логи, кэш пакетов opkg) имеет смысл перенести их в RAM через tmpfs, чтобы не «жечь» флешку зря.

Типичные проблемы: ECC-ошибки, «сыпучие» блоки и загрузчик

Признаки беды легко узнаются по логам. «unrecoverable ECC error» и «UBI: CRC error» — это звоночки. Не каждый из них катастрофический, но игнорировать не стоит. Если они возникают регулярно на одних и тех же LEB/PEB, готовьтесь к «переселению» томов и ревизии разметки.

Что можно сделать без фанатизма. Во-первых, освободить место и дать UBI маневр для wear-leveling. Во-вторых, перевести лог-директории в RAM. В-третьих, при необходимости выполнить ubiformat проблемного MTD и заново развернуть тома. На ряде устройств бывает полезно обновить загрузчик, если старый использует экзотическую OOB-разметку и конфликтует с ядром.

Где грань между «починить» и «менять железо». Если новые bad-blocks появляются стабильно, а ECC-ошибки сыпятся даже при чтении свежезаписанных данных — это, скорее всего, деградация чипа. Для домашних роутеров эконом-класса это не редкость. Радикальная мера — переход на extroot (USB) или замена устройства.

И еще маленькая хитрость. При ручной работе с «сырыми» разделами используйте пары nanddump/nandwrite с корректными ключами под ваш OOB, а перед экспериментами — всегда сохраняйте дампы загрузчика и ENV. Ошибка на 64 КБ — и «кирпич» гарантирован, а ресусцитация через UART — занятие на вечер.

Срок службы и гигиена записи: как продлить жизнь Foresee на OpenWrt

В NAND бесполезно «верить в чудо». Здесь работают простые правила. Меньше записей — дольше жизнь. Предсказуемая нагрузка — меньше сюрпризов. Под OpenWrt 24.10.3 всё это достигается в пару шагов.

  • Логи в RAM: перенесите /var/log и временные файлы в tmpfs. По умолчанию OpenWrt и так агрессивно использует RAM для временных путей — не мешайте ему.
  • opkg-кеш: храните кэш пакетов в RAM или вовсе не кэшируйте после установки. Меньше «мелкой возни» на флеше — лучше.
  • Мониторьте wear-leveling: периодически ubinfo -a и гляньте распределение износа. Резкие перекосы — повод расчистить место.
  • Старайтесь избегать свопа на NAND: если нужен своп, используйте внешний носитель или zram.

Если планируются активные сценарии — VPN с логированием, частые скачивания, прокси и фильтрация — подумайте об extroot на USB-накопитель. Заодно ускорите работу в «чувствительных» местах и уберете часть нагрузки с Foresee.

Стоит ли брать устройства с Foresee под OpenWrt и кому это подойдет

Если вам нужен недорогой роутер, который стабильно держит Wi-Fi, раздает пару VLAN и поднимает несколько сервисов, — чипы Foresee в комплекте с OpenWrt 24.10.3 чувствуют себя уверенно. При грамотной разметке, UBI и минимальной «болтовне» на флеше вы вряд ли заметите разницу с любым другим вендором NAND из того же класса.

Кому не подойдет. Тем, кто хочет «антихрупкости» уровня eMMC и планирует писать на флеш десятки гигабайт в неделю. Для такого сценария лучше смотреть в сторону устройств с eMMC/NVMe или сразу выносить «тяжелые» задачи на внешний носитель.

И наконец, про психологический комфорт. Если вы не любите ковыряться в MTD, OOB и UBI, выбирайте модель с уже известным «хорошим» деревом устройства под OpenWrt и готовыми образами. А если вам наоборот нравится «поджать» систему под себя — Foresee не станет препятствием. Чуть внимательности — и чип служит годами.

Полезные официальные ссылки

Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
310K
долларов
до 18 лет
Антипов жжет
Ребёнок как убыточный
актив. Считаем честно.
Почему рожают меньше те, кто умеет считать на десять лет вперёд.

Николай Нечепуренков

Я – ваш цифровой телохранитель и гид по джунглям интернета. Устал видеть, как хорошие люди попадаются на уловки кибермошенников, поэтому решил действовать. Здесь я делюсь своими секретами безопасности без занудства и сложных терминов. Неважно, считаешь ты себя гуру технологий или только учишься включать компьютер – у меня найдутся советы для каждого. Моя миссия? Сделать цифровой мир безопаснее, а тебя – увереннее в сети.

FREE
100%
Кибербезопасность · Обучение
УЧИСЬ!
ИЛИ
ВЗЛОМАЮТ
Лучшие ИБ-мероприятия
и вебинары — в одном месте
ПОДПИШИСЬ
T.ME/SECWEBINARS