這篇簡短的文檔將引導您完成使用Yocto Project
進行典型鏡像構建的過程。你將使用Yocto Project
構建一個名爲Poky
的參考嵌入式操作系統。
構建主機配置
構建主機要符合如下要求:
- 50 GB的磁盤空間
- 運行一個主流的
Linux
發行版(Fedora, openSUSE, CentOS
, 或者Ubuntu
),我們這裏運行Ubuntu 16.04
Git 1.8.3.1
或者更高版本tar 1.27
或者更高版本Python 3.4.0
或者更高版本
另外還需要按照如下軟件包:
$ 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
使用Git
下載Poky
使用下面的命令克隆Poky
倉庫
$ git clone git://git.yoctoproject.org/poky
Cloning into 'poky'...
remote: Counting objects: 428632, done.
remote: Compressing objects: 100% (101203/101203), done.
remote: Total 428632 (delta 320463), reused 428532 (delta 320363)
Receiving objects: 100% (428632/428632), 153.01 MiB | 12.40 MiB/s, done.
Resolving deltas: 100% (320463/320463), done.
Checking connectivity... done.
進入poky
目錄,看一下所有的tags
$ cd poky
$ git fetch --tags
$ git tag
1.1_M1.final
1.1_M1.rc1
.
.
.
yocto-2.5.2
yocto-2.6
yocto-2.6.1
yocto_1.5_M5.rc8
基於yocto-2.6.1
版本創建分支:
$ git checkout tags/yocto-2.6.1 -b my-yocto-2.6.1
Switched to a new branch 'my-yocto-2.6.1'
構建鏡像
使用以下步驟構建鏡像,構建過程創建整個Linux發行版,包括工具鏈。
- 初始化構建環境:在
poky
目錄中,運行oe-init-build-env
環境設置腳本以在構建主機上定義Yocto Project
的構建環境。
$ cd ~/poky
$ source oe-init-build-env
### 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'
除此之外,該腳本還創建了 構建目錄build
,它位於源目錄poky
中。腳本運行後,您當前的工作目錄將設置爲構建目錄。稍後,當構建完成時,構建目錄包含構建期間創建的所有文件。
- 檢查本地配置文件:在新設置的構建環境裏面,該腳本增加了一個
conf
並且把一個名爲local.conf
的配置文件放在裏面,他是構建環境的主要配置文件。 - 啓動構建:繼續使用以下命令爲目標構建操作系統鏡像,在此示例中使用
core-image-sato
:
$ bitbake core-image-sato
- 使用
QEMU
模擬鏡像:構建此特定鏡像後,您可以啓動QEMU
,它是Yocto
項目附帶的Quick EMUlator
:
$ runqemu qemux86
- 退出
QEMU
: 通過單擊關閉圖標或鍵入Ctrl-C
退出QEMU
。
爲特定硬件定製化構建
到目前爲止,我們只是快速構建一個僅適用於仿真的鏡像。本節介紹如何通過在Yocto Project
開發環境中添加硬件層來自定義特定硬件的構建。
通常,圖層(layer
)是包含相關指令集和配置的存儲庫,這些指令和配置告訴Yocto Project
要執行的操作。將相關元數據隔離到功能特定的層中有助於模塊化開發,並且更容易重用層元數據。
注意
按照慣例,圖層名稱以字符串“meta-”開頭。
請按照以下步驟添加硬件層:
- 查找圖層:
Yocto
項目源存儲庫有許多硬件層。此示例添加了meta-altera
硬件層。 - 克隆圖層: 使用
Git
在您的計算機上製作圖層的本地副本。
$ cd ~/poky
$ git clone https://github.com/kraj/meta-altera.git
Cloning into 'meta-altera'...
remote: Enumerating objects: 92, done.
remote: Counting objects: 100% (92/92), done.
remote: Compressing objects: 100% (62/62), done.
remote: Total 1225 (delta 48), reused 56 (delta 23), pack-reused 1133
Receiving objects: 100% (1225/1225), 170.46 KiB | 0 bytes/s, done.
Resolving deltas: 100% (576/576), done.
Checking connectivity... done.
-
將配置更改爲特定硬件平臺的構建:
local.conf
文件中的MACHINE
變量指定構建的硬件平臺,將MACHINE
變量設置爲"cyclone5"
,使用的配置是:https://github.com/kraj/meta-altera/blob/master/conf/machine/cyclone5.conf. -
將圖層添加到圖層配置文件: 在使用圖層之前,必須將其添加到
bblayers.conf
文件中,該文件位於構建目錄的conf
目錄中。使用bitbake-layers add-layer
命令將圖層添加到配置文件:
$ cd ~/poky/build
$ bitbake-layers add-layer ../meta-altera
NOTE: Starting bitbake server...
Parsing recipes: 100% |##################################################################| Time: 0:00:32
Parsing of 918 .bb files complete (0 cached, 918 parsed). 1401 targets, 123 skipped, 0 masked, 0 errors.
完成這些步驟後,meta-altera
層已添加 到Yocto Project
開發環境中,可以查看bblayers.conf
文件查看:
POKY_BBLAYERS_CONF_VERSION = "2"
BBPATH = "${TOPDIR}"
BBFILES ?= ""
BBLAYERS ?= " \
/home/h310588/yocto_project/poky/meta \
/home/h310588/yocto_project/poky/meta-poky \
/home/h310588/yocto_project/poky/meta-yocto-bsp \
/home/h310588/yocto_project/poky/meta-altera \
"
創建自己的通用圖層
您可以使用該bitbake-layers create-layer
命令創建自己的常規圖層 。
$ cd ~/poky
$ bitbake-layers create-layer meta-mylayer
NOTE: Starting bitbake server...
Add your new layer with 'bitbake-layers add-layer meta-mylayer'
該命令自動創建瞭如下圖層目錄結構:
$ tree meta-mylayer
meta-mylayer
├── conf
│ └── layer.conf
├── COPYING.MIT
├── README
└── recipes-example
└── example
└── example_0.1.bb
3 directories, 4 files