Yocto Project Quick Build

Yocto Project Quick Build

  1. 使用Yocto Project構建典型的image鏡像
  2. 配置特定硬件的build

Compatible Linux Distribution

肯定編譯機器配置知足以下要求:html

  • 50G的空閒硬盤
  • 運行有一個支持的Linux 發行版(Fedora, openSUSE, CentOS, Debian, or Ubuntu)。
  • 軟件版本要求
    • Git 1.8.3.1 or greater
    • tar 1.27 or greater
    • Python 3.4.0 or greater.

Build Host Packages

在編譯機器上安裝必要的編譯軟件,Ubuntu系統可以使用以下的命令進行安裝:python

$ 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

Use Git to Clone Poky

編譯機器配置完成之後,使用git 命令從Poky上下載代碼,當前以yocto-2.5爲例:git

$ git clone git://git.yoctoproject.org/poky
     Cloning into 'poky'...
     remote: Counting objects: 361782, done.
     remote: Compressing objects: 100% (87100/87100), done.
     remote: Total 361782 (delta 268619), reused 361439 (delta 268277)
     Receiving objects: 100% (361782/361782), 131.94 MiB | 6.88 MiB/s, done.
     Resolving deltas: 100% (268619/268619), done.
     Checking connectivity... done.
     $ git checkout tags/yocto-2.5 -b my-yocto-2.5

Building Your Image

使用以下命令來構建一個image。這個生成過程是從源代碼構建一個包含工具鏈的完整的Linux發行版。github

Note:
編譯過程當中會下載一些東西,若是編譯機器沒有配置代理,那麼在編譯過程當中會報 Git 或 Fetch的問題。

初始化編譯環境:Initialize the Build Environment

運行oe-init-build-env腳本在編譯機器上構建Yocto項目的編譯環境。bash

$source oe-init-build-env

執行這個腳本的時候,遠在源代碼路徑(the Source Directory)下建立構建目錄(the Build Directory)。腳本執行完,當前的工做目錄就被設置成了構建目錄。而後,在以後的編譯過程當中,構建目錄保存和編譯過程當中生成的全部文件。模塊化

測試本地配置文件:Examine Your Local Configuration File

在設置完編編譯環境以後,會在構建目錄的conf文件夾下生成一個local.conf文件。默認,是去編譯一個qemux86的target,這個target適用於當前的模擬器。這裏面所使用的包管理器是RPM包管理器。工具

Tip學習

經過使用鏡像,能夠顯著加快編譯時間病防止fetch問題。在構建目錄的local.conf中加上以下幾行,就能夠使用鏡像。測試

SSTATE_MIRRORS = "\
     file://.* http://sstate.yoctoproject.org/dev/PATH;downloadfilename=PATH \n \
     file://.* http://sstate.yoctoproject.org/2.4/PATH;downloadfilename=PATH \n \
     file://.* http://sstate.yoctoproject.org/2.5/PATH;downloadfilename=PATH \n \
     "

這個事例只展現瞭如何在Yocto項目2.4,2.5和development area中添加sstate path,更詳細的介紹參考:http://sstate.yoctoproject.org/fetch

開始編譯:Start the Build

繼續執行以下的命令,爲咱們制定的target編譯一個OS鏡像,這個例子中,咱們編譯的是:core-iamge-sato

$bitbake core-image-sato

使用QEMU模擬鏡像:Simulate Your Image Using QEMU

一旦鏡像編譯完成,就能夠啓動QEMU。(QEMU是可一個和Yocto 項目一塊兒的快速模擬器)

$runqemu qemux86

若是像學習更多的QEMU,能夠查看( the Yocto Project Development Tasks Manual)以下內容: "Using the Quick EMUlator (QEMU)".

退出QEMU:Exit QEMU

點擊QEMU窗口的關閉按鈕或 Ctrl-C就能夠退出QEMU。

爲特定硬件定製編譯:Customizing Your Build for Specific Hardware

通常來講,layers是包含相關指令集和配置的庫,他告訴Yocto Project要作什麼。將相關的元數據隔離在功能特定的層中有助於模塊化開發,並更容易重用層中的元數據。

Note 方便起見,layers一般以「meta-」命名。

按照以下步驟能夠新增一個硬件層。

找一個Layer:Find a Layer

Yocto Project的源碼庫中有不少硬件層.當前以meta-altera爲例。

複製這個Layer:Clone the Layer

經過git命令,將這個git庫clone到本地。放在以前poky庫的頂層。

$ cd ~/poky
     $ git clone https://github.com/kraj/meta-altera.git
     Cloning into 'meta-altera'...
     remote: Counting objects: 25170, done.
     remote: Compressing objects: 100% (350/350), done.
     remote: Total 25170 (delta 645), reused 719 (delta 538), pack-reused 24219
     Receiving objects: 100% (25170/25170), 41.02 MiB | 1.64 MiB/s, done.
     Resolving deltas: 100% (13385/13385), done.
     Checking connectivity... done.

這時,這個硬件層,就和其餘層同樣存在編譯機器的Poky庫下面了,而且包含了altera硬件所須要的所有元數據。Altera是歸Intel全部的。

爲特定機器配置編譯:Change the Configuration to Build for a Specific Machine

local.conf文件中的「MACHINE」變量,指定了編譯生成的機器。這個例子中,「MACHINE」是"cyclones「。如今這個配置在:conf/machine/cyclone5.conf.

將你的層添加到層配置文件中:Add Your Layer to the Layer Configuration File

在編譯過程你使用一個層以前,必須將這個層添加到構建路徑的bblayers.conf文件中。

使用bitbake-layers add-layer命令將這個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.

添加layer的詳細信息在以下位置:Adding a Layer Using the bitbake-layers Script

按照這些步驟完成以後,你當前的Yocto Project開發環境中就添加了meta-altera層,並能夠執行cyclone5的編譯。

查看Altera的README能夠幫助你編譯一個cyclone5的image。

建立本身的Layer:Creating Your Own General Layer

也許你有一個應用程序或者你須要隔離一組特定的行爲,你能夠使用bitbake-layers create-layer來建立本身的通用層。這個工具自動建立一個包含layer.conf配置文件的目錄,這個recipes-example子目錄裏面包含example.bb recipes文件,licensing文件和README。

命令以下:

$cd ~/poky
     $bitbake-layers create-layer meta-mylayer
     NOTE: Starting bitbake server...
     Add your new layer with 'bitbake-layers add-layer meta-mylayer'

更多詳細信息能夠參考Creating a General Layer Using the bitbake-layers Script

相關文章
相關標籤/搜索