Рубрики
dev

yocto project / debian 11 / raspberry pi

Ссылки:

https://autobuilder.yoctoproject.org/typhoon/#/ - имиджи,  билды
https://docs.yoctoproject.org/2.5/mega-manual/mega-manual.html - хороший мануал от разработчиков yocto
https://www.yoctoproject.org/
https://layers.openembedded.org/layerindex/branch/master/layers/
https://git.yoctoproject.org/
https://youtu.be/EVQ47PvlORE - не плохое видео на тему установки и настройки yocto 
https://www.embeddedts.com/blog/building-a-yocto-image-for-nxp-i-mx6-products/
https://docs.yoctoproject.org/brief-yoctoprojectqs/index.html

https://wiki.yoctoproject.org/wiki/Main_Page



https://docs.yoctoproject.org/2.1/ref-manual/ref-manual.html#ref-images
https://docs.yoctoproject.org/2.1/bitbake-user-manual/bitbake-user-manual.html#bitbake-user-manual-command
https://docs.yoctoproject.org/2.1/ref-manual/ref-manual.html#var-PACKAGE_CLASSES
https://docs.yoctoproject.org/2.1/dev-manual/dev-manual.html#dev-manual-newbie
https://docs.yoctoproject.org/2.1/dev-manual/dev-manual.html#dev-manual-model
https://docs.yoctoproject.org/2.1/dev-manual/dev-manual.html#dev-manual-intro

Требования:

50 свободное место под yocto (на самом деле 150+ желательно, зависит от проекта)
Рекомендованные дистрибутивы linux: Fedora, openSUSE, CentOS, Debian, Ubuntu
Git 1.8.3.1 или выше
tar 1.27 или выше
Python 3.4.0 или выше

Добавляем родные репы в /etc/apt/source.list:

deb http://deb.debian.org/debian bullseye main contrib non-free
deb-src http://deb.debian.org/debian bullseye main contrib non-free
 
deb http://deb.debian.org/debian-security/ bullseye-security main contrib non-free
deb-src http://deb.debian.org/debian-security/ bullseye-security main contrib non-free
 
deb http://deb.debian.org/debian bullseye-updates main contrib non-free
deb-src http://deb.debian.org/debian bullseye-updates main contrib non-free
 
deb http://deb.debian.org/debian bullseye-backports main contrib non-free
deb-src http://deb.debian.org/debian bullseye-backports main contrib non-free

отключаем ipv6 / мне он там не нужен (:

0. Добавляем в конец
vim /etc/sysctl.conf 
---------------------
#disable ipv6 settins
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.enp1s0.disable_ipv6 = 1
--------------------
Сохраняем файл.
 
1. Применяем:
sysctl -p

Для удобства доступа к серверу yocto:

0. что бы не водить пароли на своем ПК можно сгенерировать ключ и отправить публичный ключ на будущий сервер yocto
ssh-keygen - генерируем ключи
ssh-copy-id user@ip - копирование публичного ключа

1. что бы каждый раз не вводить пароли при sudo можно разрешить
visudo
-----------------
... <-- какой то текст выше
# User privilege specification
root    ALL=(ALL:ALL) ALL
user  ALL=(ALL) NOPASSWD: ALL  <--- пишем примерно следующие, где user, ваш пользователь
... <-- какой то текст ниже 
-----------------

2. Добавление пользователя в группу root
usermod -aG sudo user

4. Настройки для vim 
cat > ~/.vimrc << "EOF"
"color blue
"color evening
color morning
set mouse=v
syntax on
EOF

5. Добавление swap / я создаю виртуалки без раздела подкачки
fallocate -l 1G /.swap
chmod 600 /.swap
mkswap /.swap
echo '/.swap none swap defaults 0 0' >> /etc/fstab
swapon /.swap

Установка необходимых пакетов для yocto на debian 11:

apt install vim sudo gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pyelftools python3-pexpect xz-utils debianutils iputils-ping libsdl1.2-dev xterm

Версия python 3+ по умолчанию:

update-alternatives --list python - проверяем
update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1

Для любителей поставить русскую local нужно добавить еще local en_US.UTF-8:

0. vim /etc/locale.gen
-------------------
en_US.UTF-8           <---------- найти и раскоментить
------------------

1. Перечитать local:
locale-gen

На этом все, теперь у вас должна появится local en_US.UTF-8

Установка yocto:

0. В домашнем каталоге создаем каталог yocto и входим в него 
mkdir yocto
cd yocto

1. Создаем каталог и начинаем скачивать пакеты для сборки yocto
mkdir sources
cd sources
git clone git://git.yoctoproject.org/poky -b dunfell
git clone git://git.yoctoproject.org/meta-raspberrypi -b dunfell
git clone https://git.openembedded.org/meta-openembedded -b dunfell

2. Выполняем инициализацию окружения
!!! после применения команд ниже будет создан каталог build
!!! если мы хотим использовать свое имя для каталога build то вводим ". sources/poky/oe-init-build-env YOU_NAME"
cd ~/yocto
. sources/poky/oe-init-build-env


3. настраиваем слои:
!!! Внимание вот тут может быть косяк с путями до файлов
!!! сама yocta в этом файле генерирует прямые пути до файлов
vim conf/bblayers.conf
----------------------
# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
POKY_BBLAYERS_CONF_VERSION = "2"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " 
  ${TOPDIR}/../yocto/sources/poky/meta 
  ${TOPDIR}/../yocto/sources/poky/meta-poky 
  ${TOPDIR}/../yocto/sources/poky/meta-yocto-bsp 
  ${TOPDIR}/../yocto/sources/meta-raspberrypi 
  ${TOPDIR}/../yocto/sources/meta-openembedded/meta-oe 
  ${TOPDIR}/../yocto/sources/meta-openembedded/meta-networking 
  ${TOPDIR}/../yocto/sources/meta-openembedded/meta-python 
  "
----------------------

4. Устройство для которого мы собираем сборку yocto
Редактируем файл:
vim conf/local.conf
-------------------
#MACHINE ??= "qemux86-64" - эту строку мы комментируем
MACHINE ?= "raspberrypi0-wifi" - добавляем рядом  само имя мы нашли на сайте yocto
DISTRO ?= "poky" - используемый дистрибутив, пока не трогаем
-------------------


5. Преступая к сборке инфа
core-image-sato - будет собран дистрибутив с GUI
core-image-base - базовая версия
core-image-minimal - что то там минимальное

6. Сборка
cd ~/yocto
bitbake core-image-base

7. После сборки:
файлы .bz2 (.wic) sdimg
Собранное искать в каталоге yocto/build/tmp/deploy/images/raspberrypi0-wifi

8. Пример записи на sd карту:
dd if=tmp/deploy/images/raspberrypi3-64/core-image-base-raspberrypi3-64.rpi-sdimg of=/dev/sdX
dd if=core-image-minimal-raspberrypi0-wifi.wic of=/dev/sdh bs=1M


Добавить слой:

Чтобы добавить слой в файл конфигурации:
bitbake-layers add-layer