The Yocto Project

5.842 Aufrufe

Veröffentlicht am

Презентация на Български от Open Fest 2015.

Презентацията е насочена към хора, които желаят да използват Yocto и OpenEmbedded, за да разработват системи, които пасват на техните нужди и поддържат специфичен хардуер. С течение на времето Yocto се утвърди като де факто стандарт за вградени системи и преносими устройства. Ще бъде предоставена информация как да се изгради Linux система за вградени устроиства и да се създадат софтуерни приложения за нея.

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

The Yocto Project

  1. 1. The Yocto Project Радослав Колев radoslav@kolev.info Леон Анави leon@anavi.org
  2. 2. Съдържание  Разработка на embedded Linux продукти  Ключови наименования в ОЕ базирани системи  Малко история  Yocto Project и Poky  Примери с OLinuXino
  3. 3. GNU/Linux дистрибуция Приложения Софтуерна рамка (Qt, GTK+, EFL ...) Основни компоненти Linux ядро, драйвери, device tree Boot loader Потребителско пространство
  4. 4. Особености при разработката на embedded Linux продукти  Oбикновено различна архитектура на устройството (target) от тази на станцията за разработка (host)  Нестандартен хардуер: device tree, конфигурация на Linux ядрото, кръпки  Ограничени ресурси, но и ограничена функционалност
  5. 5. Необходими инструменти  Крос компилатор за архитектурата на вграденото устройството  Автоматизация на процеса на сваляне, конфигуриране, прилагане на кръпки и компилиране на множество компоненти  Генериране на root файлова система и image файл в подходящ формат
  6. 6. Популярни системи за създаване на еmbedded Linux дистрибуции КConfig + Makefile базирани: Buildroot, PTXdist, openWrt  Сравнително прости  Не особено гъвкави  Със специфично предназначение (openWrt)
  7. 7. Популярни системи за създаване на еmbedded Linux дистрибуции OpenEmbedded базирани: Poky, Angstrom, Arago, Tizen, AGL, GENIVI  Стръмна крива на разучаване  Гъвкави и с много възможности  Голяма набор от готови компоненти  Индустриален стандарт
  8. 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. 9. Ключови наименования в ОЕ базирани системи  Bitbake  Слоеве  Pецепти  Mашини и BSP (Board Support Package)  Дистрибуция
  10. 10. Какво е Yocto Project? Съвместен проект под егидата на Linux Foundation с отворен код, предоставящ удобни за ползване инструменти за създаване и развитие на embedded Linux дистрибуции.
  11. 11. Open source проекти в Yocto  Pseudo, Swabber  Eclipse plugin, application developer toolkit  Различни GUI/Web UI инструменти  yocto kernel tooling - помощни инструменти за работа с кръпки за ядрото и сегменти от конфигурацията му  Poky  И още, и още...
  12. 12. Poky  Poky - система за изграждане на дистрибуция, използвана от Yocto Project  Bitbake - инструмент за планиране и изпълнение на задачи  Метаданни - дефиниция на задачи Poky = bitbake + метаданни
  13. 13. Yocto/OE слоеве Комерсиален слой (от OSV) UI слой Хардуерно специфичен слой (BSP) Yocto метаданни (meta-yocto) OpenEmbedded метаданни (oe-core) Слой, дефиниран от разработчика
  14. 14. Yocto Project Releases  6 month release cycle  Security patches and bug fixes one release back  Provides both a 'near current' and LTSI kernels  Yocto Project 2.0 Jethro  Yocto Project 1.8 Fido  Yocto Project 1.7 Dizzy  Yocto Project 1.6 Daisy  Yocto Project 1.5 Dora  Yocto Project 1.4 Dylan
  15. 15. Как се ползва Bitbake? bitbake tizen-common-core-image-crosswalk -e | grep ^DISTRO_FEATURES bitbake -s | grep foo bitbake -c compile foo bitbake -g core-image-minimal bitbake foo bitbake -c clean foo  Проверка на стойност на променлива  Проверка на версията на рецепта  Изпълнение на рецепта  Изчистване на рецепта  Компилиране на рецепта  Генериране на файлове за създаване на графика
  16. 16. Как работи bitbake?
  17. 17. Примери с OLinuXino  Open source hardware  A10/A13/A20 Allwinner Technology ARMv7 SoC  Клас Sunxi
  18. 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. 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. 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. 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. 22. Как да създадем нов слой?  Чрез yocto-layer: ./scripts/yocto-layer create openfest
  23. 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. 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. 25. Как да включим нова рецепта?  Ако е необходимо добавяме слоя, съдържащ рецептата в conf/bblayers.conf  Включваме рецептата, към имиджа чрез неговата рецепта или в conf/local.conf: IMAGE_INSTALL_append = " hello "
  26. 26. Полезни връзки  https://www.yoctoproject.org/documentation  http://www.openembedded.org/wiki/Getting_started  http://free-electrons.com/training/yocto/  http://layers.openembedded.org/layerindex/branch/master/lay ers/  https://www.qtdeveloperdays.com/2013/sites/default/files/pres entation_pdf/Yocto%20Project,%20A%20Vehicle%20for %20Embedded%20Qt%20development.pdf
  27. 27. Въпроси?
  28. 28. Благодаря Ви!

×