如何在 Ubuntu 上用 Yocto 創建你自己的嵌入式 Linux 發行版
![](https://linuxstory.org/wp-content/uploads/2024/06/193501cvqcovv9hqoch95c.jpg)
開發機的基本條件
- 最少 4-6 GB 內存
- 最新版的 Ubuntu 系統(本文使用了 16.04 LTS)
- 磁碟剩餘空間至少 60-80 GB
- 在創建 Linux 發行版之前先安裝下面的軟體包
- 下載最新的 Yocto(Poky 是其最小開發環境)穩定分支
apt-get update
apt-get install wget git-core unzip make gcc g++ build-essential subversion sed autoconf automake texi2html texinfo coreutils diffstat python-pysqlite2 docbook-utils libsdl1.2-dev libxml-parser-perl libgl1-mesa-dev libglu1-mesa-dev xsltproc desktop-file-utils chrpath groff libtool xterm gawk fop
如下所示,開發環境要安裝的軟體包將近 1GB 大小。
在這個教程中,系統上克隆的是 poky 的 morty
穩定分支。
git clone -b morty git://git.yoctoproject.org/poky.git
進入 poky
目錄,然後運行下面的命令為 Yocto 開發環境設置(設置/導出)一些環境變數。
source oe-init-build-env
如下所示,在運行了 open embedded (oe) 的構建環境腳本之後,終端里的路徑會自動切換到 build
目錄,以便進行之後行發行版的的配置和構建。
上面的截屏展示了在 conf
目錄下創建的文件 local.conf
。這是 Yocto 用來設置目標機器細節和 SDK 的目標架構的配置文件。
如下所示,這裡設置的目標機器是 qemux86-64
。
如下面截圖所示,在 local.conf
中取消下面參數的注釋符號。
DL_DIR ?= "${TOPDIR}/downloads"
SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
TMPDIR ?= "${TOPDIR}/tmp"
PACKAGE_CLASSES ?= "package_rpm"
SDKMACHINE ?= "i686"
如下所示,在 local.conf
中為基於 Yocto 的 Linux 設置空密碼和後續的一些參數。否則的話用戶就不能登錄進新的發行版。
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
我們並不准備使用任何圖形化工具來創建 Linux OS,比如 toaster
(hob
已經不再支持了)。
Yocto 編譯構建過程
現在運行下面的 bitbake
工具命令開始為選定的目標機器下載和編譯軟體包。
bitbake core-image-minimal
非常重要的是要在普通 Linux 用戶下運行上面的命令,而不是使用 root 用戶。如下面截圖所示,當你在 root 用戶下運行 bitbake 命令會產生下面所示的錯誤。
再一次運行導出環境變數的腳本(oe-init-build-env
),重新執行相同的命令來啟動下載和編譯過程。
如下所示,構建腳本組件的第一步工作是解析配置(recipe
)。
下面的截圖展示了構建腳本的解析過程。同時也顯示了用來構建你的新的基於 yocto 的發行版的構建系統的細節。
在下載了 SDK 和必要的庫之後,下一步工作是下載並編譯軟體包。如下截圖展示了為構建新發行版而執行的任務。這一步將會執行 2-3 小時,因為首先要下載需要的軟體包,然後還要為新的 Linux 發行版編譯這些軟體包。
下面的截圖表明了任務列表執行完畢。
為目標機器類型 qemux86-64
編譯好的新鏡像位於 build/tmp/deploy/images/qemux86-64
:
如下所示,上面的命令如果運行在 Putty
上會產生一個錯誤。
通過 rdp
在 Ubuntu 平台上再次運行上面的命令。
為運行新的基於 Yocto 的 Linux 發行版的 qemu 打開一個新屏幕。
下面展示了新發行版的登錄界面,同時也顯示了使用的 yocto 項目的版本號。默認的用戶名是 root
,密碼為空。
最後使用 root
用戶名和空密碼登錄新發行版。如下截圖所示,在這個最小版本的 Linux 上運行了基本的命令(data
、 ifconfig
和 uname
)。
本文的目標是理解使用 Yocto 創建新的 Linux 發行版的過程。
via: https://www.howtoforge.com/tutorial/how-to-create-your-own-linux-distribution-with-yocto-on-ubuntu/
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive