Сборка образов прошивки: различия между версиями
Brainroot (обсуждение | вклад) |
|||
(не показаны 64 промежуточные версии 5 участников) | |||
Строка 1: | Строка 1: | ||
Для сборки образов прошивки контроллера | <languages/> | ||
<translate> | |||
<!--T:1--> | |||
Для сборки образов прошивки контроллера подготовлен специальный образ Docker. Процесс сборки можно производить внутри этого образа как в автоматическом так и в ручном режиме. Также возможно использовать скрипты для сборки без контейнера, после предварительной настройки окружения. | |||
= Подготовка = | = Подготовка = | ||
== Установка Docker== | |||
== Установка Docker | Перый шаг - это установка [https://docs.docker.com/ Docker] | ||
Перый шаг | В зависимости от используемого дистрибутива - устанавливается по-разному, для Debian: | ||
<syntaxhighlight lang="bash"> | |||
sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y | |||
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - | |||
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | |||
sudo apt update | |||
sudo apt install docker-ce -y | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Не забудьте добавить пользователя в группу docker, чтобы не использовать sudo | |||
Не забудьте добавить пользователя в группу docker, чтобы не использовать sudo | <syntaxhighlight lang="bash"> | ||
<syntaxhighlight lang=" | sudo usermod -aG docker ${USER} | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<blockquote>После добавления пользователя надо '''выйти-зайти'''чтобы изменения применились</blockquote> | |||
==Скачивание скрипта == | |||
Создаем папку и скачиваем скрипт | |||
= | Более подробно - тут: [https://github.com/wirenboard/wirenboard] | ||
<syntaxhighlight lang="bash"> | |||
mkdir ~/wirenboard-wbdev | |||
cd ~/wirenboard-wbdev | |||
wget https://raw.githubusercontent.com/wirenboard/wirenboard/master/wbdev | |||
chmod +x wbdev | |||
</syntaxhighlight> | |||
==Выкачивание образа== | |||
Запускаем: | Запускаем: | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="bash"> | ||
./wbdev root exit | |||
</syntaxhighlight> | </syntaxhighlight> | ||
/dev/sda2 10G 1.8G 7.7G 19% / | |||
tmpfs 2.0G 0 2.0G 0% /dev/shm | |||
tmpfs 5.0M 0 5.0M 0% /run/lock | |||
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup | |||
/dev/sda4 7.8G 232M 7.1G 4% /var | |||
<!--T:2--> | |||
# Подготовка корневой ФС (rootfs) | |||
# Сборка образа для загрузки на контроллер | |||
<!--T:3--> | |||
Скрипты находятся в репозитории [https://github.com/contactless/wirenboard wirenboard]. Далее пути будут обозначаться от директории с репозиторием. | |||
== Подготовка rootfs == <!--T:4--> | |||
<!--T:5--> | |||
Скрипт для подготовки корневой ФС находится в директории rootfs. | |||
<!--T:6--> | |||
Как использовать скрипт create_rootfs.sh: | |||
<!--T:7--> | |||
<pre> | <pre> | ||
$ ./create_rootfs.sh <board_ver> [<list of additional repos>] | $ ./create_rootfs.sh <path_to_new_rootfs> <board_ver> [<list of additional repos>] | ||
</pre> | </pre> | ||
<!--T:8--> | |||
Здесь: | Здесь: | ||
* ''board_ver'' | |||
** | <!--T:9--> | ||
* ''path_to_new_rootfs'' - имя директории, в которой будет создана корневая ФС. Директория будет создана автоматически; | |||
* ''board_ver'' - версия контроллера, для которого готовится образ. Допустимые значения: | |||
** 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 | ||
Строка 146: | Строка 85: | ||
** MKA31 | ** MKA31 | ||
** AC-E1 | ** AC-E1 | ||
* ''list of additional repos'' | * ''list of additional repos'' - адреса дополнительных репозиториев с тестовыми пакетами (см. ниже). Опциональный параметр. | ||
<!--T:10--> | |||
Пример. Собираем базовую (без доп. репозиториев) корневую ФС в директории rootfs/rootfs для Wiren Board 5.5: | |||
<!--T:11--> | |||
<pre> | |||
< | $ cd rootfs | ||
$ ./create_rootfs.sh ./rootfs/ 55 | |||
</pre> | |||
</ | |||
=== Дополнительные репозитории === | === Дополнительные репозитории === <!--T:12--> | ||
<!--T:13--> | |||
Добавление дополнительных репозиториев необходимо, если вы хотите добавить свои версии пакетов в собираемую корневую ФС. | Добавление дополнительных репозиториев необходимо, если вы хотите добавить свои версии пакетов в собираемую корневую ФС. | ||
<!--T:14--> | |||
В скрипт передаются ''только адреса'' репозиториев. Например: | В скрипт передаются ''только адреса'' репозиториев. Например: | ||
< | <!--T:15--> | ||
<pre> | |||
</ | $ ./create_rootfs.sh ./rootfs/ 55 http://server1.net/ http://server2.net:8086/ | ||
</pre> | |||
Формат репозиториев соответствует тому, который создаётся с помощью утилиты [[Special:MyLanguage/wbrepo|wbrepo]]. | <!--T:16--> | ||
Формат репозиториев соответствует тому, который создаётся с помощью утилиты [[Special:MyLanguage/wbrepo|wbrepo]]. Конкретно, к дополнительному репозиторию предъявляются следующие требования: | |||
* В корне на сервере репозитория должен храниться публичный GPG-ключ в файле | <!--T:17--> | ||
* Имя используемого дистрибутива | * В корне на сервере репозитория должен храниться публичный GPG-ключ в файле /repo.gpg.key. Например, если репозиторий расположен по адресу http://localhost:8086/, то ключ должен быть доступен по ссылке http://localhost:8086/repo.gpg.key | ||
* Используемый компонент | * Имя используемого дистрибутива - testing | ||
* Используемый компонент - main | |||
<!--T:18--> | |||
То есть, если передан адрес репозитория http://localhost:8086/, то в sources.list он будет представлен как | |||
То есть, если передан адрес репозитория http://localhost:8086/, то в | |||
<!--T:19--> | |||
<pre> | <pre> | ||
deb http://localhost:8086/ testing main | deb http://localhost:8086/ testing main | ||
</pre> | </pre> | ||
== Сборка образа для загрузки на контроллер == <!--T:20--> | |||
< | <!--T:21--> | ||
''TODO: раздел требует дополнения'' | |||
<!--T:22--> | |||
< | Скрипты для сборки образов находятся в директории images. Перед сборкой образа необходима готовая корневая ФС. | ||
< | <!--T:23--> | ||
Дополнительно на хост-машине потребуются утилиты (названия приведены для Debian/Ubuntu): | |||
<!--T:24--> | |||
* kpartx | |||
* device-tree-compiler | |||
* u-boot-tools | |||
<!--T:25--> | |||
Пример: собираем образ прошивки для Wiren Board 5, корневая ФС находится по пути rootfs/rootfs/: | |||
<!--T:26--> | |||
<pre> | |||
< | $ cd image | ||
$ ./create_images_wb5.sh ../rootfs/rootfs/ <tag> | |||
</ | </pre> | ||
<!--T:27--> | |||
Здесь ''tag'' - суффикс, который будет добавлен к имени файла образа. | |||
< | <!--T:28--> | ||
Готовый образ будет лежать по пути image/image/wb5/<current_datetime>/<current_datetime>_emmc_<tag>.img. | |||
</ | |||
== См. также == | == См. также == <!--T:29--> | ||
<!--T:30--> | |||
* [[Special:MyLanguage/Обновление прошивки|Обновление прошивки]] | * [[Special:MyLanguage/Обновление прошивки|Обновление прошивки]] | ||
* [[Wiren Board 5: Восстановление прошивки|Wiren Board 5: Восстановление прошивки]] | * [[Wiren Board 5: Восстановление прошивки|Wiren Board 5: Восстановление прошивки]] | ||
</translate> |
Версия 20:23, 12 ноября 2020
Для сборки образов прошивки контроллера подготовлен специальный образ Docker. Процесс сборки можно производить внутри этого образа как в автоматическом так и в ручном режиме. Также возможно использовать скрипты для сборки без контейнера, после предварительной настройки окружения.
Подготовка
Установка Docker
Перый шаг - это установка Docker В зависимости от используемого дистрибутива - устанавливается по-разному, для Debian:
sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce -y
Не забудьте добавить пользователя в группу docker, чтобы не использовать sudo
sudo usermod -aG docker ${USER}
После добавления пользователя надо выйти-зайтичтобы изменения применились
Скачивание скрипта
Создаем папку и скачиваем скрипт
Более подробно - тут: [1]
mkdir ~/wirenboard-wbdev
cd ~/wirenboard-wbdev
wget https://raw.githubusercontent.com/wirenboard/wirenboard/master/wbdev
chmod +x wbdev
Выкачивание образа
Запускаем:
./wbdev root exit
/dev/sda2 10G 1.8G 7.7G 19% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda4 7.8G 232M 7.1G 4% /var
- Подготовка корневой ФС (rootfs)
- Сборка образа для загрузки на контроллер
Скрипты находятся в репозитории wirenboard. Далее пути будут обозначаться от директории с репозиторием.
Подготовка rootfs
Скрипт для подготовки корневой ФС находится в директории rootfs.
Как использовать скрипт create_rootfs.sh:
$ ./create_rootfs.sh <path_to_new_rootfs> <board_ver> [<list of additional repos>]
Здесь:
- path_to_new_rootfs - имя директории, в которой будет создана корневая ФС. Директория будет создана автоматически;
- board_ver - версия контроллера, для которого готовится образ. Допустимые значения:
- 5 - для Wiren Board 5
- 55 - для Wiren Board 5.5
- 4 - для Wiren Board 4
- 32 - для WB Smart Home (3.2)
- 28
- NETMON
- MKA3
- CQC10
- MKA31
- AC-E1
- list of additional repos - адреса дополнительных репозиториев с тестовыми пакетами (см. ниже). Опциональный параметр.
Пример. Собираем базовую (без доп. репозиториев) корневую ФС в директории rootfs/rootfs для Wiren Board 5.5:
$ cd rootfs $ ./create_rootfs.sh ./rootfs/ 55
Дополнительные репозитории
Добавление дополнительных репозиториев необходимо, если вы хотите добавить свои версии пакетов в собираемую корневую ФС.
В скрипт передаются только адреса репозиториев. Например:
$ ./create_rootfs.sh ./rootfs/ 55 http://server1.net/ http://server2.net:8086/
Формат репозиториев соответствует тому, который создаётся с помощью утилиты wbrepo. Конкретно, к дополнительному репозиторию предъявляются следующие требования:
- В корне на сервере репозитория должен храниться публичный GPG-ключ в файле /repo.gpg.key. Например, если репозиторий расположен по адресу http://localhost:8086/, то ключ должен быть доступен по ссылке http://localhost:8086/repo.gpg.key
- Имя используемого дистрибутива - testing
- Используемый компонент - main
То есть, если передан адрес репозитория http://localhost:8086/, то в sources.list он будет представлен как
deb http://localhost:8086/ testing main
Сборка образа для загрузки на контроллер
TODO: раздел требует дополнения
Скрипты для сборки образов находятся в директории images. Перед сборкой образа необходима готовая корневая ФС.
Дополнительно на хост-машине потребуются утилиты (названия приведены для Debian/Ubuntu):
- kpartx
- device-tree-compiler
- u-boot-tools
Пример: собираем образ прошивки для Wiren Board 5, корневая ФС находится по пути rootfs/rootfs/:
$ cd image $ ./create_images_wb5.sh ../rootfs/rootfs/ <tag>
Здесь tag - суффикс, который будет добавлен к имени файла образа.
Готовый образ будет лежать по пути image/image/wb5/<current_datetime>/<current_datetime>_emmc_<tag>.img.