WB Firmware Update Details: различия между версиями

м
м (→‎Схема разделов microSD/eMMC: Поправил текст)
 
(не показано 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> расширенный раздел FAT, напрямую не используется.
* <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''' - счетчик попыток загрузки, увеличивается на 1 при каждом входе в u-boot
* '''bootcount''' счетчик попыток загрузки, увеличивается на 1 при каждом входе в u-boot.
* '''bootlimit''' - максимальное значение '''bootcount''' при превышении которого происходит переключение активной rootfs
* '''bootlimit''' максимальное значение '''bootcount''' при превышении которого происходит переключение активной rootfs.
* '''mmcpart''' - хранит номер раздела текущей активной rootfs (2 или 3)
* '''mmcpart''' хранит номер раздела текущей активной rootfs (2 или 3).
* '''altbootcmd''' - команда, выполняющяяся при превышении '''bootlimit''': изменяет '''mmcpart''' и обнуляет '''bootcount''' для того, чтоб попытки загрузки с альтернативной rootfs считались заново
* '''altbootcmd''' команда, выполняющяяся при превышении '''bootlimit''': изменяет '''mmcpart''' и обнуляет '''bootcount''' для того, чтоб попытки загрузки с альтернативной rootfs считались заново.
* '''upgrade_available''' - должна быть равна 1 чтобы весь этот механизм работал
* '''upgrade_available''' должна быть равна 1 чтобы весь этот механизм работал.


При удачной загрузке переменная bootcount устанавливается в 0 из скрипта /etc/init.d/wb-init, выполняющимся предпоследним перед rc.
При удачной загрузке переменная 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>


Загруженный файл попадает в ''/var/www/uploads/'', где обнаруживается скриптом '''wb-watch-update''' и при полной загрузке (проверяется наличие сигнатуры в конце файла) - запускается скрипт '''wb-run-update''' (оба этих скрипта лежат в пакете ''wb-utils''), который проверяет контрольную сумму скрипта '''install''' и запускает его на исполнение.
Загруженный файл попадает в <code>/var/www/uploads/</code>, где обнаруживается скриптом '''wb-watch-update''' и при полной загрузке (проверяется наличие сигнатуры в конце файла) запускается скрипт '''wb-run-update''' (оба этих скрипта лежат в пакете <code>wb-utils</code>), который проверяет контрольную сумму скрипта '''install''' и запускает его на исполнение.


Лог выполнения обновления сохраняется в файл ''/var/log/update.log'' (он же ''/mnt/data/var/log/update.log'')
Лог выполнения обновления сохраняется в файл <code>/var/log/update.log</code>, он же <code>/mnt/data/var/log/update.log</code>.
wb_editors
154

правки