《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Yocto訂制嵌入式Linux發行版
基于Yocto訂制嵌入式Linux發行版
2016年微型機與應用第14期
杜登科,胡愛蘭,李林峰,張玉生
(華北計算機系統工程研究所,北京 100083)
摘要: 隨著工業科技的發展,嵌入式Linux展現了巨大的價值,廣泛應用于消費電子設備、網絡設備和工控機領域。廣泛的應用帶來了各種各樣的需求,各大廠商紛紛訂制自己的嵌入式Linux產品,導致大量的重復工作,規范和標準差異化越來越大。在開放源代碼的精英發起下,Yocto橫空出世,以開源協作的方式逐步統一嵌入式Linux的訂制和開發標準,避免許多重復工作,極大地簡化了嵌入式Linux系統的訂制,并且省掉大量的重復工作,使嵌入式Linux應用開發者可以將重心放在自己的工作上。
Abstract:
Key words :

  杜登科,胡愛蘭,李林峰,張玉生

  (華北計算機系統工程研究所,北京 100083)

  摘要:隨著工業科技的發展,嵌入式Linux展現了巨大的價值,廣泛應用于消費電子設備、網絡設備和工控機領域。廣泛的應用帶來了各種各樣的需求,各大廠商紛紛訂制自己的嵌入式Linux產品,導致大量的重復工作,規范和標準差異化越來越大。在開放源代碼的精英發起下,Yocto橫空出世,以開源協作的方式逐步統一嵌入式Linux的訂制和開發標準,避免許多重復工作,極大地簡化了嵌入式Linux系統的訂制,并且省掉大量的重復工作,使嵌入式Linux應用開發者可以將重心放在自己的工作上。

  關鍵詞:嵌入式;Linux;Yocto;開放源代碼

0引言

  1991年芬蘭大學生Linus發布了0.1版本的操作系統Linux,到1995年,Linux發布1.2版本,該版本開始支持Alpha、i386、MIPS和SPARC等架構,同時MIPS開始在低功耗設備中越來越流行[1]。1996年第一家專注于嵌入式Linux的公司Timesys成立,隨后基于嵌入式Linux的公司和組織如雨后春筍般出現[2]。

  至今,基于Linux內核的操作系統廣泛應用于消費電子、網絡設備、工控控制、工業自動化、導航設備、宇宙飛船控制領域和醫學設備領域[3]。

  由于沒有統一的標準,嵌入式Linux開發差異越來越大,導致大量重復工作,給嵌入式Linux開發者帶來極大不便。在Linux基金會的有識之士的領導下成立了Yocto項目,Yocto提供了工具、關鍵數據和方法來快速構建一個嵌入式Linux發行版操作系統,避免了大量的重復工作,這樣嵌入式Linux開發者可以將更多的重心放在應用開發上,極大地提高了效率。

1國內外研究現狀

  當前國內外開發一個嵌入式Linux操作系統的通用方式分為3步[4]:制作交叉編譯工具鏈;移植uboot;配置并編譯Linux內核[5],制作根文件系統。這樣的開發流程對于嵌入式Linux開發者來說非常繁瑣,會耗費開發人員大量的精力在與應用開發上無關的方面,而且架構一換,交叉編譯工具鏈還得重新進行配置和編譯。即使有的公司或者社區已經做好了相應的工作,也僅僅限制于他們的芯片和板子,嵌入式Linux開發者需要查閱大量的文檔才能將已有的工作移植到他們的工作中,因此對于開發者十分不利。

  Yocto項目正是針對這種情況而誕生的,它將構建嵌入式Linux操作系統中需要用到的軟件源代碼的下載、打補丁、配置、編譯、打包和安裝以Python或Shell腳本的方式描述出來,保存在以后綴為.bb的文件中,然后使用一個叫bitbake的工具來解析執行。這樣的規則可以重利用,因此極大地提高了嵌入式Linux開發者的開發效率。Yocto中提供了很多種類型的嵌入式Linux操作系統模版,涵蓋了常見的操作系統類型,比如非常小的能啟動設備的coreimageminimal,而且使用者可以很容易地對該操作系統進行訂制,僅僅通過修改構建目錄下的local.conf文件就可以輕松完成各種需求的訂制。

2Yocto項目介紹

  Yocto的核心是一個基于OpenEmbeddedd開放源代碼的構建系統,它通過提供模版、工具和方法幫助開發者快速創建基于Linux內核的定制系統,支持ARM、PPC、MIPS和x86硬件體系結構。這個構建系統可以創建針對用戶環境的嵌入式Linux操作系統發行版。Yocto項目可以讓用戶訂制不同大小的Linux鏡像文件,從可以僅供啟動設備的鏡像到擁有各種各樣功能的復雜的操作系統鏡像文件。

  除了可以訂制嵌入式Linux操作系統發行版,還可以很容易地產生針對該嵌入式Linux操作系統的交叉編譯工具鏈和SDK,同時還有軟件開發工具集,可以生成想要的格式,如:deb、rpm、ipk等。

001.jpg

  圖1詳細地描述了Yocto項目流程:從上游軟件源將代碼抓取下來,通過一個叫bitbake的構建系統,使用描述編譯規則的文件,來生成內核的image、根文件系統和SDK。

3開發環境搭建

  3.1安裝必要的軟件包

  Ubuntu14.04下安裝如下包:

  $sudo aptget install gawk wget gitcore diffstat unzip texinfo gccmultilib buildessential chrpath socat libsdl1.2dev xterm

  3.2獲取Yocto構建系統

  $git clone git://git.yoctoproject/poky

  然后切換到當前最新的分支jethro上:

  $git checkout jethro

  這樣就得到了Yocto整個構建系統的所有工具、關鍵的配置文件和核心的元數據。

