2020年10月15日 星期四

利用Yocto項目按照您自己的方式搭建Linux

 作者:Allen Watson,Synopsys公司ARC處理器事業部高級產品營銷經理

前言

如果您在桌面機上使用過Ubuntu或紅帽Linux(RHEL)操作系統,您可能會將把“Linux”視為類似於Microsoft Windows或Mac OS的全功能操作系統。Ubuntu和RHEL都是Linux發行版的例子。“Linux”是提供系統服務的內核軟件,還需要一些額外的軟件才能使其變成您所知道和喜愛的特定發行版。在搭載ARC處理器的嵌入式系統中,必須對Linux發行版進行縮減,因為系統資源面臨許多限制,例如內存和存儲空間有限,這都是很多片上系統(SoC)常見的情況。

圖1 -- Linux操作系統的簡化視圖

圖1 -- Linux操作系統的簡化視圖

什麼是Linux發行版?

桌面機或服務器的Linux發行版有五個主要組件:

  • 引導加載程序(Bootloader)
  • Linux內核映像
  • 系統庫
  • 用戶應用程序
  • 工具鏈

引導加載程序是首先在系統中運行的軟件。它使系統準備好加載和執行內核。Linux內核執行進一步的初始化並引入硬件的設備驅動程序。它提供諸如設備和內存管理等服務。系統庫包含操作系統的許多功能,並能夠讓應用程序和實用程序訪問內核服務。用戶應用程序是我們用來執行日常任務的程序,例如Web瀏覽器或電子郵件應用程序。工具鏈在目標系統上執行,並根據需要用於構建應用程序和其他軟件。

在嵌入式Linux發行版中,通常有一個獨立的工具鍊和構建系統。這些組件通常在搭載不同於目標處理器的另一個處理器的工作站上執行。工具鏈將軟件交叉編譯到目標處理器。

在目標系統上:

  • 引導加載程序
  • Linux內核映像
  • 用戶應用程序     
  • 系統庫

在開發工作站上:

  • 工具鏈
  • 構建系統/腳本

為什麼您需要一個構建系統

在配置嵌入式Linux發行版的過程中,構建系統是管理這一過程的關鍵,這不僅要滿足嵌入式系統的功能要求,還要滿足SoC的系統限制條件。構建Linux發行版涉及到從許多不同的來源下載和構建許多不同的軟件包。這些軟件包中的每一個都可能依賴於許多其他軟件包,而且該過程可能很快就變得非常複雜。構建系統將幫助您完成以下工作:

  • 解決依賴性
  •  獲取源代碼
  • 配置軟件包
  • 構建、安裝並打包所獲得的結果

構建系統也可以自動運行,這樣您就可以在夜間運行構建系統。

為嵌入式Linux構建系統

Linux有三種流行的構建系統,它們都支持為DesignWare® ARC®處理器構建某種發布版。

Buildroot

Buildroot可以輕鬆配置出一套嵌入式Linux發行版。它使用了很多非常著名的Linux工具和基礎架構(例如Makefiles)來構建工具鏈、文件系統、內核映像和引導加載程序。建立一套基本的系統可能只需要幾分鐘的時間。

Buildroot的主要特點包括:

  • 1800多個軟件包
  • GUI(圖形用戶界面)配置
  • 在目標系統上的內存佔用較少
  • 支持ARC AXS10x、ARC HSDK、ARC HS Virtualizer(虛擬器)開發工具包(VDK)以及ARC nSIM指令集模擬器

在很多情況下,使用Buildroot是個不錯的方法。它使用起來相對比較直截了當,提供了多種可供選擇的軟件包。一套GUI用於選擇您想要的軟件包並配置內核本身。所缺少的一個功能是動態包管理。Buildroot構建出來的是一套靜態系統,此後將不能向其中添加新東西。但在某些系統中,您可能需要在此後添加一些新軟件來更改或添加功能。不過,在許多嵌入式系統應用場合,系統是一直保持固定不變的,所以,這種動態特性可能並不重要。

