Вы когда-нибудь задумывались, что скрывается внутри прошивки вашей IP-камеры? Или как собрать её заново после внесения изменений? Сегодня мы погрузимся в мир прошивок, файлов и разделов, а также заглянем в начинку отечественной камеры. Готовы? Поехали!


Что вас ждет в этой статье

  • Поймем, что такое прошивка камеры и из каких частей она состоит
  • Научимся разбирать прошивку на файлы и монтировать разделы
  • Узнаем, как собрать прошивку обратно с изменениями
  • Рассмотрим пример отечественной IP-камеры и её аппаратную часть
  • Поделимся полезными советами и лайфхаками для работы с прошивками и железом

Прошивка камеры — что это и почему она важна

Прошивка — это как душа камеры, её программное сердце. Без неё камера — просто кусок пластика с камерой. В случае DCS-2210 прошивка состоит из нескольких важных файлов и разделов:

Имя файла Назначение Формат/Раздел Адрес в памяти
u-boot.env Переменные окружения загрузчика mtdblock0 0x1c00
kernel.img Ядро Linux MontaVista mtdblock3 0x00200000-0x00400000
www.jffs2 Веб-сервер, html и скрипты jffs2, mtdblock6 0x00c00000-0x01000000
ipnc.jffs2 Низкоуровневый софт производителя jffs2, mtdblock7 0x01000000-0x01a00000

Внимание! В прошивке D-Link отсутствует образ rootfs — корневая файловая система. Это необычно, но такова реальность.


Разбираем прошивку — как это сделать без боли

Только представьте: у вас есть файл прошивки, а вы хотите заглянуть внутрь, изменить что-то и собрать обратно. Звучит сложно? На самом деле — нет.

Шаг 1. Скачиваем прошивку

Идем на официальный сайт D-Link или ftp-сервер и скачиваем файл прошивки. Для удобства переименовываем его в dcs2210.bin.

Шаг 2. Распаковка прошивки

Здесь на помощь приходит утилита decode_fw, написанная умельцем по имени leecher. Она умеет распаковывать прошивку на отдельные файлы.

Важно: компилируйте утилиту только в 32-битной Linux-среде! В 64-битной она не заработает.

gcc -m32 decode_fw.c -o decode_fw
chmod +x decode_fw
sudo ./decode_fw dcs2210.bin a.out

В результате вы получите четыре файла:

  • 00000000.dmpu-boot.env
  • 00000001.dmpkernel.img
  • 00000002.dmpwww.jffs2
  • 00000003.dmpipnc.jffs2

Шаг 3. Монтируем раздел www.jffs2

Чтобы внести изменения в веб-сервер, нужно смонтировать раздел www.jffs2. Для этого используем скрипт mount_jffs2.sh:

./mount_jffs2.sh www.jffs2

В папке fs появится содержимое раздела. Вносим изменения, сохраняем:

mkfs.jffs2 -l -e 0x4000 -n -U -d fs -o www.jffs2.new
./mount_jffs2.sh www.jffs2 unmount

Собираем прошивку обратно — как не потерять голову

Теперь, когда изменения внесены, пора собрать прошивку обратно.

Шаг 1. Получаем исходники

Скачиваем исходный код прошивки с ftp-сервера D-Link:

ftp://ftp.dlink.ru/pub/Multimedia/Sources/GPL_DCS-2210.tar.gz

Шаг 2. Готовим конфигурацию

Нас интересуют два файла: firmware.conf и host_mkfm. В firmware.conf указываем файлы и разделы:

file_name      mtd  section_type  offset(hex)  FLAG(GZ_COMPRESS)
u-boot.env    0    AUTO          1C000       0
kernel.img    3    AUTO          0           0
www.jffs2     6    JFFS2         0           0
ipnc.jffs2    7    JFFS2         0           0

Шаг 3. Собираем прошивку

sudo ./host_mkfm dcs2210_new.bin

В итоге получаем файл dcs2210_new.bin, готовый к прошивке камеры.


Практический пример — добавляем раздел rootfs

Допустим, вы хотите добавить раздел rootfs в прошивку. Вот как это сделать:

  • Смонтируйте mtdblock4 с помощью скрипта
  • Внесите нужные изменения
  • Сохраните новый образ
  • Добавьте запись в firmware.conf для rootfs с типом AUTO
  • Соберите прошивку и прошейте камеру

Совет: Если при прошивке появляется пустая страница, проверьте, что в section_type стоит AUTO. Это решит проблему.


Заглянем внутрь отечественной IP-камеры

А теперь переключимся на аппаратную часть отечественной камеры mini dome 360+1 2MDIS-28, произведенной в Краснодаре.

Что внутри

  • Три платы: подсветка, матплата/сенсор и плата питания
  • Матплата на SigmaStar SSC337DE — китайский процессор
  • Плата питания с массивным трансформатором и газоразрядниками — вероятно отечественная разработка
  • Подсветка с маркировкой НИЦ "Технологии" — тоже отечественная

Особенности

  • Камера греется до 50 градусов после часа работы — учтите при установке
  • Корпус скорее китайский, но с отечественными элементами
  • Прошивка китайская, MAC-адрес из непонятного пула

Полезные советы и лайфхаки

  • Сохраняйте оригинальные файлы прошивки перед изменениями — на всякий случай
  • Используйте 32-битную Linux-среду для работы с утилитами распаковки
  • Проверяйте тип раздела в firmware.conf — AUTO часто спасает от проблем
  • Монтируйте jffs2 разделы через скрипты — это проще и надежнее
  • Не бойтесь экспериментировать с rootfs — можно добавить свои разделы и функции
  • Следите за температурой камеры — перегрев сокращает срок службы

Итог

Прошивка — это целый мир, состоящий из разделов и файлов, которые можно разбирать, изменять и собирать обратно. С помощью правильных инструментов и знаний вы сможете улучшить её функциональность.

А отечественные камеры — это интересный микс китайских и российских технологий, где каждая плата рассказывает свою историю. Не бойтесь заглядывать внутрь, экспериментировать и создавать что-то своё!


Пусть ваши камеры работают как часы, а прошивки будут под контролем!