Вы когда-нибудь задумывались, что скрывается внутри прошивки вашей 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.dmp→u-boot.env00000001.dmp→kernel.img00000002.dmp→www.jffs200000003.dmp→ipnc.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 — можно добавить свои разделы и функции
- Следите за температурой камеры — перегрев сокращает срок службы
Итог
Прошивка — это целый мир, состоящий из разделов и файлов, которые можно разбирать, изменять и собирать обратно. С помощью правильных инструментов и знаний вы сможете улучшить её функциональность.
А отечественные камеры — это интересный микс китайских и российских технологий, где каждая плата рассказывает свою историю. Не бойтесь заглядывать внутрь, экспериментировать и создавать что-то своё!
Пусть ваши камеры работают как часы, а прошивки будут под контролем!