4開始構建系統

  接下來創建一個可以在arm926ejs的CPU上運行的嵌入式Linux操作系統發行版,還有一整套交叉編譯工具鏈,并且讓該操作系統運行在QEMU虛擬機上。

  4.1初始化構建系統的環境

  poky是一個包含構建系統、核心腳本文件和構建工具的一個集合。因此進入poky目錄并運行如下腳本:

  $cd poky

  $source oeinitbuildenv

  該腳本會創建一個構建目錄,默認放在poky里面,也可以自己指定構建目錄,運行如下命令:

  $source oeinitbuildenv you_path

  構建目錄包含構建期間生成的所有文件。

  4.2修改本地配置文件

  在運行oeinitbuildenv腳本后,會在構建目錄下生成conf目錄,conf目錄就是包含本次構建的所有重要配置文件。在conf目錄下有一個local.conf的配置文件,該文件包含了要構建的系統的一些基本設置。

  如果不改變任何配置文件就開始編譯,默認的構建的目標機器是qemux86,生成的可運行的鏡像文件是基于32位的x86架構,可以運行在QEMU虛擬機上。對于本次編譯來說,要生成基于arm926ejs,可在QEMU虛擬機上運行的鏡像文件,修改local.conf文件中的MACHINE變量:

  MACHINE?=qemuarm

  既然要做一個嵌入式Linux發行版,不是僅僅跑起來那么簡單,作為一個成熟的嵌入式Linux操作系統,必須要有對應的包管理工具,默認使用RPM,可以通過修改變量PACKAGE_CLASSES來改變:

  PACKAGE_CLASSES=“package_deb”

  當然還可以選擇ipk、tar等方式。

  4.3bitbake介紹

  bitbake是一個功能上與make類似的給嵌入式Linux操作系統生成可運行鏡像文件和軟件包的自動化構建工具,該工具受到了Gentoo Linux操作系統包管理工具Portage的啟發,使用Python實現。

  bitbake操作的文件叫bitbake recipe,以后綴.bb結尾或者以.bbappend結尾,該文件描述了一個軟件包去哪下載、如何配置、如何編譯、軟件包的依賴、安裝到哪里、如何刪除等過程。

  bitbake的recipe文件可以解析多種軟件包來源路徑,包括:http、https、ftp、cvs、svn、git和本地文件系統。在構建的過程中,recipe文件用來跟蹤軟件依賴、執行本地和交叉編譯,并且完成后將編譯完的軟件進行打包,可以在本地和目標設備上安裝。

  接下來使用bitbake生成一個包含根文件系統的嵌入式Linux鏡像文件,bitbake框架首先生成一個針對目標平臺的交叉變異工具鏈。

  4.4構建嵌入式Linux操作系統

  在Yocto中,針對不同的設備有相應的recipe文件,根據recipe文件的描述,可以生成大小不同的操作系統,有可以僅僅讓設備跑起來實時響應的操作系統、帶界面的操作系統等。接下來生成一個尺寸很小,剛好可以讓設備跑起來的操作系統:

  coreimageminimal

  在4.1節搭建好的環境中運行:

  $source oeinitbuildenv you_path

  會生成you_path目錄,這就是開發目錄,在該目錄下運行如下命令:

  $bitbake coreimageminimal

  開始執行后,bitbake會根據當前的CPU型號生成一個交叉編譯工具鏈,也就是生成一個可以在宿主機上運行的,能夠編譯出在目標板子上運行的程序的工具鏈,這樣極大地簡化了嵌入式開發者的工作,不需要自己手動修改代碼來配置交叉編譯工具鏈,僅僅通過配置就可以生成各種CPU型號的交叉編譯工具鏈。使用該工具鏈編譯各種在arm926ejs上可以運行的程序,包括Linux內核。

  這是一個比較漫長的過程,因為針對每一個軟件包都要下載、解壓、配置、編譯。通常bitbake會根據當前主機的CPU核心數量設置相應的線程來進行多線程編譯。為了提高效率,同時防止在下載的過程中出現下載包失敗的問題,通??梢蕴崆跋螺d好包,放在指定的目錄下,然后在build目錄中的local.conf文件中指定變量DL_DIR為上述指定的目錄,這樣bitbake構建系統就會去指定目錄讀取軟件包,極大地提高了效率。編譯操作系統如圖2所示?! ?/p>

002.jpg

  開始編譯后,需要花費較長時間,具體時間長短取決于當前宿主機的CPU核的數量和當前內存大小。

  4.5運行生成嵌入式Linux操作系統

  編譯完成后,結果如圖3所示?!?/p>

003.jpg

  編譯完成后,Linux內核的可執行鏡像文件和根文件系統位于構建目錄中的tmp/deploy/image/ 下。運行生成的嵌入式Linux操作系統,使用如下命令:

  $runqemu qemuarm slirp nographic

  runqemu是一個啟動QEMU虛擬機的腳本,qemuarm是運行的機器,slirp 是一種不需要root權限的網絡訪問方式。runqemu腳本自動啟動QEMU虛擬機,并且加載生成的內核和根文件系統,終端啟動界面如圖4所示?!?/p>

004.jpg

  使用root用戶名登錄,默認不需要用戶密碼。

5結論

  通過使用Yocto構建系統,僅需指定目標板子的類型和非常簡單的設置,就可輕松地完成嵌入式Linux操作系統的構建,相比于傳統的嵌入式Linux開發流程,極大地提高了效率,使開發人員能夠避免底層復雜的配置和移植,將重心更多地放在自己的應用開發上。

  Yocto項目可以訂制操作系統的范圍從非常小的傳感器、智能手表到工控機,甚至復雜的服務器和大型機等,應用層面非常廣泛,操作簡單,僅使用Python和Shell腳本來描述操作系統的編譯規則,極大地簡化了開發工作。而且它可以訂制基于多種架構的嵌入式Linux操作系統,由于從源代碼到編譯規則都是開源透明的,這對安全行來說十分重要,使開發人員對自己訂制的操作系統百分百全面掌控。同時它減輕了嵌入式Linux開發人員的負擔,使開發人員很容易地訂制自己的操作系統,將更多的精力放在開發應用上。

  Yocto是Linux基金會官方推薦的嵌入式Linux開發項目,未來,必將有更多的開發者和公司開始使用Yocto構建系統。

