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 не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.

МЫ — ГЛАВНЫЙ БАГ ЭВОЛЮЦИИ.

Думали, мы "венец творения"? Ха! Оказалось — просто системная ошибка. Наш хвалёный "супер-мозг" — это не фича, а баг, который убивает планету.

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

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