999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種構建嵌入式Linux根文件系統的方法

2016-09-08 06:13:32劉二鋼
電子設計工程 2016年9期
關鍵詞:嵌入式系統

劉二鋼

(海南大學 信息科學技術學院,海南 海口 570228)

一種構建嵌入式Linux根文件系統的方法

劉二鋼

(海南大學 信息科學技術學院,海南 海口570228)

根文件系統是構建嵌入式Linux系統的非常重要的組成部分。文中主要以制作Yaffs2根文件系統為例,研究如何使用BusyBox構建嵌入式Linux的根文件系統,包括BusyBox的配置、編譯和安裝,以及在嵌入式Linux環境下生成根文件系統映像文件的方法。文中所介紹的方法能夠成功地在ARM開發板中移植和運行,為嵌入式系統的開發提出了一種簡單易行的研究思路。

BusyBox;Yaffs2;嵌入式Linux;文件系統

在嵌入式系統中如果引入操作系統,研發人員可以根據需求直接在操作系統基礎上設計開發而不必從頭開始。這樣會使研發工作變得簡單方便,因此帶操作系統的開發模式正逐步成為嵌入式系統開發的主流。Linux操作系統由于其開源穩定,安全高效,一直是嵌入式操作系統的應用首選。應用Linux操作系統,必須構建Linux根文件系統。但是大多數開發板所提供的構建Linux根文件系統的文獻資料都非常簡單,甚至未提及應用方法,許多用戶難以理解和掌握。本文就Linux根文件系統做了簡單介紹,并提出一種切實可行構建根文件系統的方法。

1 Linux根文件系統簡介

由于Linux嵌入式產品成本低廉,開發資源豐富,因此其越來越受到重視,應用也越來越廣泛。對于Linux操作系統來說,并沒有類似于WINDOWS中盤符的概念,而是將分區掛載到目錄上,被掛載的目錄就稱之為掛載點(mount point),然后通過目錄來訪問分區上的文件。常見的根文件系統都呈倒掛狀樹形層次結構,主要目錄及含義如圖1所示。

圖1 根文件目錄結構

對于操作系統而言,存儲在上面的文件和目錄必須遵循一定的格式,這種格式就稱之為文件系統類型,Linux操作系統常見的文件系統類型有 Ext2、Ext3、Jffs2、Cramfs、Yaffs、Yaffs2等。這些文件系統各有自己的特點,主要區別在于是否可寫、是否能夠壓縮及是否具有日志功能等。根文件系統是嵌入式Linux的重要組成部分,是內核啟動加載的第一個文件系統,并為內核的啟動提供各種工具軟件、庫文件、腳本和配置文件,而且可以作為數據的存取區域,是決定系統能否正常啟動的關鍵[1]。

制作根文件系統就是生成上述各種文件目錄的過程。常見的制作根文件系統的方法是利用工具BusyBox制作根文件系統,用這種方法制作根文件系統可以做到短小精悍且效率較高。文中主要以制作Yaffs2根文件系統為例,論述利用BusyBox工具制作根文件系統的整個過程。系統宿主機是PC機,操作系統是Ubuntu10.04,目標板是基于ARM9-S3C2440微控制器的開發板,內核是Linux2.6.30.4,Bootloader是U-boot。

2 BusyBox簡介

BusyBox是一個集成多個Linux命令和工具的軟件,具有實用穩定、短小精悍等特點,因此BusyBox常常被稱作“The Swiss Army Knife of Embedded Linux”[2]。它將許多常用的Unix命令和工具集合到一個單獨的可執行程序中,雖然與相應的GUN工具比較,其所提供的功能和參數略少,但在比較小的嵌入式系統中已經夠用[3]。BusyBox利用Linux實用工具中代碼大量重復的事實,將重復的代碼重新整理放到一個文件中,減少了多次包含,這樣就可以節省系統的空間并提高程序的執行速度[4]。

3 BusyBox編譯和安裝

首先要到其官方網站 http://www.busybox.net/downloads/下載BusyBox源碼,本文下載的版本為BusyBox-1.13.0.tar. bz2,下載后將其解壓,隨后修改頂層目錄下的MakeFile文件。由于硬件環境是ARM平臺,需要修改編譯工具和系統架構為:

CROSS_COMPILE=arm-linux-

ARCH=arn

