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

一種構(gòu)建嵌入式Linux根文件系統(tǒng)的方法

2016-09-08 06:13:32劉二鋼
電子設(shè)計工程 2016年9期
關(guān)鍵詞:嵌入式系統(tǒng)

劉二鋼

(海南大學(xué) 信息科學(xué)技術(shù)學(xué)院,海南 ??凇?70228)

一種構(gòu)建嵌入式Linux根文件系統(tǒng)的方法

劉二鋼

(海南大學(xué) 信息科學(xué)技術(shù)學(xué)院,海南 ???70228)

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

BusyBox;Yaffs2;嵌入式Linux;文件系統(tǒng)

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

1 Linux根文件系統(tǒng)簡介

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

圖1 根文件目錄結(jié)構(gòu)

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

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

2 BusyBox簡介

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

3 BusyBox編譯和安裝

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

CROSS_COMPILE=arm-linux-

ARCH=arn

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

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

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

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

make

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

編譯結(jié)束后會在rootbox目錄下面生成構(gòu)建根文件系統(tǒng)所需要的一些文件和目錄,分別為bin目錄、sbin目錄、usr目錄以及l(fā)inuxrc文件。如果沒有指定路徑,則會在BusyBox目錄下生成_install目錄并包含上述目錄和文件。雖然產(chǎn)生的文件并不是很多,但大部分都是經(jīng)常用到的一些命令,這也正體現(xiàn)出BusyBox的短小精悍。

通過這個步驟,已經(jīng)實現(xiàn)了BusyBox的安裝,從而完成了最基本的Linux文件框架,下面開始制作根文件系統(tǒng)。

4 制作根文件系統(tǒng)

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

4.1創(chuàng)建etc目錄下的文件

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

4.1.1創(chuàng)建etc/inittab文件

init最主要的功能就是準備軟件執(zhí)行的環(huán)境,包括系統(tǒng)的主機名、網(wǎng)絡(luò)設(shè)置、語系處理、文件系統(tǒng)格式及其他服務(wù)的啟動等[5],而這些操作主要是根據(jù)/etc/inittab這個配置文件進行規(guī)劃的。

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

#/etc/inittab

::sysint:/etc/init.d/rcs/*定系統(tǒng)啟動的腳本*/

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

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

shell,以s3c2440_seria10作為控制臺*/

::ctrlaltdel:/sbin/reboot/*指定當(dāng)按下ctrl+alt+del時執(zhí)行命令*/

::shutdown:/bin/umount-a-r/*關(guān)機時執(zhí)行的操作*/

4.1.2創(chuàng)建etc/init.d/rcS文件

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

#!/bin/sh

ifconfig eth0 192.168.1.10

mount-a

chmod+x etc/init.d/rcs

4.1.3創(chuàng)建etc/fstab文件

Linux將硬盤,分區(qū)及可移動磁盤等設(shè)備都作為一種文件目錄進行管理,etc/fstab文件就是專門用來配置這些文件目錄進行自動掛載的過程,相當(dāng)于將mount掛載過程變?yōu)樽詣訄?zhí)行。因此fstab對于文件系統(tǒng)來說非常重要,是Linux系統(tǒng)開機自動引導(dǎo)掛載時所依賴的唯一配置標準。文中創(chuàng)建代碼如下:

#devicemount-pointtypeoptionsdump fsck order

proc/procprocdefaults 00

tmpfs/tmptmpfs defaults 00

sysfs/syssysfsdefaults 00

tmpfs/devtmpfs defaults 00

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

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

2)mount-point:掛載點;

3)type:掛載文件系統(tǒng)類型;

4)options:文件系統(tǒng)參數(shù),如只讀、可執(zhí)行等,中間以逗號隔開;

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

4.2構(gòu)建dev目錄

從Linux-2.6.12內(nèi)核開始,設(shè)備管理系統(tǒng)的devfs選項已經(jīng)從內(nèi)核配置中刪除[6]。新版本的udev是一個應(yīng)用層的管理文件,已經(jīng)不再屬于內(nèi)核,在內(nèi)核啟動時并不能自動創(chuàng)建設(shè)備節(jié)點,必須進行手動創(chuàng)建。這里主要需要兩個設(shè)備,一個是用于終端連接的console控制臺,另一個則是用于處理垃圾文件的null??梢圆捎米兺ǖ霓k法,利用BusyBox中內(nèi)置的mdev文件生成一個簡化的udev版本。

s mknod dev/console c 5 1

s mknod dev/nullc 1 3

如果上述操作沒有執(zhí)行,文件系統(tǒng)在啟動時將不能夠連接控制臺,從而出現(xiàn)錯誤信息。