一旦您安裝了Buildroot並配置了您的Linux發行版,您就可以使用以下命令為ARC AXS101軟件開發平台構建Linux發行版:

make snps_archs38_axs103_defconfig && make


OpenWrt

OpenWrt是針對WiFi路由器的專用應用程序構建系統的一個例子。有多種發行版可用於商店中出售的許多著名的商用路由器。還支持多種ARC開發系統,其中包括ARC HS開發套件

OpenWrt的主要特點是:

  • 為無線路由器提供功能最強大、最靈活的發行版
  • 通過opkg (.ipk)進行動態包管理
  • 包含1000多個隨時可用的源代碼包
  • 構建了一套軟件開發工具包(SDK)
  • 支持把ARC HSDK闆卡作為WiFi接入點

該系統通過支持動態包管理而增加了靈活性,這樣就能夠在原始構建版本完成之後再添加新的軟件包。不過,如前所述,該發行版是針對WiFi路由器應用的,因此可能無法滿足嵌入式應用的需求。

下面是一個用於針對ARC進行構建的命令示例:

make menuconfig && make

在運行'make menuconfig' 命令之後選擇ARC HS38。
 

Yocto項目

Yocto項目是由Linux基金會託管的一個開源項目。它提供了多種模板、工具和方法,用於創建基於Linux的定制系統。諸如Wind River Systems等公司提供的許多著名Linux發行版都基於Yocto。

Yocto項目的主要特點是:

  • 由Linux基金會託管
  • 被許多主流的嵌入式Linux提供商使用
  • 通過不同層次提供數千個軟件包
  • 支持動態包管理(.rpm, .deb, .ipk)

這套構建系統非常靈活,而且易於定制。其定制功能的關鍵在於其層次模型。每個層次都包含一組相關的指令(稱為配方(recipe)),它們提供特定的功能。將這些指令劃分成不同的層次能夠讓您和其他用戶重用這些層次。例如,某一個層次可以是板級支持包(BSP)層。這包含有關硬件的信息。通過指定不同的BSP層,可以採用某一個發布版並將其用於不同的硬件。

但是,所有這些定制潛力都有其不利的方面。配置工作只能通過腳本手動來完成,所以學習曲線可能很陡峭。但Yocto是目前最全面、最靈活的構建系統,值得花些時間和精力來學習如何很好地利用它。

 

哪個構建系統適合我?

您採用哪種構建系統取決於您對Linux掌握程度以及您需要多大程度的定制。下面的表1為您提供了一張備忘單:

表1 -- 幫助您為Linux選擇構建系統的備忘單

表1 -- 幫助您為Linux選擇構建系統的備忘單

如果您想立即開始使用在ARC上使用Linux,我們為我們的開發系統提供了預製的Linux映像。在這種情況下,您就不必使用某種構建系統即可以開始工作。我們所有的開源軟件都可以從embARC.org網站上獲得。請訪問其“嵌入式Linux項目”部分。

結論

對於嵌入式系統,有必要縮減嵌入式Linux發行版,以滿足此類項目的功能要求,即能夠適應嵌入式系統的限制。有多種構建系統可以做到這一點,而如果您需要訪問大量的軟件包並希望提供相應的定制能力,則Yocto是一個不錯的選擇。您也可以選擇使用某種更簡單的構建系統,例如Buildroot,它可以用一種更簡單的方式來滿足您的需求。

幫助您開始著手工作的資源

  • 關於如何使用Buildroot的文檔,請點擊這裡
  • 關於OpenWrt的更多信息,請點擊這裡這裡
  • Yocto項目有一份入門指南,請點擊這裡
  • 在ARC處理器上使用Yocto,您可以從這裡開始。



資料來源:https://www.synopsys.com/zh-cn/china/resources/dwtb/dwtb-cn-linux-your-way-yocto-2018q3.html

沒有留言: