2 第一個基于Poky的系統(tǒng)
2.1 構(gòu)建主機系統(tǒng)
- Ubuntu:
$ sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev xterm python3-subunit mesa-common-dev zstd liblz4-tool
- Fedora
$ sudo dnf install gawk make wget tar bzip2 gzip python3 unzip perl patch diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath ccache perl-Data-Dumper perl-Text- perl-Thread-Queue perl-bignum socat python3-pexpect findutils which file cpio python python3-pip xz python3-GitPython python3-jinja2 SDL-devel xterm rpcgen mesa-libGL-devel perl-
FindBin perl-File-Compare perl-File-Copy per-locale zstd lz4
2.2 下載Poky 代碼
在我們的開發(fā)主機系統(tǒng)上安裝了所需的軟件包后,我們可以使用 Git 下載當前 LTS 版本的 Poky 源代碼,命令如下:
$ git clone https://git.yoctoproject.org/poky -b kirkstone
下載完成后,poky 目錄中的內(nèi)容如下:
2.3 準備構(gòu)建環(huán)境
在poky目錄中存在oe-init-build-env腳本,用于設(shè)置構(gòu)建環(huán)境。
$ source oe-init-build-env [build-directory]
這里,[build-directory] 是一可選參數(shù),用于指定配置環(huán)境的目錄名稱。如果為空,則默認為 build。
2.4 local.conf
初始化構(gòu)建環(huán)境時,它會創(chuàng)建build/conf/local.conf文件。這個配置文件功能強大,幾乎可以配置構(gòu)建過程的方方面面。我們可以為自定義跨工具鏈設(shè)置目標機器和工具鏈主機架構(gòu),優(yōu)化選項以最大限度地縮短構(gòu)建時間等等。build/conf/local.conf文件內(nèi)的注釋是極好的文檔,也是可能的變量及其默認值的參考。我們可能需要更改默認值的最小變量集如下:
MACHINE ??= "qemux86-64"
通過 MACHINE 變量,我們可以確定要構(gòu)建的目標機器。在撰寫本文時,Poky的參考BSP支持以下機器:
- beaglebone-yocto
BeagleBone,是 32 位 ARM 的參考平臺
- genericx86
這是對基于x86的32位機器的通用支持
- genericx86-64
這是對基于x86的64位機器的通用支持
- edgerouter
這是 EdgeRouter Lite,是64位MIPS 的參考平臺。
除了這些機器外,OpenEmbedded Core在meta目錄中還提供了對以下快速仿真 (QEMU) 機器的支持:
- qemuarm: QEMU ARMv7 仿真
- qemuarmv5:這是 QEMU ARMv5 仿真
- qemuarm64:這是 QEMU ARMv8 仿真
- qemumips: 這是 QEMU MIPS 仿真
- qemumips64: 這是 QEMU MIPS64 仿真
- qemuppc: 這是 QEMU PowerPC 仿真
- qemuppc64: 這是 QEMU PowerPC 64 仿真
- qemux86-64: 這是 QEMU x86-64 仿真
- qemux86: 這是 QEMU x86 仿真
- qemuriscv32:這是 QEMU RISC-V 32 仿真
- qemuriscv64: 這是 QEMU RISC-V 64 仿真
一些供應(yīng)商提供的額外BSP層為其他機器提供支持。使用額外BSP層的過程參見第11章 "探索外部層"。
注意local.conf文件是覆蓋整個Yocto項目工具中若干全局默認配置的便捷方法。基本上,我們可以更改或設(shè)置任何變量,例如在映像文件中添加額外的軟件包。更改 build/conf/local.conf文件非常方便,但源代碼管理系統(tǒng)通常不會跟蹤此目錄中的臨時更改。
build/conf/local.conf 文件可以設(shè)置多個變量。值得花些時間閱讀生成的文件注釋,以便大致了解可以設(shè)置哪些變量。
構(gòu)建目標映像Poky提供了幾種預(yù)先設(shè)計好的映像配方,我們可以用它們來構(gòu)建二進制映像。我們可以在 poky 目錄下運行以下命令來查看可用圖像列表:
$ ls meta*/recipes*/*images/*.bb
所有配方提供的鏡像都是一組解包和配置好的軟件包,生成的文件系統(tǒng)可用于硬件或受支持的 QEMU 機器之一。
接下來,我們可以看看最常用的鏡像列表:
- core-image-minimal 鏡像: 這是一個允許設(shè)備啟動的小型鏡像。它便于內(nèi)核和引導(dǎo)加載器的測試和開發(fā)。
- core-image-base: 該圖像僅用于控制臺,為目標設(shè)備提供基本硬件支持。
- core-image-weston: 該鏡像提供 Wayland 協(xié)議庫和參考 Weston 合成器。
- core-image-x11:這是一個帶有終端的基本 X11 映像。
- core-image-sato:這是一個支持 Sato 的鏡像,為使用 X11 的移動設(shè)備提供移動環(huán)境。它提供終端、編輯器、文件管理器、媒體播放器等應(yīng)用程序。
- core-image-full-cmdline: 純控制臺鏡像,安裝了功能更全面的 Linux 系統(tǒng)功能。
社區(qū)還提供其他參考鏡像。有幾種鏡像支持實時、initramfs 和 MTD(閃存工具)等功能。最好查看源代碼或《Yocto 項目參考手冊》(https://docs.yoctoproject.org/4.0.4/ref-manual/index.html )以獲取完整的最新列表。
為目標構(gòu)建鏡像的過程很簡單。但首先,在使 BitBake 之前,我們需要使用源代碼 oe-init-build-env [build-directory] 來設(shè)置構(gòu)建環(huán)境。要構(gòu)建鏡像,我們可以使用下面命令中的模板:
$ bitbake core-image-full-cmdline
- 軟件測試精品書籍文檔下載持續(xù)更新 https://github.com/china-testing/python-testing-examples 請點贊,謝謝!
- 本文涉及的python測試開發(fā)庫 謝謝點贊! https://github.com/china-testing/python_cn_resouce
- python精品書籍下載 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
- Linux精品書籍下載 https://www.cnblogs.com/testing-/p/17438558.html
2.5 在QEMU中運行映像
我們可以使用硬件模擬來加快開發(fā)進程,因為它可以在不涉及任何實際硬件的情況下進行測試運行。幸運的是,大多數(shù)項目只有很小一部分依賴于硬件。
QEMU是一款免費的開源軟件包,可執(zhí)行硬件虛擬化。基于QEMU的機器允許在沒有實際硬件的情況下進行測試和開發(fā)。目前支持 ARMv5、ARMv7、ARMv8、MIPS、MIPS64、PowerPC、PowerPC 64、RISC-V 32、RISC-V 64、x86 和 x86-64 仿真。我們將在 "通過仿真加速產(chǎn)品開發(fā) - QEMU "一文中詳細介紹QEMU的使用。
OpenEmbedded Core提供了runqemu腳本工具,它是一個封裝工具,能讓QEMU的使用更簡單。運行腳本工具的方法如下:
$ runqemu <machine> <zimage> <filesystem>
$ runqemu qemux86-64 core-image-full-cmdline
這里,
最后,
因此,舉例來說,如果我們運行runqemu qemux86-64 core-image-full-cmdline,就會看到與下面截圖類似的內(nèi)容:
在完成 Linux 啟動后,你會看到登錄提示:
我們可以使用空密碼登錄root賬戶。即使在QEMU內(nèi)執(zhí)行,系統(tǒng)也會像普通機器一樣運行。在實際硬件中部署映像的過程各不相同,這取決于所使用的存儲類型、引導(dǎo)加載程序等。不過,生成鏡像的過程是相同的。我們將在第15章"啟動自定義嵌入式 Linux"中探討如何在真實硬件中構(gòu)建和運行映像。文章來源:http://www.zghlxwxcb.cn/news/detail-709772.html
2.6 小結(jié)
在本章中,我們學(xué)習(xí)了設(shè)置Poky和構(gòu)建第一個映像所需的步驟。然后,我們使用runqemu運行了映像,這讓我們對可用功能有了很好的概覽。文章來源地址http://www.zghlxwxcb.cn/news/detail-709772.html
到了這里,關(guān)于使用Yocto進行嵌入式Linux開發(fā)2 第一個基于Poky的系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!