參考文獻

 ?。?] 劉慶.嵌入式Linux技術的發展[J]. 開放系統世界,2003(9):9697.

 ?。?] 苑慶國.嵌入式Linux的實時風暴[J]. 開放系統世界,2004(10):7980.

 ?。?] 陳閎中.Linux在嵌入式操作系統中的應用[J]. 同濟大學學報(自然科學版),2001,29(5):564566.

 ?。?] 梁泉.嵌入式Linux系統移植及開發技術研究[D]. 成都:電子科技大學,2003.

 ?。?] 錢連舉.基于ARM的嵌入式Linux系統移植技術研究與應用[D]. 成都:電子科技大學,2006.


此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲砖区区免费| 海角社区69精品视频| 欧美国产第二页| 亚洲综合不卡| 亚洲综合国产精品| 国产色婷婷国产综合在线理论片a| 欧美xx视频| 国产一区二区你懂的| 久久一区二区三区av| 欧美日韩免费网站| 亚洲欧美高清| 激情懂色av一区av二区av| 欧美日韩中文字幕综合视频| 妖精视频成人观看www| 欧美激情中文不卡| 亚洲在线观看视频| 日韩一区二区电影网| 久久久精品国产免费观看同学| 欧美日韩国产美| 国产伦精品一区二区三区高清版| 国户精品久久久久久久久久久不卡| 一本一本久久a久久精品综合麻豆| 久久蜜臀精品av| 亚洲国产日韩精品| 欧美日本亚洲韩国国产| 久久九九国产精品| 亚洲片国产一区一级在线观看| 亚洲韩国青草视频| 久久一日本道色综合久久| 中文国产一区| 欧美午夜宅男影院在线观看| 好吊妞**欧美| 久久国产精品久久久久久久久久| 国产一区二区三区在线免费观看| 亚洲天堂黄色| 亚洲二区免费| 亚洲精品永久免费精品| 亚洲精品久久久一区二区三区| 亚洲视频你懂的| 亚洲欧美成人网| 久久久精品国产免费观看同学| 亚洲大胆人体在线| 国产精品影片在线观看| 激情久久综合| 国产精品有限公司| 久久夜色精品国产噜噜av| 一本一道久久综合狠狠老精东影业| 在线观看精品| 一区二区三区四区五区精品| 亚洲伦理在线免费看| 在线成人www免费观看视频| 久久夜色精品| 欧美亚洲自偷自偷| 国产一区二区成人久久免费影院| 国产农村妇女精品一二区| 亚洲网站啪啪| 免费视频一区二区三区在线观看| 在线看不卡av| 久久精品国产亚洲a| 久久久久久婷| 欧美福利视频在线| 国产精品网红福利| 欧美日韩国产精品一区二区亚洲| 国模 一区 二区 三区| 久久久久久久一区| 久久人人九九| 欧美顶级少妇做爰| 欧美日韩免费观看一区二区三区| 欧美精品一卡| 欧美日产一区二区三区在线观看| 欧美欧美午夜aⅴ在线观看| 欧美日韩国产探花| 国产精品一级在线| 国产综合久久| 裸体女人亚洲精品一区| 最新国产の精品合集bt伙计| 国产手机视频精品| 国产精品一区在线播放| 欧美韩日精品| 性欧美超级视频| 香蕉久久国产| 欧美精品v国产精品v日韩精品| 国产精品男gay被猛男狂揉视频| 激情成人亚洲| 久久综合五月天婷婷伊人| 欧美日韩国产成人在线观看| 欧美日韩综合另类| 久久精品国产2020观看福利| 欧美色道久久88综合亚洲精品| 亚洲主播在线| 欧美影视一区| 欧美视频专区一二在线观看| 久久精品国产成人| 亚洲蜜桃精久久久久久久| 欧美精品成人| 国产日本欧美视频| 乱中年女人伦av一区二区| 亚洲欧美日本在线| 榴莲视频成人在线观看| 欧美激情二区三区| 国产午夜精品一区二区三区视频| 欧美韩国日本一区| 亚洲电影专区| 国产精品日韩在线观看| 亚洲欧美成人网| 欧美一级理论性理论a| 国产精品国产三级国产aⅴ无密码| 亚洲与欧洲av电影| 激情91久久| 亚洲国产精品www| 久热精品视频在线观看| 亚洲手机成人高清视频| 国产日韩欧美一区二区三区四区| 性18欧美另类| 欧美高清你懂得| 亚洲人人精品| 亚洲校园激情| 一区二区视频在线观看| 国产在线观看精品一区二区三区| 欧美成人午夜| 欧美精品在线一区二区| 欧美亚洲一区二区三区| 欧美激情国产日韩精品一区18| 一本到12不卡视频在线dvd| 欧美黄色一级视频| 亚洲欧美综合国产精品一区| 亚洲视频在线二区| 亚洲人成小说网站色在线| 久久午夜精品| 久久综合中文| 久久蜜臀精品av| 欧美日韩免费在线| 日韩午夜在线| 亚洲国产成人精品视频| 99re6热只有精品免费观看| 在线视频亚洲欧美| 久久影院亚洲| 欧美精品自拍| 欧美精品久久久久久久免费观看| 欧美日韩国产二区| 久久精品国产77777蜜臀| 性欧美在线看片a免费观看| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美日韩午夜视频在线观看| 亚洲黄色毛片| 国产日韩欧美麻豆| 在线观看国产精品网站| 国产日韩在线播放| 伊人婷婷欧美激情| 亚洲每日在线| 99精品国产在热久久下载| 黄色小说综合网站| 午夜精品久久久久久久| 欧美一区二区播放| 欧美日本在线看| 欧美国产一区二区三区激情无套| 亚洲三级免费| 久久免费少妇高潮久久精品99| 91久久久亚洲精品| 欧美在线资源| 国产亚洲va综合人人澡精品| 久久亚洲综合网| 国产欧美日韩一区二区三区在线观看| 亚洲国产精品欧美一二99| 亚洲男女自偷自拍图片另类| 欧美午夜激情小视频| 久久免费国产精品| 久久久久久久久久久一区| 免费看精品久久片| 国产亚洲欧美日韩精品| 在线精品亚洲| 99这里只有久久精品视频| 国内伊人久久久久久网站视频| 欧美三级电影一区| 久久色在线观看| 国产精品中文字幕欧美| 日韩一二在线观看| 欧美综合激情网| 欧美日韩在线视频首页| 久久久久综合一区二区三区| 免费观看在线综合| 欧美日韩精品在线| 一区二区三区日韩欧美| 欧美日韩免费在线视频| 日韩视频一区二区在线观看| 精品成人在线视频| 亚洲中午字幕| 亚洲看片免费| 99精品国产在热久久下载| 久久精品一区二区三区不卡| 久久久精品国产免大香伊| 国产一区二区福利| 欧美特黄一级| 亚洲欧美在线一区二区| 亚洲图片你懂的| 亚洲日韩欧美视频| 一区二区三区偷拍| 欧美日韩视频不卡| 国产精品久久国产精麻豆99网站| 免费观看国产成人| 欧美fxxxxxx另类| 欧美精品在线观看一区二区| 一区二区三区四区国产精品| 国产免费亚洲高清| 亚洲第一区在线观看| 久久久亚洲精品一区二区三区| 韩国福利一区| 亚洲一区欧美二区| 亚洲视屏在线播放| 欧美午夜性色大片在线观看| 欧美日韩视频在线一区二区观看视频| 亚洲精品社区| 久久久青草婷婷精品综合日韩| 在线亚洲欧美专区二区| 日韩一级大片在线| 久久久亚洲一区| 亚洲最新视频在线| 久久久福利视频| 午夜精品久久久久影视| 一区二区亚洲| 久久成人免费日本黄色| 亚洲人成艺术| 国产精品久久久久久久久动漫| 欧美精品乱码久久久久久按摩| 亚洲一区二区三区国产| 亚洲第一中文字幕| 香蕉成人久久| 欧美日韩精品在线观看| 国产日韩精品电影| 欧美激情国产高清| 欧美电影在线播放| 亚洲免费在线视频一区 二区| 一区二区三区精品视频在线观看| 国产日本欧美视频| 韩曰欧美视频免费观看| 久久蜜桃资源一区二区老牛| 久久精视频免费在线久久完整在线看| 欧美激情国产高清| 亚洲在线视频免费观看| 欧美aa在线视频| 国产主播在线一区| 久久资源在线| 欧美在线视频观看免费网站| 国产精品久久综合| 一区二区在线免费观看| 久久久噜久噜久久综合| 欧美xx视频| 宅男66日本亚洲欧美视频| 欧美激情国产精品| 欧美色视频在线| 欧美精品情趣视频| 亚洲综合日韩| 国产精品一区二区三区乱码| 国产精品高潮呻吟久久av无限| 久久精品国产999大香线蕉| 蜜桃av一区二区在线观看| 欧美在线视频一区| 久久国产精品亚洲77777| 欧美国产丝袜视频| 狂野欧美一区| 欧美三级中文字幕在线观看| 亚洲国产日韩在线一区模特| 激情综合视频| 国产精品实拍| 久久亚洲私人国产精品va媚药| 久久久蜜桃精品| 亚洲午夜在线观看| 男女av一区三区二区色多| 日韩午夜中文字幕| 欧美亚洲视频在线观看| 亚洲精品国产精品乱码不99按摩| 亚洲韩国青草视频| 国内在线观看一区二区三区| 欧美在线视频网站| 国产一区二区剧情av在线| 亚洲精品视频一区二区三区| 国产精品亚洲美女av网站| 亚洲高清在线观看一区| 久久精品视频亚洲| 久久精品国产99国产精品澳门| 欧美视频官网| 一区二区高清在线| 亚洲视频精品| 欧美精品一区二区三区视频| 久久久高清一区二区三区| 国产精品日韩一区| 香蕉久久夜色精品| 99re这里只有精品6| 国产精品欧美日韩| 国产一区二区三区奇米久涩| 久久中文字幕一区二区三区| 亚洲电影免费观看高清完整版在线| 久久久久久久久一区二区| 久久亚洲春色中文字幕| 国产一区二区三区无遮挡| 亚洲国产小视频在线观看| 午夜精品久久久久久久99黑人| 欧美激情国产高清| 一本色道久久综合亚洲精品不卡| 欧美日韩一区三区四区| 亚洲欧美偷拍卡通变态| 国产精品极品美女粉嫩高清在线| 亚洲第一色中文字幕| 一区二区三区欧美视频| 国产精品99久久久久久久女警| 国产一区二区观看| 亚洲国产精品va在线看黑人| 国产精品成人一区二区艾草| 欧美另类视频| 亚洲图片激情小说| 久久久精品国产一区二区三区| 亚洲精品韩国| 中日韩午夜理伦电影免费| 久久国产婷婷国产香蕉| 亚洲视频在线观看网站| 欧美一区二区成人| 激情小说另类小说亚洲欧美| 欧美一区永久视频免费观看| 99国产精品久久久| 亚洲欧美日韩另类精品一区二区三区| 欧美第一黄网免费网站| 亚洲国产精品热久久| 蜜桃精品久久久久久久免费影院| 亚洲精品国产精品国自产观看浪潮| 欧美美女福利视频| 国产日韩欧美日韩大片| 精品动漫3d一区二区三区免费| 午夜视黄欧洲亚洲|