以下結構爲yocto工程的一些通用的結構。實際工程中,各個廠商可能根據自己的需要進行剪裁,但是整體的結構以及每個目錄存放的內容大體上是一致的。
頂層文件結構
bitbake bitbake工具目錄。bitbake,是一metedate解釋器,讀取metedate並執行定義的task。執行bitbake命令時,其實執行的就是bitbake/bin/下面的文件。build 用戶配置文件和工程構建輸出目錄。build目錄在建立環境變量時進行創建並進行配置文件初始化。構建的所有文件都在該目錄下組織存放。
documentation 說明文件
meta OE Core的Metedata,包括recipes,comon classes等
meta-poky poky發行版本的配置數據
meta-yocto-bsp yocto工程包含的一些參考的BSP配置,通常廠商自己會增加自己的bsp目錄。
meta-selftest OE自測的recipes和append 文件
meta-skeleton BSP和kernel開發用的一些臨時recipes
scripts 腳本文件,用來提供一些特性的功能。該路徑會被添加到環境變量中。
oe-init-build-env 構建OE的環境
build/目錄下的文件組織結構
build/conf/local.conf 用戶的配置文件,包含所有定製化的配置。該文件配置的所有變量都會覆蓋其他文件相應變量的軟賦值 (?= 形式)(注意=形式的硬編碼無法覆蓋)
build/conf/bblayers.conf 該文件用來定義BBLAYERS,BBLAYERS是決定哪些路徑下的模塊需要構建,哪些不需要構建,並將這些信息提供給BitBake。
build/conf/sanity_info 可用性信息,不用關注
build/downloads 構建過程中,下載的所有源碼。可以將該目錄放到一個公共目錄下,提供每次的編譯效率
build/sstate-cache 構建構成中的構建狀態緩存。可以將該目錄放到一個公共目錄下,提供每次的編譯效率
build/tmp 構建時所有的輸出都存放在該目錄下
build/tmp/buildstats 構建統計信息,每次構建,都會在該目錄下生成一個日期目錄
build/tmp/cache BitBake解析metedata(包括recipes和config文件)後,將解析的結果緩存在該目錄,以提高後續效率
build/tmp/deploy 部署文件目錄,最終需要的文件(boot rootfs image等)都在該目錄中
build/tmp/deploy/deb 存放系統產生的所有.deb類型的安裝包
build/tmp/deploy/rpm 存放系統產生的所有rpm類型的安裝包
build/tmp/deploy/ipk 存放系統產生的所有ipk類型的安裝包
build/tmp/deploy/licenses 系統使用的各種軟件的許可信息
build/tmp/deploy/images 存放boot rootfs image等文件
build/tmp/deploy/sdk 工具鏈安裝腳本
build/tmp/sstate-control 狀態跟蹤文件
build/tmp/sysroots-components 製作sysroots前需要額外添加的一些組件
build/tmp/sysroots 構建出的根文件系統內容
build/tmp/stamps 記錄BitBake跟蹤task執行時間的一些信息
build/tmp/log 日誌信息
build/tmp/work 包含和CPU架構相關的工作目錄
build/tmp/work-shared 工作信息緩存,爲了提高效率
meta/目錄下的文件組織結構
meta/classes 包含所有的 *.bbclass。class文件是抽象的公共代碼,給各個package使用。
meta/conf 配置文件(.conf)的核心集合。比如所有的bblayers的配置文件都是從該目錄下的bitbake.conf文件中衍生的。
meta/conf/machine machine的配置文件
meta/conf/distro 發行信息的配置文件
meta/conf/machine-sdk 制定sdk是32位還是64位。
meta/files/ 包含一些licence文件和系統構建所需要的一些其他文件
meta/lib/ 系統構建過程中需要的一些Python庫文件
meta/recipes-bsp uboot等硬件相關的配置信息
meta/recipes-connectivity 包含和其他設備通信相關的庫和應用
meta/recipes-core 構建基本的linux image所需要的依賴
meta/recipes-devtools 主機構建時需要的tools,這些工具在目標板上同樣能夠使用。
meta/recipes-extended 一些不重要的應用
meta/recipes-gnome GTK+框架相關的應用
meta/recipes-graphics 繪圖相關的庫
meta/recipes-kernel kernel以及內核所依賴的庫
meta/recipes-lsb4 支持Linux Standard Base (LSB) version 4.x所需要的
meta/recipes-multimedia 多媒體支持,圖片、聲音、視頻
meta/recipes-rt 支持PREEMPT_RT 所需要的recipes和包
meta/recipes-sato/ sato demo
meta/recipes-support 其他recipes包含的一些通用的recipes
meta/site 不同的架構下的緩存結果存放
meta/recipes.txt 說明文件