閱讀503 返回首頁    go 阿裏雲 go 技術社區[雲棲]


如何在 Ubuntu 上用 Yocto 創建你自己的嵌入式 Linux 發行版

本文主要聚焦在如何使用 Yocto 在 Ubuntu 上創建一個最小化的 Linux 發行版。Yocto 項目在嵌入式 Linux 的世界非常著名,這是因為它用起來非常靈活、方便。Yocto 的目標是為嵌入式軟硬件開發商創建自己的 Linux 發行版。本文我們將會創建一個可以運行在 QEMU 上的最小化的 Linux,並且在 QEMU 上實際運行。

開發機的基本條件

  • 最少 4-6 GB 內存
  • 最新版的 Ubuntu 係統(本文使用了 16.04 LTS)
  • 磁盤剩餘空間至少 60-80 GB
  • 在創建 Linux 發行版之前先安裝下麵的軟件包
  • 下載最新的 Yocto(Poky 是其最小開發環境)穩定分支

  1. apt-get update

  1. 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

Install prerequisites for Yocto

Install prerequisites for Yocto

如下所示,開發環境要安裝的軟件包將近 1GB 大小。

Install the development packages

Install the development packages

在這個教程中,係統上克隆的是 poky 的 morty 穩定分支。


  1. git clone -b morty git://git.yoctoproject.org/poky.git

install poky

install poky

進入 poky 目錄,然後運行下麵的命令為 Yocto 開發環境設置(設置/導出)一些環境變量。


  1. source oe-init-build-env

如下所示,在運行了 open embedded (oe) 的構建環境腳本之後,終端裏的路徑會自動切換到 build 目錄,以便進行之後行發行版的的配置和構建。

Prepare OE build environment

Prepare OE build environment

上麵的截屏展示了在 conf 目錄下創建的文件 local.conf。這是 Yocto 用來設置目標機器細節和 SDK 的目標架構的配置文件。

如下所示,這裏設置的目標機器是 qemux86-64

Set the target machine type

Set the target machine type

如下麵截圖所示,在 local.conf 中取消下麵參數的注釋符號。


  1. DL_DIR ?= "${TOPDIR}/downloads"

Configure local.conf file

Configure local.conf file


  1. SSTATE_DIR ?= "${TOPDIR}/sstate-cache"

Set SSTATE_DIR

Set SSTATE_DIR


  1. TMPDIR ?= "${TOPDIR}/tmp"

Set TMPDIR

Set TMPDIR


  1. PACKAGE_CLASSES ?= "package_rpm"
  2. SDKMACHINE ?= "i686"

Set PACKAGE_CLASSES and SDKMACHINE

Set PACKAGE_CLASSES and SDKMACHINE

如下所示,在 local.conf 中為基於 Yocto 的 Linux 設置空密碼和後續的一些參數。否則的話用戶就不能登錄進新的發行版。


  1. EXTRA_IMAGE_FEATURES ?= "debug-tweaks"

Set debug-tweaks option

Set debug-tweaks option

我們並不準備使用任何圖形化工具來創建 Linux OS,比如 toaster (hob 已經不再支持了)。

Yocto 編譯構建過程

現在運行下麵的 bitbake 工具命令開始為選定的目標機器下載和編譯軟件包。


  1. bitbake core-image-minimal

Start bitbake

Start bitbake

非常重要的是要在普通 Linux 用戶下運行上麵的命令,而不是使用 root 用戶。如下麵截圖所示,當你在 root 用戶下運行 bitbake 命令會產生下麵所示的錯誤。

Do not run bitbake as root

Do not run bitbake as root

再一次運行導出環境變量的腳本(oe-init-build-env),重新執行相同的命令來啟動下載和編譯過程。

rerun commands

rerun commands

如下所示,構建腳本組件的第一步工作是解析配置(recipe)。

Parse the build recipes

Parse the build recipes

下麵的截圖展示了構建腳本的解析過程。同時也顯示了用來構建你的新的基於 yocto 的發行版的構建係統的細節。

Building proceeds

Building proceeds

在下載了 SDK 和必要的庫之後,下一步工作是下載並編譯軟件包。如下截圖展示了為構建新發行版而執行的任務。這一步將會執行 2-3 小時,因為首先要下載需要的軟件包,然後還要為新的 Linux 發行版編譯這些軟件包。

Compilation will take several hours

Compilation will take several hours

下麵的截圖表明了任務列表執行完畢。

Compilation

Compilation

為目標機器類型 qemux86-64 編譯好的新鏡像位於 build/tmp/deploy/images/qemux86-64

Build complete

Build complete

如下所示,上麵的命令如果運行在 Putty 上會產生一個錯誤。

command error in putty

command error in putty

通過 rdp 在 Ubuntu 平台上再次運行上麵的命令。

Command works fine in rdp

Command works fine in rdp

為運行新的基於 Yocto 的 Linux 發行版的 qemu 打開一個新屏幕。

Open Quemu emulator

Open Quemu emulator

下麵展示了新發行版的登錄界麵,同時也顯示了使用的 yocto 項目的版本號。默認的用戶名是 root ,密碼為空。

Linux distribution started

Linux distribution started

最後使用 root 用戶名和空密碼登錄新發行版。如下截圖所示,在這個最小版本的 Linux 上運行了基本的命令(data 、 ifconfig 和 uname)。

Test the Linux distribution

Test the Linux distribution

本文的目標是理解使用 Yocto 創建新的 Linux 發行版的過程。

原文發布時間為:2017-03-05

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-05-25 16:31:48

  上一篇:go  一個使用 asyncio 協程的網絡爬蟲(二)
  下一篇:go  使用 Elizabeth 為應用生成隨機樣本數據