4.3安裝glibc庫

在嵌入式目標板上還需動態(tài)庫和加載器,因此執(zhí)行命令如下:

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

5 在Linux內(nèi)核中添加對于Yaffs2文件系統(tǒng)的支持

由于文件系統(tǒng)的啟動依賴于嵌入式Linux系統(tǒng)內(nèi)核,因此必須要在Linux系統(tǒng)內(nèi)核中添加對于文件系統(tǒng)的支持。

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

star xvfx cvx-root.tar.gz

scd cvs/yaffs2/

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

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

6 制作文件系統(tǒng)映像

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

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

scd/home

smkyaffsimage2 rootbox rootbox.bin

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

7 燒寫文件系統(tǒng)映像

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

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

#tftp 30800000 rootbox.bin/*下載根文件系統(tǒng)映像到目標板內(nèi)存*/

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

下載成功后在超級終端中顯示的結(jié)果如圖2所示,可見系統(tǒng)已經(jīng)正常啟動,從而成功生成了根文件系統(tǒng)所必須的文件目錄結(jié)構(gòu)。

圖2 根文件運行結(jié)果

8 結(jié)束語

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

[1]陳海燕,任松巖.嵌入式Linux根文件系統(tǒng)的研究[J].現(xiàn)代電子技術(shù),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系統(tǒng)構(gòu)建[J].現(xiàn)代電子技術(shù),2007(24):55-57.

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

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

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

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

[8]小龍.利用BusyBox做yaffs根文件系統(tǒng) [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

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

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

猜你喜歡
嵌入式系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機系統(tǒng)
ZC系列無人機遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應(yīng)用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統(tǒng)通信技術(shù)的應(yīng)用
電子制作(2018年18期)2018-11-14 01:48:16
搭建基于Qt的嵌入式開發(fā)平臺
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
主站蜘蛛池模板: 国产午夜无码片在线观看网站| 色偷偷男人的天堂亚洲av| 网久久综合| 色首页AV在线| 国产成人午夜福利免费无码r| 毛片网站免费在线观看| 亚洲香蕉久久| 天堂亚洲网| www.狠狠| 亚洲另类国产欧美一区二区| 香蕉eeww99国产在线观看| 亚洲精品视频网| 亚洲精品日产精品乱码不卡| 97se亚洲综合在线韩国专区福利| 免费一级α片在线观看| 91国内在线观看| 亚洲国产中文在线二区三区免| vvvv98国产成人综合青青| 伊人狠狠丁香婷婷综合色| 国产在线精品美女观看| 久久精品娱乐亚洲领先| 亚洲天堂久久久| 亚洲天堂视频在线观看免费| 亚洲精品无码av中文字幕| 国产精品人莉莉成在线播放| 亚洲AV无码久久天堂| 国产成人凹凸视频在线| 午夜国产精品视频| 午夜不卡福利| 亚洲精品国产乱码不卡| 日本三级黄在线观看| 亚洲成人网在线观看| 中文字幕天无码久久精品视频免费| 国产a网站| 中文成人无码国产亚洲| 国产精品自在线拍国产电影| 国产精品女同一区三区五区| 精品自拍视频在线观看| 日韩欧美国产三级| 国产精品美女在线| 国产美女视频黄a视频全免费网站| 成人无码一区二区三区视频在线观看 | 91亚洲视频下载| 亚洲精品自产拍在线观看APP| 成人午夜网址| 亚洲成a人在线播放www| 97国产在线观看| 亚洲国产天堂在线观看| 亚洲第一在线播放| 日本爱爱精品一区二区| 色综合狠狠操| 内射人妻无码色AV天堂| 伊人久久精品无码麻豆精品 | 国产永久在线视频| 免费国产黄线在线观看| 久久激情影院| 色婷婷狠狠干| 成人免费视频一区| 欧美综合区自拍亚洲综合绿色 | 71pao成人国产永久免费视频 | 国产成人亚洲无吗淙合青草| 日本草草视频在线观看| 精品久久蜜桃| 毛片卡一卡二| 免费国产高清精品一区在线| 美女无遮挡免费网站| 国产日韩欧美精品区性色| 国产成人无码播放| 精品成人一区二区三区电影| 亚洲a级在线观看| AV不卡在线永久免费观看| 国产精品视频导航| 亚洲天堂成人在线观看| 欧美一级在线看| 亚洲制服中文字幕一区二区| 在线观看亚洲人成网站| 精品日韩亚洲欧美高清a| 国产日本欧美在线观看| 91麻豆国产视频| 国产凹凸一区在线观看视频| 亚洲无码视频一区二区三区 | 99人体免费视频|