wb_editors
154
правки
м (→Схема разделов microSD/eMMC: Поправил текст) |
N.maslov (обсуждение | вклад) |
||
(не показано 5 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE: Обновление прошивки, информация для разработчиков}} | |||
=== Предупреждение === | === Предупреждение === | ||
Информация на этой странице предназначена для разработчиков, планирующих вносить изменения в систему обновления контроллеров Wiren Board. | Информация на этой странице предназначена для разработчиков, планирующих вносить изменения в систему обновления контроллеров Wiren Board. | ||
Информация для пользователей находится на странице | Информация для пользователей находится на странице [[Обновление прошивки]]. | ||
=== Формат файла обновления === | === Формат файла обновления === | ||
Строка 26: | Строка 28: | ||
* <code>/dev/mmcblk0p2</code> 1024 Мб, первая rootfs. | * <code>/dev/mmcblk0p2</code> 1024 Мб, первая rootfs. | ||
* <code>/dev/mmcblk0p3</code> 1024 Мб, вторая rootfs. | * <code>/dev/mmcblk0p3</code> 1024 Мб, вторая rootfs. | ||
* <code>/dev/mmcblk0p4</code> расширенный раздел | * <code>/dev/mmcblk0p4</code> расширенный раздел MBR, напрямую не используется. | ||
* <code>/dev/mmcblk0p5</code> 256 Мб, swap. | * <code>/dev/mmcblk0p5</code> 256 Мб, swap. | ||
* <code>/dev/mmcblk0p6</code> остальное место — общие для обоих rootfs данные: конфиги, логи и т.п., монтируется в <code>/mnt/data</code>. | * <code>/dev/mmcblk0p6</code> остальное место — общие для обоих rootfs данные: конфиги, логи и т.п., монтируется в <code>/mnt/data</code>. | ||
Строка 41: | Строка 43: | ||
Реализована с помощью функции u-boot [http://www.denx.de/wiki/view/DULG/UBootBootCountLimit Boot Count Limit] | Реализована с помощью функции u-boot [http://www.denx.de/wiki/view/DULG/UBootBootCountLimit Boot Count Limit] | ||
Используются следующие переменные окружения: | Используются следующие переменные окружения: | ||
* '''bootcount''' | * '''bootcount''' — счетчик попыток загрузки, увеличивается на 1 при каждом входе в u-boot. | ||
* '''bootlimit''' | * '''bootlimit''' — максимальное значение '''bootcount''' при превышении которого происходит переключение активной rootfs. | ||
* '''mmcpart''' | * '''mmcpart''' — хранит номер раздела текущей активной rootfs (2 или 3). | ||
* '''altbootcmd''' | * '''altbootcmd''' — команда, выполняющяяся при превышении '''bootlimit''': изменяет '''mmcpart''' и обнуляет '''bootcount''' для того, чтоб попытки загрузки с альтернативной rootfs считались заново. | ||
* '''upgrade_available''' | * '''upgrade_available''' — должна быть равна 1 чтобы весь этот механизм работал. | ||
При удачной загрузке переменная bootcount устанавливается в | При удачной загрузке переменная bootcount устанавливается в «0» из скрипта <code>/etc/init.d/wb-init</code>, выполняющимся предпоследним перед rc. | ||
=== Сборка FIT-образа обновления === | === Сборка FIT-образа обновления === | ||
Строка 59: | Строка 62: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
При этом в апдейт включается '''install''' из файла '''image/install_update.sh''' и собирается tar.gz с rootfs из указанной директории (также можно указать уже имеющийся tar.gz). Подробную инструкцию можете прочитать в статье | При этом в апдейт включается '''install''' из файла '''image/install_update.sh''' и собирается tar.gz с rootfs из указанной директории (также можно указать уже имеющийся tar.gz). | ||
«[[Сборка_образов_прошивки|Сборка образов прошивки]]». | |||
Подробную инструкцию можете прочитать в статье «[[Сборка_образов_прошивки|Сборка образов прошивки]]». | |||
=== Загрузка обновления на контроллер === | === Загрузка обновления на контроллер === | ||
Строка 68: | Строка 72: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Загруженный файл попадает в | Загруженный файл попадает в <code>/var/www/uploads/</code>, где обнаруживается скриптом '''wb-watch-update''' и при полной загрузке (проверяется наличие сигнатуры в конце файла) — запускается скрипт '''wb-run-update''' (оба этих скрипта лежат в пакете <code>wb-utils</code>), который проверяет контрольную сумму скрипта '''install''' и запускает его на исполнение. | ||
Лог выполнения обновления сохраняется в файл | Лог выполнения обновления сохраняется в файл <code>/var/log/update.log</code>, он же <code>/mnt/data/var/log/update.log</code>. |