下面進行菜單配置,在終端中輸入make menuconfig,選擇需要添加的命令和文件。一般保留默認配置即可,這里不再詳細論述。

設定好配置菜單并保存退出后就可以進行BusyBox的安裝了。在安裝之前首先設定安裝目錄,這里假設安裝在/ home/rootbox下。創建目錄rootbox,然后安裝BusyBox到此目錄下。具體命令如下:

sudo mkdir/home/rootbox/*建立目錄rootbox*/

cd~/busybox-1.13.0/*進入到BusyBox目錄*/

make

make CONFIG PREFIX=/home/rootbox install/*安裝到rootbox目錄*/

編譯結束后會在rootbox目錄下面生成構建根文件系統所需要的一些文件和目錄,分別為bin目錄、sbin目錄、usr目錄以及linuxrc文件。如果沒有指定路徑,則會在BusyBox目錄下生成_install目錄并包含上述目錄和文件。雖然產生的文件并不是很多,但大部分都是經常用到的一些命令,這也正體現出BusyBox的短小精悍。

通過這個步驟,已經實現了BusyBox的安裝,從而完成了最基本的Linux文件框架,下面開始制作根文件系統。

4 制作根文件系統

進入目錄rootbox,在此路徑下繼續建立所需的dev,etc, home,lib,mnt,proc,root,sys,tmp,bin,opt,web,udisk,sddisk,var等目錄。

4.1創建etc目錄下的文件

系統所需的配置文件存放于/home/rootbox/etc這個目錄。配置文件主要依賴于系統中所擁有的應用程序以及這些程序的配置方式。文中主要創建了inittab、init.d/rcS和fstab文件。

4.1.1創建etc/inittab文件

init最主要的功能就是準備軟件執行的環境,包括系統的主機名、網絡設置、語系處理、文件系統格式及其他服務的啟動等[5],而這些操作主要是根據/etc/inittab這個配置文件進行規劃的。

在BusyBox源碼下面存在一個 “examples/inittab”文件,可以參考這個文件內容設定inittab代碼:

#/etc/inittab

::sysint:/etc/init.d/rcs/*定系統啟動的腳本*/

::respawn:-/bin/sh/*打開一個登錄會話*/

S3C2440_seria10:askfirst:-/bin/sh/*指定打開一個無需登陸驗證的*/

shell,以s3c2440_seria10作為控制臺*/

::ctrlaltdel:/sbin/reboot/*指定當按下ctrl+alt+del時執行命令*/

::shutdown:/bin/umount-a-r/*關機時執行的操作*/

4.1.2創建etc/init.d/rcS文件

這個文件是一個腳本文件,主要作用是添加可以自動運行的程序及其執行權限。文中添加的命令是配置IP地址以及掛接下面4.1.3所述/etc/fstab指定的文件系統,也可根據需要添加其它命令。命令內容如下:

#!/bin/sh

ifconfig eth0 192.168.1.10

mount-a

chmod+x etc/init.d/rcs

4.1.3創建etc/fstab文件

Linux將硬盤,分區及可移動磁盤等設備都作為一種文件目錄進行管理,etc/fstab文件就是專門用來配置這些文件目錄進行自動掛載的過程,相當于將mount掛載過程變為自動執行。因此fstab對于文件系統來說非常重要,是Linux系統開機自動引導掛載時所依賴的唯一配置標準。文中創建代碼如下:

#devicemount-pointtypeoptionsdump fsck order

proc/procprocdefaults 00

tmpfs/tmptmpfs defaults 00

sysfs/syssysfsdefaults 00

tmpfs/devtmpfs defaults 00

文件中各字段的含義表示如下:

1)device:掛接設備文件名或設備 Label,比如/dev/ mtdblock1;

2)mount-point:掛載點;

3)type:掛載文件系統類型;

4)options:文件系統參數,如只讀、可執行等,中間以逗號隔開;

5)dump和fsck order:控制dump備份與fsck扇區檢驗。

4.2構建dev目錄

從Linux-2.6.12內核開始,設備管理系統的devfs選項已經從內核配置中刪除[6]。新版本的udev是一個應用層的管理文件,已經不再屬于內核,在內核啟動時并不能自動創建設備節點,必須進行手動創建。這里主要需要兩個設備,一個是用于終端連接的console控制臺,另一個則是用于處理垃圾文件的null。可以采用變通的辦法,利用BusyBox中內置的mdev文件生成一個簡化的udev版本。

