上一篇介紹了 Yocto 的環境與安裝方式,最後提到了 local.conf 與 bblayer.conf,今天會從這裡開始說明
在這個 build 目錄當中 最重要的就是 bblayers.conf 與 local.conf 。先說明 local.conf 的用途,他是最主要的設定文件。
在 local.conf 當中 開頭為 # 是註解
變數名稱 | Default 值 | 說明 |
---|---|---|
BB_NUMBER_THREADS | ${@bb.utils.cpu_count()} | 可以同時執行的 BitBake 任務數量 |
PARALLEL_MAKE | -j ${@bb.utils.cpu_count() } | 可以同時進行的Make Process 數量 |
MACHINE | qemux86 | 目標機器 |
DL_DIR | ${TOPDIR}/downloads | source code下載的存放目錄 |
SSTATE_DIR | ${TOPDIR}/sstate_cache | 共享狀態的暫存檔案目錄 |
TMP_DIR | ${TOPDIR}/tmp | 編譯輸出的目錄 |
BB_NUMBER_THREADS & PARALLEL_MAKE
這兩個選項是用目前所有的可用核心的數量自動計算的,可以設定的比較少來限制電腦的loading , 設定的超過電腦的核心數量不會比較快。
MACHINE
這是用於選擇我們要構建的目標系統,可以透過額外的BSP包來新增機器
DL_DIR 告訴 BitBake 把下載Sorce放在哪個地方
SSTATE_DIR : 共享狀態緩存的路徑
TMP_DIR : 這裡會存放非常多跟建構時有關的檔案,當編譯完後其實會佔很大的容量。
這個設定檔我們不會去手動修改他,但他最主要的目的是將我們的 layer 給加入到其中,yocto 當中的 bitbake 就可以透過這個 conf 來得知這一次我們要編譯哪些layer。後續說明指令時會介紹到這部分。
當中會放著有關 Layers 的資料 , 像是 BBLAYERS 這個變數會存放我們每一個layers 的路徑
同時在每一個 layers 當中都可以在 conf / layer.conf 的檔案。
這個layer 的名字就叫做 layer1,優先等級 6 (數字越大優先程度越高,最大99)
。 開頭是 meta-xxx 的都是 layer
。 開頭是 recipe-xxx 的都是 recipe
├── bitbake--主要包含bitbake腳本,作為Metadata解析器,讀取Yocto Metadata並執行其定義的task。
├── build--主要包含使用者設定文件,並將編譯輸出到此目錄。
├── contrib--
├── documentation--幫助文檔,可以產生pdf或html版本使用者手冊。
├── LICENSE-- License聲明。
├── LICENSE.GPL - 2.0 - only
├── LICENSE.MIT
├── MEMORIAM
├- meta--對應OpenEmbedded-Core的Metadata,包含Recipes、Classes,以及qemux86/qemuarm的機器配置。
├── meta - poky--在meta目錄基礎上,增加Poky參考發布版本的必須Metadata。
├── meta - selftest-- OpenEmbedded驗證編譯系統的selftest的Recipes和Append檔。
├── meta - skeleton-- BSP和Kernel開發的Recipes模板。
├── meta -yocto- bsp-- Yocto計畫的參考BSP Metadata。
├── oe -init-build- env--設定OpenEmbedded編譯環境的腳本。
├── README.hardware -> meta-yocto-bsp/ README.hardware
├── README.OE - Core
├── README.poky -> meta-poky/ README.poky
├── README.qemu
└── scripts-- Yocto專案附加功能所需的腳本。
前面的文章有說明過這張圖,但在這我還是說明一下~
在整個build目錄的最上層資料夾輸入下方指令
bitbake <build-target>
#####範例
bitbake core-image-minimal
這個 bitbake 就是我們所說的任務引擎,用於替我們編譯檔案。 core-image-minimal 則是最基本的image,還有預設一些其他的,可以根據需求來改變。這個 image 就跟名字一樣,他是最小化的 image,容量是最小的蛋缺點就是有非常多東西是沒有的,我們需要自己安裝。(EX: htop , stress 等等常見的工具)。
上方的指令很吃網路速度跟電腦規格,通常第一次編譯會非常的久 5~8 小時以上!
所以我們也可以透過下方這個指令,先將我們所需的檔案給下載下來,但是不編譯。
bitbake -c fetchall core-image-minimal
等待下載完成後,有時間在進行編譯。
bitbake core-image-minimal
當編譯到一半遇到錯誤的時候,通常會直接停止,但我們可以透過下方的命令,先讓剩餘的任務繼續編譯。避免花太多時間在修復跟編譯上面。
bitbake -k core-image-minimal