Перенос/копия всего WB

Здравствуйте форумчане.
Значит ситуация такая, мы сейчас обкатываем в рамках тестового проекта несколько семёрок и одну шестёрку.
В планах закупить крупную партию (более 200 плк + навесное к каждому) под крупный проект.
Изьяны девятого дебиана вроде победили, все что нам надо работает.
Во всех ПЛК примерно один набор программ, будут только мелкие изменения (руками при установке/монтаже поправим), какие есть достоверные способы быстрого переноса/копии памяти? Ибо по одному-два контроллера в день отлаживать, это большая потеря времени, чего позволить себе не можем.

Напишите может инструкцию какую нибудь, она много кому пригодится потом здесь.
Заранее спасибо.

Уже тестируется bullseye. Возможно следующий релиз будет уже на нем.

Опишу используемые подходы к разворачиванию… Даже если не использовать оркестрацию, тот же absible то есть неоднократно проверенные методы:

  • популярный у крупных интеграторов, создание своего образа: Сборка образов прошивки — Wiren Board в котором можно сразу и свой софт и конфиги.
  • распространение софта с помощью пакетов - не менее популярен. То есть чтобы не изобретать сущности - пользоваться стандартным apt debian.
  • установка и конфигурирование скриптами, тоже можно, конечно.
  • Сборка конфигов в архив и распаковука на целевом контроллере. Тут надо 1читывать аппаратные отличия (Но WB6 уже не производятся, так что на них можно не предусматривать).

Вы не подскажете примерно когда это произойдёт?

Скорее месяца через два.

Здравствуйте пришел момент сборки образов

Решил что таким способом идти самое оптимальное:
Описан способ для WB 6 я так понимаю, как собрать образ под WB7?
Прошу помощи потому что сталкиваюсь с линуксами в первый раз на уровне разработчика.
В инструкции немного непонятно как редактировать ФС? Куда писать bash последовательность для предустановленных программ? Где взять потом .fit файл?
Направьте пожалуйста куда мне копать дальше?) Заранее благодарен.


Докер и все прочее поставил, image загружен
Может есть примеры…

Тот же способ, указать версию 7 в параметрах.

Ну, тут лучше позвать локального админа, все ж минимальное понимание нужно.

https://wirenboard.com/wiki/Сборка_образов_прошивки#Сборка_образа_для_загрузки_на_контроллер
В статье все необходимые пути указаны ведь…

Добрался до консоли Докер контейнера, куда ставить ПО понятно вроде.
Подскажите пожалуйста как примонтировать туда раздел, который в контороллере в /mnt/data находится? Чтоб уже полностью всю файловую систему в прошивку засунуть…

Этот раздел при “factroy reset” создается, поэтому вернй путь - это запаковать его будущее содержимое (держать архив в корневом разделе) и распаковать уже после установки.

При попытке создать rootfs

wb@ubuntu:~/wirenboard-wbdev/wirenboard/rootfs$ ROOTFS=./rootfs/rootfs_55 ./create_rootfs.sh 55
Wirenboard repo: http://deb.wirenboard.com/wb5/bullseye, release stable
Install dependencies
Reading package lists... Done
Building dependency tree       
Reading state information... Done
binfmt-support is already the newest version (2.2.0-2).
qemu-user-static is already the newest version (1:4.2-3ubuntu6.23).
0 upgraded, 0 newly installed, 0 to remove and 86 not upgraded.
No /home/wb/wirenboard-wbdev/wirenboard/output/rootfs_base_stable_wb5_bullseye_bullseye_r0cae5f42.tar.gz found, will create one for later use
./create_rootfs.sh: line 214: debootstrap: command not found
Error in ./create_rootfs.sh:214. 'debootstrap --foreign --verbose --arch $ARCH --variant=minbase ${DEBIAN_RELEASE} ${OUTPUT} ${REPO}' exited with status 0
Exiting with status 1

Я понимаю что не хватает каких то архивов с Debian /home/wb/wirenboard-wbdev/wirenboard/output/rootfs_base_stable_wb5_bullseye_bullseye_r0cae5f42.tar.gz
По этому пути ничего нет, папка output пустая.

Так… А зачем создаете rootfs для 5.5 версии контроллера используя репозиторий bullseye?
Ну и сам команду явно запускаете не в контейнере, там debootstrap есть.

Автоматически так выполняться скрипт начал. Подскажите как правильно пожалуйста, если можно то в последовательности? Дайте инструкцию поподробнее.
Как мне запустить команду в контейнере? имеете ввиду подключиться к самому контейнеру через командную строку типа
docker exec -it devenv /bin/bash
?

Install additional repos
Addtitional repo ./rootfs/rootfs_7x/etc/apt/sources.list.d/wb-additional-tmp.list contents:

Addtitional pin ./rootfs/rootfs_7x/etc/apt/preferences.d/00-wb-additional-tmp contents:

Update&upgrade apt
Hit:1 http://security.debian.org/debian-security bullseye-security InRelease
Hit:2 http://deb.debian.org/debian bullseye InRelease      
Hit:3 http://deb.debian.org/debian bullseye-updates InRelease
Ign:4 http://deb.wirenboard.com/wb7/bullseye stable InRelease
Err:5 http://deb.wirenboard.com/wb7/bullseye stable Release
  404  Not Found [IP: 52.218.116.84 80]
Reading package lists... Done
E: The repository 'http://deb.wirenboard.com/wb7/bullseye stable Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
Error in /home/wb/wirenboard-wbdev/wirenboard/rootfs/rootfs_env.sh:48. 'chroot ${ROOTFS} "$@"' exited with status 0
Call tree:
 1: /home/wb/wirenboard-wbdev/wirenboard/rootfs/rootfs_env.sh:61 chr(...)
 2: ./create_rootfs.sh:290 chr_apt_update(...)
Exiting with status 1
Umount proc,dev,dev/pts in rootfs

Как раз в статье именно готовые команды приведены.

Да, но тут вы выполните именно bash…

Пройдусь по статье, проверю все пункты.

Актуализировал статью для сборки образа 7x контролеров

Создал tmp.sh, хочу создать чистый образ например, создал output и в ней images.

tmp.sh такой:

$ BOARD=7x; WB_RELEASE=stable; DEBIAN_RELEASE=stretch; cat << EOFcommand > tmp.sh
#!/bin/bash
apt-get update
apt-get install -y kpartx zip device-tree-compiler u-boot-tools=2016.11+dfsg1-4 libfdt1 binutils
mount -t devtmpfs none /dev
export ROOTFS=./output/rootfs_wb${BOARD}

# нужно удалить эти 3 строки, если rootfs уже была создана ранее и изменена,
# иначе она будет удалена и создана заново!
echo "Create new clean rootfs" 
rm -rf \$ROOTFS
WB_RELEASE=${WB_RELEASE} DEBIAN_RELEASE=${DEBIAN_RELEASE}  /root/rootfs/create_rootfs.sh ${BOARD}

echo "Create .fit image"
./image/create_images.sh ${BOARD}
echo "fix permissions"
chown ${UID} -R ./output/images/
#Uncomment next string for remove script 
#rm tmp.sh
EOFcommand

в итоге такой лог сборки:

wb@ubuntu:~/wirenboard-wbdev/wirenboard$ sudo ./wbdev root bash ./tmp.sh
[sudo] password for wb: 
Warning: sbuild+multiarch will be used. Set WBDEV_BUILD_METHOD=qemuchroot for legacy virtualized build.
Ign:1 http://deb.debian.org/debian stretch InRelease
Get:2 http://security.debian.org stretch/updates InRelease [59.1 kB]          
Get:3 http://deb.debian.org/debian stretch-updates InRelease [93.6 kB]        
Get:4 http://repo.aptly.info squeeze InRelease [7,150 B]                      
Get:5 http://deb.wirenboard.com/dev-tools stable InRelease [3,953 B]          
Get:6 http://deb.debian.org/debian stretch-backports InRelease [99.9 kB]      
Get:7 http://repo.aptly.info squeeze/main amd64 Packages [3,526 B]            
Get:8 http://security.debian.org stretch/updates/main amd64 Packages [996 kB] 
Get:9 http://deb.debian.org/debian stretch Release [118 kB]                   
Get:10 http://deb.debian.org/debian stretch Release.gpg [3,177 B]             
Get:11 http://deb.wirenboard.com/dev-tools stable/main amd64 Packages [16.1 kB]
Get:12 http://deb.debian.org/debian stretch-backports/main amd64 Packages [790 kB]
Get:13 http://deb.debian.org/debian stretch/main amd64 Packages [9,610 kB]    
Fetched 11.8 MB in 8s (1,384 kB/s)                                            
Reading package lists... Done
Reading package lists... Done
Building dependency tree       
Reading state information... Done
binutils is already the newest version (2.28-5).
binutils set to manually installed.
kpartx is already the newest version (0.6.4-5+deb9u1).
u-boot-tools is already the newest version (2016.11+dfsg1-4).
zip is already the newest version (3.0-11+b1).
device-tree-compiler is already the newest version (1.6.0-1).
libfdt1 is already the newest version (1.6.0-1).
libfdt1 set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 34 not upgraded.
Create new clean rootfs
./tmp.sh: line 11: /root/rootfs/create_rootfs.sh: No such file or directory
Create .fit image
+ '[' 0 -lt 1 ']'
+ echo 'USAGE: ./image/create_images.sh <board type> [fw version]'
USAGE: ./image/create_images.sh <board type> [fw version]
+ echo 'Override default rootfs path with ROOTFS env var'
Override default rootfs path with ROOTFS env var
+ exit 1
fix permissions
wb@ubuntu:~/wirenboard-wbdev/wirenboard$ 


