Yocto2.4.2項目搭建
本文檔適用於centos7系統
該項目支持的系統
ubuntu
Ubuntu 14.04 (LTS)、Ubuntu 14.10、Ubuntu 15.04、Ubuntu 15.10Ubuntu 16.04
Fedora
Fedora release 22Fedora release 23、Fedora release 24
CentOS
Centos7.x
Debian
Debian GNU/Linux 8.x (Jessie)、Debian GNU/Linux 9.x (Stretch)
openSUSE
openSUSE 13.2、openSUSE 42.1
依賴軟件要求
Git>=1.8.3.1
、tar>=1.27
、Python>=3.4.0
搭建項目之前需要安裝的軟件點擊查詢具體信息
Ubuntu and Debian
- 1
- 2
- 3
Fedora
- 1
- 2
- 3
- 4
OpenSUSE
- 1
- 2
- 3
CentOS
- 1
- 2
- 3
- 4
- 5
- 6
- 7
下載poky項目,如下所示:
- 1
Yocto編譯鏡像文件
1. 為emulator (QEMU) 編譯鏡像
Yocto項目搭建
獲取對應的分支
- 1
- 2
初始化編譯環境
用法如下
- 1
其中
your_build_path
設置的編譯路徑,默認為”~/poky/build”執行之後的輸出結果如下所示:
- 1
- 2
- 3
- 4
- 5
- 6
根據提示你可以選址編譯對應的對象,點擊查詢不同鏡像的介紹
編輯local.conf文件以及校驗文件的正確性
- 當執行編譯環境初始化之後,在對應的編譯路徑中就會創建,在編譯路徑下的conf目錄下會產生local.conf配置文件
- local.conf配置文件相關配置說明
- local.conf配置如何加速編譯
開始編譯
命令如下所示:
- 1
用QEMU模擬鏡像
使用命令如下所示:
- 1
退出QEMU
- 使用
Ctrl-C
或者點擊退出圖標
- 使用
2. 為硬件編譯鏡像
Yocto項目搭建
創建本地的
meta-intel
倉庫進入本地poky目錄
- 1
克隆遠程倉庫在poky目錄下
- 1
進入
meta-intel
目錄,並且檢出8.0-rocko-2.4.2
分支,如下所示:- 1
- 2
初始化編譯環境
用法如下
- 1
其中
your_build_path
設置的編譯路徑,默認為”~/poky/build”執行之後的輸出結果如下所示:
- 1
- 2
- 3
- 4
- 5
- 6
根據提示你可以選址編譯對應的對象,點擊查詢不同鏡像的介紹
配置編譯信息,需要編譯
bblayer.conf
以及local.conf
文件,這兩個文件都在build/conf中添加layer信息
- 1
- 2
編輯local.conf文件
- 修改machine的信息如下所示:
- 1
- 可以修改為對應的32位的
選擇需要編譯的基礎鏡像
- 具體命令如下所示:
- 1
- 如果編譯成功,會在編譯目錄中查看到如下文件:
- 1
寫入鏡像
你可以使用
dd
工具將鏡像寫入到可引導媒體中(如USB、SATA驅動器、SD card等),具體命令如下:- 1
其中
TARGET_DEVICE
是對應的設備節點(如:/etc/sdc
或者/dev/mmcblk0
)
硬件啟動
可以將可引導媒體插入到嵌入式開發板(MinnowBoard Turbot)中並且啟動。開發板會自動檢測可引導媒體並且加載到引導程序安裝系統
如果開發板沒有自動引導,可以從EFI shell中引導,具體引導信息如下:
- 64 位的引導如下:
- 1
- 2
- 3
- 4
- 32位的引導如下:
- 1
- 2
- 3
- 4
開發中的一些概念
這裡會有更詳細的介紹開發流程。下面這張圖更好的說明了了在開發中的流程。
- 總的來說,開發包括了以下幾塊
- User Configuration :配置的元數據可以控制編譯過程。
- Metadata Layers:對於software、machine以及distro MetaData提供不同的層
- Source Files:本地項目、SCM或者Upstream releases
- Build System:這個模塊擴展了BitBake獲取源、應用補丁、完成編譯、分析包生成的輸出、創建和測試包、生成圖像和生成跨開發工具。
- Package Feeds:包含輸出包(RPM、DEB或IPK)的目錄,這些目錄隨後用於構建系統生成的圖像或SDK。
- Images:開發過程產生鏡像
- Application Development SDK:開發過程中使用的開發工具
1. User configuration
通過配置會告訴BitBake 對應的構建鏡像中在哪裡存儲下載的源碼以及其他的構建信息的體系結構。
下圖顯示了Yocto項目開發環境的“User configuration”的結構:
BitBake需要一些基本的
*.conf
配置文件來完成編譯meta-poky
中包含了Poky的conf路徑的配置文件。這些配置文件是最基本的配置。當你是環境腳本生效的時候,就會創建編譯目錄(不存在的則創建,存在就不創建)。BitBake在整個編譯期間都會使用這個目錄來執行它所有的任務。在編譯目錄中,會有一個
conf
目錄,其中會有默認的local.conf
和bblayers.conf
配置文件。根據腳本來源的不同,調用不同的子腳本以建立構建目錄(Yocto或OpenEmbedded)。具體地說,poky目錄中的腳本script/oe-setup-builddir設置了構建目錄,並為Yocto項目開發環境的配置文件提供了目錄。
配置信息可以在conf/local.conf、conf/site.conf、conf/auto/conf文件中
bblayers.conf
- bblayers.conf配置告訴BitBake在編譯的時候採用那一個layer
site.conf和auto.conf
這兩個文件在執行環境初始化的時候,不會創建,需要自己創建
site.conf
可以用於配置多編譯路徑
auto.cof
功能跟local.conf一樣的
執行順序
- 先執行auto.conf然後在執行local.conf,如果有相同變量,不同的值,取local.conf的結果。
2. Metadata, Machine Configuration, and Policy Configuration
Policy Configuration:
- 當鏡像或者sdk在構建的時候,Distribution Layers提供頂級或者一般策略,如:決定BitBake使用RPM或者IPK包。
Machine Configuration :
BSP
layer提供machine配置Metadata:Software layer包含需要應用的recip文件, patches, and append files.
下面這張如展示了Metadata, Machine Configuration, and Policy Configuration
所有的layer都有相似的結構,包含許可文件,README文件,配置目錄以及recipe 目錄
local.conf配置文件詳解
- 常見的配置描述
名稱 | 示例 | 描述 |
---|---|---|
MACHINE | MACHINE ?= “qemux86” | 選擇目標機器更多介紹 |
DL_DIR | 下載目錄 | |
SSTATE_DIR | Shared State Directory | |
CORE_IMAGE_EXTRA_INSTALL | CORE_IMAGE_EXTRA_INSTALL += “openssh” | 需要安裝的軟件 |
EXTRA_IMAGE_FEATURES | EXTRA_IMAGE_FEATURES ?= “debug-tweaks” | 安裝軟件 |
IMAGE_INSTALL_append | IMAGE_INSTALL_append = ” package-name” | 安裝軟件 |
TMPDIR | TMPDIR = “${TOPDIR}/tmp” | 構建目錄中使用的輸出目錄 |
PACKAGE_CLASSES | PACKAGE_CLASSES ?= “package_rpm” | OE構建使用哪種打包文件 |
USER_CLASSES | USER_CLASSES ?= “buildstats image-mklibs image-prelink” | |
OE_TERMINAL | OE_TERMINAL = “auto” | 系統終端選擇,包括: auto、gnome、xfce、rxvt 、screen、konsole、none |
PATCHRESOLVE | PATCHRESOLVE = “noop” | |
BB_DISKMON_DIRS | BB_DISKMON_DIRS = “ABORT,{SSTATE_DIR},1G,100K” | 監控硬盤空間以及inodes |
- 並發選項
名稱 | 描述 |
---|---|
BB_NUMBER_THREADS | 在同一時間BitBake最大任務數。默認為4 |
PARALLEL_MAKE | 執行do_cimpile 任務(完成並發編譯)的最大並發 |
PARALLEL_MAKEINST | 執行do_install 任務的最大並發 |
BB_NUMBER_PARSE_THREADS | 設置BitBake使用的線程數 |
不同基礎鏡像的比較
鏡像名稱 | 鏡像介紹 |
---|---|
build-appliance-image | 一個示例虛擬機,包含使用構建系統以及構建系統本身運行構建所需的所有片段。您可以使用VMware Player或VMware Workstation啟動並運行鏡像 |
core-image-base | 僅支持控制台的鏡像,完全支持目標設備硬件 |
core-image-clutter | 支持基於Open GL的工具包Clutter的圖像,支持開發豐富和動畫的圖形用戶界面。 |
core-image-full-cmdline | 僅安裝了控制台的鏡像,其中安裝了更多全功能的Linux系統功能。 |
core-image-lsb | 符合Linux標準基礎(LSB)規範的圖像。 |
core-image-lsb-dev | 適合開發的core-image-lsb鏡像 |
core-image-lsb-sdk | 一個core-image-lsb鏡像,它包含了cross-toolchain中的所有內容,同時還包含開發頭文件和庫以形成一個完整的獨立SDK。 |
core-image-minimal | 一個小鏡像,只是允許設備啟動。 |
core-image-minimal-dev | 適合進行開發的core-image-minimal鏡像 |
core-image-minimal-initramfs | 它具有最小的基於RAM的初始根文件系統(initramfs)作為內核的一部分,這使得系統可以更高效地找到第一個“init”程序 |
core-image-minimal-mtdutils | 支持Minimal MTD實用程序的core-image-minimal鏡像,可讓用戶與內核中的MTD子系統進行交互,以在閃存設備上執行操作。 |
core-image-rt | |
core-image-rt-sdk | |
core-image-sato | 鏡像支持sato,可與移動設備配合使用的移動環境和視覺風格。該圖像支持帶有Sato主題的X11以及諸如終端,編輯器,文件管理器,媒體播放器等應用程序。 |
core-image-sato-dev | 適合進行開發的core-image-sato鏡像 |
core-image-sato-sdk | 包含cross-toolchain中所有內容的core-image-sato鏡像。該映像還包含開發頭文件和庫,以形成一個完整的獨立SDK,並適合使用目標進行開發。 |
core-image-testmaster | 設計用於自動運行時測試的“master”映像。提供部署到單獨分區的“know good”映像,以便引導其進入並使用它來部署要測試的第二個映像 |
core-image-testmaster-initramfs | 使用core-image-testmaster映像作為基於RAM的初始根文件系統(initramfs)鏡像。 |
core-image-weston | 帶有終端的基本的Wayland鏡像。該鏡像提供Wayland協議庫和參考Weston合成器 |
core-image-x11 | 帶有終端的非常基礎的X11鏡像 |
Layer的理解與創建
Layer就是針對不同的層或者不同的模塊創建對應的配置,如:針對machine以及GUI環境可以配置對應的信息。可以在
meta, meta-skeleton, meta-selftest, meta-poky, and meta-yocto-bsp
中查看不同的layer。創建自己的Layer
可以通過項目中的腳本去創建,可以使用yocto-bsp腳本創建一個BSP layer。查看
方式1
查看是否存在Layer
在創建一個新的layer的時候,應該確認還沒有創建一個圖層包含你所需要的metadata
創建一個目錄
為新的layer創建目錄,例如: meta-mylayer、meta-GUI_xyz、meta-mymachine
創建layer配置文件
在新創建的layer文件夾中,創建
conf/layer.conf
文件,你可以直接複製一個存在的layer的conf
目錄,在對其修改使用創建好的layer
將layer的路徑添加到構建路徑(build Directory)中的
conf/bblayers.conf
文件,如下所示:- 1
- 2
- 3
- 4
- 5
方式2
利用
bitbake-layer
命令創建layer- 1
將創建好的layer添加到配置中(bblayers.conf)
- 1
獲取更多layer的方式
資料來源: https://blog.csdn.net/qq_21178933/article/details/80081898
沒有留言:
張貼留言