s mknod dev/console c 5 1

s mknod dev/nullc 1 3

如果上述操作沒有執行,文件系統在啟動時將不能夠連接控制臺,從而出現錯誤信息。

4.3安裝glibc庫

在嵌入式目標板上還需動態庫和加載器,因此執行命令如下:

scd/hone/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib scp*.so*/home/rootbox/lib

5 在Linux內核中添加對于Yaffs2文件系統的支持

由于文件系統的啟動依賴于嵌入式Linux系統內核,因此必須要在Linux系統內核中添加對于文件系統的支持。

首先需要下載Yaffs文件系統補丁cvs-root.tar.gz,讀者可以在網上搜索下載。下載之后將其解壓,并將這個補丁打在Linux系統內核目錄中,具體命令如下:

star xvfx cvx-root.tar.gz

scd cvs/yaffs2/

s./patch-ker.shc/home/linux-2.6.30.4/

執行之后就會在Linux內核的“fs/”目錄下面看到新添加了一個名為 “yaffs2/”的目錄,同時在“fs/”目錄下面的“Makefile”文件和“Kconfig”文件也添加了 yaffs2的配置和編譯條件。然后編譯配置內核,在內核中添加硬件ECC校驗和YAFFS文件系統的選項,否則yaffs2文件系統可能會掛載不成功。

6 制作文件系統映像

下面就可以制作文件系統映像了。在http://www.yaffs.net/可以得到yaffs文件系統的源碼壓縮包,在yaffs源碼中可以找 到 utils目 錄 ,里 面 包 含 Makefile、mkyaffsimage和mkyaffs2image三個文件。其中mkyaffsimage和mkyaffs2image這兩個文件主要是用來做系統映像,二者的區別是前者用來制作yaffs文件映像,后者用來制作yaffs2文件映像[7]。另外再加入兩個文件:nand-ecc.c和yaffs_packedtags1.c,具體文件這里不列出,源碼可參見文獻[8]。

因為yaffs_packedtags1.c和nand-ecc.c文件是后加上去的,可以增加制作好的文件系統支持大容量磁盤等功能,但是這樣文件數目及內容發生了變化,必須修改Makefile文件 。在 MKYAFFS2SOURCES=mkyaffs2image.c后 面 加yaffs_packedtags1.c nand-ecc.c,將這兩個文件也載入系統映像。然后執行make命令后重新生成mkyaffs2image工具,復制此工具到PC機usr/local/bin目錄下,利用makyaffs2image工具執行命令:

scd/home

smkyaffsimage2 rootbox rootbox.bin

之后就可以生成文件系統映像文件名稱為rootbox.bin。至此,整個根文件系統就制作完成。

7 燒寫文件系統映像

最后需要完成的是將制作好的Linux內核映像和根文件系統映像下載到目標開發板,本文中使用的是基于S3C2440微處理器的開發板,這個步驟可以借助于Windows提供的超級終端工具進行下載。

#tftp 30008000 zImage.bin/*下載Linux內核映像到目標板內存*/

#tftp 30800000 rootbox.bin/*下載根文件系統映像到目標板內存*/

#go30008000/*啟動目標板Linux*/

下載成功后在超級終端中顯示的結果如圖2所示,可見系統已經正常啟動,從而成功生成了根文件系統所必須的文件目錄結構。

圖2 根文件運行結果

8 結束語

根文件系統是Linux嵌入式系統中重要的部分,好的文件系統可以更好的利用軟硬件資源,提高系統性能。Linux嵌入式文件系統種類多樣,在選取時需要根據系統的Flash容量、SDRAM大小以及對文件系統讀寫的需求而定。文中通過對文件系統的制作以及移植的闡述,為Linux嵌入式研究者提供了一種借鑒方法。

[1]陳海燕,任松巖.嵌入式Linux根文件系統的研究[J].現代電子技術,2010(4):73-75.

[2]Erik Andersen.BusyBox:The Swiss Army Knife of Embedded Linux[EB/OL].(2008)[2014-12-11],http://www.busybox.net/about.html.

[3]陳峰,李濱滔,戈志華.基于S3C2410的嵌入式Linux系統構建[J].現代電子技術,2007(24):55-57.

[4]陳立定,楊俊輝,陳偉欣.使用Busybox制作Cramfs根文件系統[J].計算機技術與發展,2009(4):146-148,153.

