Yocto實踐(1): 基於Dunfell 構建Yocto專案
因為工作中很多時候需要基於Yocto來改程式碼、編譯SDK,很久之前就想徹底搞明白Yocto的理念、整個構建的細節。
現在開坑,基於Yocto官方文件,以實踐記錄+網路資料整理的方式,希望加深對Yocto的理解。
操作基於2020年4月份發行的3.1版本(Dunfell)。 Yocto的版本release記錄:https://wiki.yoctoproject.org/wiki/Releases
系統要求:參考Yocto官方的參考文件https://www.yoctoproject.org/docs/current/brief-yoctoprojectqs/brief-yoctoprojectqs.html PC最好是Linux發行版,要求如下:
硬碟:至少50GB
發行版:最近的Fedora, openSUSE, CentOS, Debian, or Ubuntu
常用工具:
-
Git 1.8.3.1 or greater
-
tar 1.28 or greater
-
Python 3.5.0 or greater.
-
gcc 5.0 or greater.
需要安裝如下軟體包(我用的是Ubuntu 18.04, 以Ubuntu18.04為例。其他發行版請參考上面的連結):
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \
xz-utils debianutils iputils-ping libsdl1.2-dev xterm
獲取Poky:
$ git clone git://git.yoctoproject.org/poky
Cloning into 'poky'...
remote: Counting objects: 432160, done.
remote: Compressing objects: 100% (102056/102056), done.
remote: Total 432160 (delta 323116), reused 432037 (delta 323000)
Receiving objects: 100% (432160/432160), 153.81 MiB | 8.54 MiB/s, done.
Resolving deltas: 100% (323116/323116), done.
Checking connectivity... done.
下載完成後會得到一個Poky資料夾。從這個資料夾裡可以看到Git commit history。你可以在預設的分支上構建你的系統,也可以新建一個分支。如下:
$ git checkout tags/yocto-3.1 -b csdn1013-yocto-3.1
Switched to a new branch 'csdn1013-yocto-3.1'
~/poky$ git branch
* csdn1013-yocto-3.1
dunfell
開始構建
1. 首先需要初始化編譯環境source oe-init-build-env
~/poky$ source oe-init-build-env
You had no conf/local.conf file. This configuration file has therefore been
created for you with some default values. You may wish to edit it to, for
example, select a different MACHINE (target hardware). See conf/local.conf
for more information as common configuration options are commented.
You had no conf/bblayers.conf file. This configuration file has therefore been
created for you with some default values. To add additional metadata layers
into your configuration please add entries to conf/bblayers.conf.
The Yocto Project has extensive documentation about OE including a reference
manual which can be found at:
http://yoctoproject.org/documentation
For more information about OpenEmbedded see their website:
http://www.openembedded.org/
### Shell environment set up for builds. ###
You can now run 'bitbake <target>'
Common targets are:
core-image-minimal
core-image-sato
meta-toolchain
meta-ide-support
You can also run generated qemu images with a command like 'runqemu qemux86'
Other commonly useful commands are:
- 'devtool' and 'recipetool' handle common recipe tasks
- 'bitbake-layers' handles common layer tasks
- 'oe-pkgdata-util' handles common target package tasks
如上面提示,現在通過bitbake編譯工具可以編譯一些目標image了:
core-image-minimal
core-image-sato
meta-toolchain
meta-ide-support
$bitbake core-image-sato
相關文章
- Yocto 介紹
- yocto-名詞介紹
- Yocto專案介紹及入門 -- 嵌入師工程師必備利器工程師
- 修改yocto系統啟動logoGo
- systemd - yocto linux如何整合&配置systemdLinux
- 基於Ceph物件儲存構建實踐物件
- 用mobx構建大型專案的最佳實踐
- Webpack 4 構建大型專案實踐 / 微前端Web前端
- Webpack 4 構建大型專案實踐 / 優化Web優化
- 【快速學習】docker構建java專案實踐DockerJava
- yocto-第20篇-Toaster使用技巧(3)-待續AST
- 使用cordova構建基於vue的Android專案VueAndroid
- 微服務專案實踐之中建專案微服務
- 用mobx構建大型專案的最佳實踐(2)
- Idea下構建基於Gradle的Spring Boot專案IdeaGradleSpring Boot
- eclipse中基於maven構建多模組專案EclipseMaven
- 基於Jetpack元件構建的開源專案-WanLearningJetpack元件
- 基於 OPLG 從 0 到 1 構建統一可觀測平臺實踐
- Vue專案Webpack優化實踐,構建效率提高50%VueWeb優化
- 構建第一個基於 Gradle 的 Spring Boot 專案GradleSpring Boot
- 快手基於 Flink 構建實時數倉場景化實踐
- 基於lerna+yarn workspaces的monorepo專案實踐YarnMono
- 多利熊基於分散式架構實踐穩定性建設分散式架構
- Uber基於Apache Hudi構建PB級資料湖實踐Apache
- ABAP system landscape和vue專案webpack構建的最佳實踐VueWeb
- Git 工作流-基於 x 想 cube 專案實踐Git
- 構建與定製:唯品會PaaS基於Kubernetes的實踐
- 基於 Nebula Graph 構建百億關係知識圖譜實踐
- 基於Kafka和Elasticsearch構建實時站內搜尋功能的實踐KafkaElasticsearch
- 銀行基於雲原生架構的 DevOps 建設實踐經驗架構dev
- 設計專案全生命週期管理系統構建與實踐
- uoj專案部署的學習實踐和基於JUnit進行的專案測試
- 基於nuxt和iview搭建OM後臺管理系統實踐-專案簡要介紹(1)UXView
- Laravel 專案:使用 TDD 構建論壇 Chapter 1LaravelAPT
- eBay 基於 Apache Kyuubi 構建統一 Serverless Spark 閘道器的實踐ApacheServerSpark
- Azure Devops實踐(5)- 構建springboot專案打包docker映象及容器化部署devSpring BootDocker
- ASP.NET Core MVC專案基礎構建ASP.NETMVC
- 阿里雲的“終端雲化”實踐,基於ENS進行邊緣架構構建阿里架構