Сборка образов прошивки: различия между версиями
Brainroot (обсуждение | вклад) |
м (Орфография, типографика, стилистика.) |
||
Строка 2: | Строка 2: | ||
<translate> | <translate> | ||
<!--T:1--> | <!--T:1--> | ||
Для сборки образов прошивки контроллера | Для сборки образов прошивки контроллера мы подготовили специальный образ Docker. Сборку можно производить внутри этого образа в автоматическом или ручном режиме. После предварительной настройки окружения можно использовать скрипты для сборки без контейнера. | ||
= Подготовка = | = Подготовка = | ||
Актуально '''до''' ядра 4.22 включительно. Раздел в процессе правки. | Актуально '''до''' ядра 4.22 включительно. Раздел в процессе правки. | ||
== Установка Docker и подготовка хост-системы== | == Установка Docker и подготовка хост-системы== | ||
Перый шаг | Перый шаг — это установка [https://docs.docker.com/ Docker]. | ||
В зависимости от используемого дистрибутива | В зависимости от используемого дистрибутива — устанавливается по-разному, для Debian: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y | sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y | ||
Строка 16: | Строка 16: | ||
sudo apt install docker-ce -y | sudo apt install docker-ce -y | ||
</syntaxhighlight> | </syntaxhighlight> | ||
На хост-системе '''обязательно''' установите | На хост-системе '''обязательно''' установите пакет qemu-user-static: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo apt install -y qemu-user-static | sudo apt install -y qemu-user-static | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Не забудьте добавить пользователя в группу docker, чтобы не использовать sudo | Не забудьте добавить пользователя в группу docker, чтобы не использовать sudo: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo usermod -aG docker ${USER} | sudo usermod -aG docker ${USER} | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<blockquote>После добавления пользователя надо '''выйти-зайти'''чтобы изменения применились</blockquote> | <blockquote>После добавления пользователя надо '''выйти-зайти''' чтобы изменения применились.</blockquote> | ||
==Скачивание скрипта == | ==Скачивание скрипта == | ||
Создаем папку и скачиваем скрипт | Создаем папку и скачиваем скрипт | ||
Более подробно | Более подробно читайте — [https://github.com/wirenboard/wirenboard в репозитории на GitHub] | ||
Скачать полностью репозиторий: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
mkdir ~/wirenboard-wbdev | mkdir ~/wirenboard-wbdev | ||
Строка 40: | Строка 40: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Скачать только скрипт. Пока не реализовано — сейчас в образе нет create_images.sh: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
mkdir -p ~/wirenboard-wbdev/wirenboard | mkdir -p ~/wirenboard-wbdev/wirenboard | ||
Строка 56: | Строка 55: | ||
./wbdev root exit | ./wbdev root exit | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<blockquote>'''Важно:''' Образ займет ~5 | <blockquote>'''Важно:''' Образ займет ~5.5 Гб на /var </blockquote> | ||
=Cборка образа= | =Cборка образа= | ||
Строка 84: | Строка 83: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Запускаем контейнер, при этом передаем архитектуру | Запускаем контейнер, при этом передаем архитектуру «цели»: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
WBDEV_TARGET=stretch-armhf ./wbdev root ./tmp.sh | WBDEV_TARGET=stretch-armhf ./wbdev root ./tmp.sh | ||
Строка 90: | Строка 89: | ||
<blockquote>'''Важно:''' Изменения внутри контейнера не сохранятся </blockquote> | <blockquote>'''Важно:''' Изменения внутри контейнера не сохранятся </blockquote> | ||
После завершения | После завершения — «корневая» файловая система остается в каталоге ./output/rootfs_wb6x и доступна для следующего использования. Можно изменять и дополнять в «ручном» режиме. | ||
Готовый для загрузки в контроллер образ | Готовый для загрузки в контроллер образ — в ./output/images/YYYYMMDDHHMM | ||
==Ручная сборка== | ==Ручная сборка== | ||
По сути | По сути — то же самое, но команды выполняются вручную, есть возможность изменить параметры. | ||
=== Запуск контейнера === | === Запуск контейнера === | ||
Запускаем в том же каталоге ~/wirenboard-wbdev/wirenboard следующую команду: | Запускаем в том же каталоге ~/wirenboard-wbdev/wirenboard следующую команду: | ||
Строка 101: | Строка 100: | ||
WBDEV_TARGET=stretch-armhf ./wbdev root | WBDEV_TARGET=stretch-armhf ./wbdev root | ||
</syntaxhighlight> | </syntaxhighlight> | ||
и после запуска контейнера готовим среду, команды те же что и в | и после запуска контейнера готовим среду, команды те же что и в «автоматическом» режиме: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
apt-get update && \ | apt-get update && \ | ||
Строка 112: | Строка 109: | ||
=== Подготовка rootfs === | === Подготовка rootfs === | ||
Если rootfs | Если rootfs уже создана ранее, то просто указываем ее расположение. | ||
Скрипт для подготовки корневой | Скрипт для подготовки корневой файловой системы находится в директории /root/rootfs. | ||
Синтаксис запуска скрипта create_rootfs.sh: | |||
<pre> | <pre> | ||
$ ./create_rootfs.sh <board_ver> [<list of additional repos>] | $ ./create_rootfs.sh <board_ver> [<list of additional repos>] | ||
Строка 121: | Строка 119: | ||
Здесь: | Здесь: | ||
* ''board_ver'' | * ''board_ver'' — версия контроллера, для которого готовится образ. Допустимые значения: | ||
** 6x | ** 6x — для Wiren Board 6-6.6 | ||
** 5 | ** 5 — для Wiren Board 5 | ||
** 55 | ** 55 — для Wiren Board 5.5 | ||
** 4 | ** 4 — для Wiren Board 4 | ||
** 32 | ** 32 — для WB Smart Home (3.2) | ||
** 28 | ** 28 | ||
** NETMON | ** NETMON | ||
Строка 133: | Строка 131: | ||
** MKA31 | ** MKA31 | ||
** AC-E1 | ** AC-E1 | ||
* ''list of additional repos'' | * ''list of additional repos'' — адреса дополнительных репозиториев с тестовыми пакетами (см. ниже). Опциональный параметр. | ||
* ''путь к корневой ФС'' из переменной ROOTFS, имя директории, в которой будет создана корневая ФС. Директория будет создана автоматически | * ''путь к корневой ФС'' из переменной ROOTFS, имя директории, в которой будет создана корневая ФС. Директория будет создана автоматически. | ||
Зададим расположение ФС, уже существующей или вновь создаваемой: | Зададим расположение ФС, уже существующей или вновь создаваемой: | ||
Строка 148: | Строка 146: | ||
</pre> | </pre> | ||
Если не используем уже существующую, то создаем: | |||
Если не используем уже существующую то создаем: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
/root/rootfs/create_rootfs.sh 6x | /root/rootfs/create_rootfs.sh 6x | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Если нет ошибок | Если нет ошибок — можно переходить к следующему этапу. | ||
=== Дополнительные репозитории === <!--T:12--> | === Дополнительные репозитории === <!--T:12--> | ||
Строка 170: | Строка 167: | ||
<!--T:16--> | <!--T:16--> | ||
Формат репозиториев соответствует тому, который создаётся с помощью утилиты [[Special:MyLanguage/wbrepo|wbrepo]]. | Формат репозиториев соответствует тому, который создаётся с помощью утилиты [[Special:MyLanguage/wbrepo|wbrepo]]. К дополнительному репозиторию предъявляются требования: | ||
<!--T:17--> | <!--T:17--> | ||
* В корне на сервере репозитория должен храниться публичный GPG-ключ в файле /repo.gpg.key. Например, если репозиторий расположен по адресу http://localhost:8086/, то ключ должен быть доступен по ссылке http://localhost:8086/repo.gpg.key | * В корне на сервере репозитория должен храниться публичный GPG-ключ в файле /repo.gpg.key. Например, если репозиторий расположен по адресу http://localhost:8086/, то ключ должен быть доступен по ссылке http://localhost:8086/repo.gpg.key | ||
* Имя используемого дистрибутива | * Имя используемого дистрибутива — testing | ||
* Используемый компонент | * Используемый компонент — main | ||
<!--T:18--> | <!--T:18--> | ||
Строка 220: | Строка 217: | ||
<!--T:27--> | <!--T:27--> | ||
Здесь ''tag'' | Здесь ''tag'' — суффикс, который будет добавлен к имени файла образа. | ||
<!--T:28--> | <!--T:28--> | ||
Готовый образ будет лежать по пути image/image/wb5/<current_datetime>/<current_datetime>_emmc_<tag>.img. | Готовый образ будет лежать по пути image/image/wb5/<current_datetime>/<current_datetime>_emmc_<tag>.img. | ||
== См. также == <!--T:29--> | == См. также == <!--T:29--> |