Презентация на Български от Open Fest 2015.
Презентацията е насочена към хора, които желаят да използват Yocto и OpenEmbedded, за да разработват системи, които пасват на техните нужди и поддържат специфичен хардуер. С течение на времето Yocto се утвърди като де факто стандарт за вградени системи и преносими устройства. Ще бъде предоставена информация как да се изгради Linux система за вградени устроиства и да се създадат софтуерни приложения за нея.
2. Съдържание
Разработка на embedded Linux продукти
Ключови наименования в ОЕ базирани системи
Малко история
Yocto Project и Poky
Примери с OLinuXino
4. Особености при разработката
на embedded Linux продукти
Oбикновено различна архитектура на устройството
(target) от тази на станцията за разработка (host)
Нестандартен хардуер: device tree,
конфигурация на Linux ядрото, кръпки
Ограничени ресурси, но и ограничена функционалност
5. Необходими инструменти
Крос компилатор за архитектурата на
вграденото устройството
Автоматизация на процеса на сваляне,
конфигуриране, прилагане на кръпки и
компилиране на множество компоненти
Генериране на root файлова система и
image файл в подходящ формат
6. Популярни системи за създаване
на еmbedded Linux дистрибуции
КConfig + Makefile базирани:
Buildroot, PTXdist, openWrt
Сравнително прости
Не особено гъвкави
Със специфично предназначение (openWrt)
7. Популярни системи за създаване
на еmbedded Linux дистрибуции
OpenEmbedded базирани:
Poky, Angstrom, Arago, Tizen, AGL, GENIVI
Стръмна крива на разучаване
Гъвкави и с много възможности
Голяма набор от готови компоненти
Индустриален стандарт
8. Малко история
2002 - 2003 2004
Openembedded
като система за
създаване на
OpenZaurus
Отделяне на bitbake
и Openembedded
мета данни
OpenedHand
cъздава Poky Linux
2006 - 2008
2008 2010
Intel купува
OpenHand
Linux Foundation
създава the Yocto
Project
Започва работа по
обща база oe-core
2011
9. Ключови наименования в ОЕ
базирани системи
Bitbake
Слоеве
Pецепти
Mашини и BSP (Board Support Package)
Дистрибуция
10. Какво е Yocto Project?
Съвместен проект под егидата на Linux
Foundation с отворен код, предоставящ
удобни за ползване инструменти за
създаване и развитие на embedded Linux
дистрибуции.
11. Open source проекти в Yocto
Pseudo, Swabber
Eclipse plugin, application developer toolkit
Различни GUI/Web UI инструменти
yocto kernel tooling - помощни инструменти за работа
с кръпки за ядрото и сегменти от конфигурацията му
Poky
И още, и още...
12. Poky
Poky - система за изграждане на дистрибуция,
използвана от Yocto Project
Bitbake - инструмент за планиране и
изпълнение на задачи
Метаданни - дефиниция на задачи
Poky = bitbake + метаданни
17. Примери с OLinuXino
Open source hardware
A10/A13/A20 Allwinner Technology ARMv7 SoC
Клас Sunxi
18. Как да си направим имидж за
OlinuXino в три стъпки? (1/3)
Сваляме Poky:
Добяваме слоя meta-sunxi:
Инициализираме средата в директория build:
git clone -b fido git://git.yoctoproject.org/poky.git
cd poky
git clone -b fido https://github.com/linux-sunxi/meta-sunxi.git
source oe-init-build-env
19. Как да си направим имидж за
OlinuXino в три стъпки? (2/3)
Редактираме conf/local.conf:
Редактираме conf/bblayers.conf:
MACHINE ??= "olinuxino-a20"
PARALLEL_MAKE ?= "-j 12"
BB_NUMBER_THREADS ?= "12"
BBLAYERS ?= "
/home/leon/poky-olinuxino/meta
/home/leon/poky-olinuxino/meta-sunxi
/home/leon/poky-olinuxino/meta-yocto
20. Как да си направим имидж за
OlinuXino в три стъпки? (1/3)
Сваляме Poky:
Добяваме слоя meta-sunxi:
Инициализираме средата в директория build:
git clone -b fido git://git.yoctoproject.org/poky.git
cd poky
git clone -b fido https://github.com/linux-sunxi/meta-sunxi.git
source oe-init-build-env
21. Как да си направим имидж за
OlinuXino в три стъпки? (3/3)
Стартираме bitbake:
Пием едно, две или повече кафета...
Копираме имиджа на microSD карта с dd или bmaptool:
bitbake core-image-minimal
sudo umount /dev/sdX
sudo dd if=tmp/deploy/images/olinuxino-a20/core-image-minimal-olinuxino-a20.sunxi-sdimg of=/dev/sdX
sync
22. Как да създадем нов слой?
Чрез yocto-layer:
./scripts/yocto-layer create openfest
23. Как да създадем нова рецепта?
Създаваме нов файл с име от типа на:
Създаваме рецепта по следния шаблон:
<basename>_<version>.bb
SUMMARY = ""
HOMEPAGE = ""
LICENSE = ""
LIC_FILES_CHKSUM = ""
SRC_URI = ""
SRC_URI[md5sum] = ""
SRC_URI[sha256sum] = ""
S = "${WORKDIR}/${PN}-${PV}"
inherit <stuff>
24. Как да разширим съществуваща
рецепта?
Създаваме файл с разширение .bbappend:
Пример за кръпка с промяна в кода:
Пример за добавяне на нов файл:
<basename>_<version>.bbappend
FILESEXTRAPATHS_prepend := "{THISDIR}/${PN}:${PV}:"
SRC_URI += "file://mypatch.patch"
SRC_URI += "file://my.conf"
do_install_append() {
install -m 644 ${WORKDIR}/my.conf ${D}${sysconfdir}
}
25. Как да включим нова рецепта?
Ако е необходимо добавяме слоя, съдържащ
рецептата в conf/bblayers.conf
Включваме рецептата, към имиджа чрез неговата
рецепта или в conf/local.conf:
IMAGE_INSTALL_append = " hello "