Контейнер создаётся нормально, проверяю через portainer

А зачем так? Где у нас в инструкции упоминание? То есть вы запускаете от другого пользователя зачем-то.

без sudo результат такой

b@ubuntu:~/wirenboard-wbdev/wirenboard$ ./wbdev root bash ./tmp.sh
Warning: sbuild+multiarch will be used. Set WBDEV_BUILD_METHOD=qemuchroot for legacy virtualized build.
Ign:1 http://deb.debian.org/debian stretch InRelease
Get:2 http://security.debian.org stretch/updates InRelease [59.1 kB]          
Get:3 http://deb.debian.org/debian stretch-updates InRelease [93.6 kB]        
Get:4 http://repo.aptly.info squeeze InRelease [7,150 B]                      
Get:5 http://deb.wirenboard.com/dev-tools stable InRelease [3,953 B]          
Get:6 http://deb.debian.org/debian stretch-backports InRelease [99.9 kB]      
Get:7 http://repo.aptly.info squeeze/main amd64 Packages [3,526 B]            
Get:8 http://deb.debian.org/debian stretch Release [118 kB]                   
Get:9 http://security.debian.org stretch/updates/main amd64 Packages [996 kB] 
Get:10 http://deb.debian.org/debian stretch Release.gpg [3,177 B]             
Get:11 http://deb.debian.org/debian stretch-backports/main amd64 Packages [790 kB]
Get:12 http://deb.wirenboard.com/dev-tools stable/main amd64 Packages [16.1 kB]
Get:13 http://deb.debian.org/debian stretch/main amd64 Packages [9,610 kB]    
Fetched 11.8 MB in 7s (1,500 kB/s)                                            
Reading package lists... Done
Reading package lists... Done
Building dependency tree       
Reading state information... Done
binutils is already the newest version (2.28-5).
binutils set to manually installed.
kpartx is already the newest version (0.6.4-5+deb9u1).
u-boot-tools is already the newest version (2016.11+dfsg1-4).
zip is already the newest version (3.0-11+b1).
device-tree-compiler is already the newest version (1.6.0-1).
libfdt1 is already the newest version (1.6.0-1).
libfdt1 set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 34 not upgraded.
Create new clean rootfs
USAGE: /root/rootfs/create_rootfs.sh <BOARD> [list of additional repos]

Environment variables:
	ROOTFS	Overrides default rootfs path
	WB_REPO	Overrides default repository URL (default 'http://deb.wirenboard.com/')
	WB_REPO_PREFIX	Overrides default repository prefix after URL (default '')
	WB_RELEASE	Overrides default release (default 'stable')
	WB_TEMP_REPO	Set to 'true' if default repository will be unavailable after build
	DEBIAN_RELEASE	Sets Debian release (default 'stretch')

How to use additional repos:
	 /root/rootfs/create_rootfs.sh <BOARD> "http://localhost:8086/" [more repos...]
By default, repos  will be expanded as
	 "deb <repo_address> stretch main".
Repository will be added with [trusted=yes], so no key is required.

You can specify release and component like this (optional):
	 "http://example.com/path/to@release:component"
Create .fit image
+ '[' 0 -lt 1 ']'
+ echo 'USAGE: ./image/create_images.sh <board type> [fw version]'
USAGE: ./image/create_images.sh <board type> [fw version]
+ echo 'Override default rootfs path with ROOTFS env var'
Override default rootfs path with ROOTFS env var
+ exit 1
fix permissions
wb@ubuntu:~/wirenboard-wbdev/wirenboard$ 

Покажите cat tmp.sh
Подозреваю что не все переменные окружения были заданы на момент его создания.
У меня

cat tmp.sh 
#!/bin/bash
apt-get update
apt-get install -y kpartx zip device-tree-compiler u-boot-tools=2016.11+dfsg1-4 libfdt1 binutils
mount -t devtmpfs none /dev
export ROOTFS=./output/rootfs_wb7x

# нужно удалить эти 3 строки, если rootfs уже была создана ранее и изменена,
# иначе она будет удалена и создана заново!
echo "Create new clean rootfs" 
rm -rf $ROOTFS
WB_RELEASE=stable DEBIAN_RELEASE=stretch /root/rootfs/create_rootfs.sh 7x

echo "Create .fit image"
./image/create_images.sh 7x
echo "fix permissions"
chown 1000 -R ./output/images/
#Uncomment next string for remove script 
#rm tmp.sh