[5]鳥哥.鳥哥的linux私房菜-基礎學習篇(第三版)[M].北京:人民郵電出版社,2010.

[6]王磊,謝維波.AdHoc網絡在嵌入式Linux上的實現[J].華僑大學學報自然科學版,2011(3):161-164.

[7]龍亞春,黃璞,吳勝.超大容量NAND Flash文件系統-YAFFS2 在Linux下的實現 [J].北京電子科技學院學報,2007,15(2):81-84.

[8]小龍.利用BusyBox做yaffs根文件系統 [EB/OL].(2009-01)[2014-12-11],http://blog.mcuol.com/User/longren/Article/9633_1. htm.

A method of building embedded Linux root file system

LIU Er-gang
(College of Information Science&Technology,Hainan University,Haikou 570228,China)

The root file system is a very important part of building the embedded Linux system.This paper mainly makes Yaffs2 root file system as an example of studying how to use the BusyBox to build embedded Linux root file system,including the BusyBox configuration,compilation and installation,and generates the system image files of root file in the embedded Linux environment.The method introduced in the paper is able to transplant and run successfully in the ARM development board,and puts forward a kind of feasible research ideas for the development of embedded system.

BusyBox;Yaffs2;Embedded Linux;file system

TN99

A

1674-6236(2016)09-0160-03

2015-05-29稿件編號:201505255

海南省自然科學基金資助項目(614225)

劉二鋼(1980—),男,山西長治人,碩士研究生,講師。研究方向:嵌入式系統、圖像處理。

猜你喜歡
嵌入式系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
搭建基于Qt的嵌入式開發平臺
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
主站蜘蛛池模板: 国产日韩精品欧美一区喷| 无码av免费不卡在线观看| 超碰91免费人妻| 日韩精品一区二区深田咏美| 国产成人AV男人的天堂| 99视频在线免费| 婷婷综合亚洲| 爆乳熟妇一区二区三区| 欧美日韩午夜| 婷婷午夜天| 国产对白刺激真实精品91| 91小视频在线观看| 在线观看欧美国产| 亚洲美女高潮久久久久久久| 九九九精品视频| 99久久国产综合精品2023| 亚洲另类第一页| 午夜a视频| 欧美日韩高清| 一级爱做片免费观看久久| 丁香六月综合网| 亚洲精品波多野结衣| 国产在线无码av完整版在线观看| 丁香婷婷激情综合激情| 日韩一级毛一欧美一国产| 老司国产精品视频91| 亚洲一区波多野结衣二区三区| 国产Av无码精品色午夜| аv天堂最新中文在线| 久久久久久高潮白浆| 精品国产污污免费网站| 久久国产亚洲偷自| 99视频只有精品| 色135综合网| 国产乱人免费视频| 久久一日本道色综合久久| 色天天综合| 亚洲日本www| 欧美另类第一页| 亚洲人成高清| 在线观看国产精美视频| 久久黄色小视频| 色九九视频| 在线精品视频成人网| 国产全黄a一级毛片| 欧美精品另类| 免费又爽又刺激高潮网址| 噜噜噜久久| 精品国产成人高清在线| 亚洲清纯自偷自拍另类专区| 亚洲日本中文综合在线| 亚洲三级影院| 亚洲第一色网站| 久久人搡人人玩人妻精品| 999国产精品| 婷婷午夜影院| 国产精品成人一区二区不卡 | 99在线观看国产| 日本高清免费一本在线观看 | 亚洲人成电影在线播放| 亚洲午夜福利精品无码不卡| 婷婷色丁香综合激情| 久久大香香蕉国产免费网站| 国产一区二区三区在线观看视频| 亚洲成年网站在线观看| 欧美日韩激情在线| 亚洲无线一二三四区男男| 亚洲日韩Av中文字幕无码| 欧美亚洲国产一区| 精品五夜婷香蕉国产线看观看| 超清无码一区二区三区| 亚洲,国产,日韩,综合一区| 2021国产乱人伦在线播放 | 中文字幕亚洲电影| 超清无码一区二区三区| 老司机久久99久久精品播放| 亚洲高清在线天堂精品| 国产黄网站在线观看| 99精品一区二区免费视频| 亚洲无码免费黄色网址| 久久频这里精品99香蕉久网址| 精品国产中文一级毛片在线看|