历史上的今天
返回首页

历史上的今天

今天是:2025年12月20日(星期六)

2022年12月20日 | 嵌入式Linux NFS根文件系统的构建及研究

2022-12-20 来源:21ic

随着信息技术的发展,嵌入式系统技术已经广泛应用于国防、通信、工业控制、消费电子等诸多领域。其中,Linux作为一款开源、成熟且高效稳定的多任务操作系统,先天具有许多不可比拟的优势,已成为目前最具潜力的嵌入式操作系统。众所周知,构建根文件系统对于嵌入式Linux开发至关重要,它是内核启动后加载的第1个文件系统,是决定系统能否正常启动的关键所在。在开发阶段,程序往往需要反复多次的调试,鉴于此,构建基于NFS(Network File System)的根文件系统就尤为重要;这样就免去了对目标开发板的反复烧写,方便地在线对程序进行更改与调试。本文以Busybox软件为基础,介绍了一种实用的NFS根文件系统构建方法。

1 嵌入式根文件系统简介
Linux启动时,第一个必须挂载的就是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会报错进而退出启动。系统成功启动之后,才可以自动或手动挂载其他的文件系统。


Linux系统各个分区存储文件时,需要遵循一定的格式,这种文件格式称为文件系统类型,比如常见的有ext2,ext3,ext4等。在存储设备方面,FLASH是目前嵌入式系统中广泛采用的主流存储设备,它是一种可电擦写的非易失性存储器,具有体积小,功耗低,密度高等优点。目前FLASH中常见的文件系统主要有Cramfs,Jffs2,Yaffs2等。嵌入式Linux基本的根文件目录结构如表1所示。

a.jpg?imageView2/2/w/550



2 Busybox简介
Busybox常被形象地称为嵌入式Linux系统开发中的“瑞士军刀”,它将许多常用的UNIX命令和工具结合到了一个单独的可执行程序中。虽然与相应的GNU工具相比较,Busybox所提供的功能和参数略少,但在比较小的系统或者嵌入式系统中已经足够了。它仅用一个可执行文件就可以提供基本的Linux操作系统所需的命令,体积很小,配置起来也很方便。

3 Busybox的编译与安装
3.1 开发环境
基于飞凌OK-2440Ⅲ的硬件平台采用S3C2440芯片,外围包括64 MB的SDRAM内存、128 MB的NAND FLASH,以及4 MB的NOR FLASH。采用宿主机加目标板的开发模式,宿主机的系统是Fedora12,目标板的内核版本是Linux2.6.30.4,Bootloader采用U-boot。


3.2 配置Busybox
Busybox的源码在官方网站www.Busybox.net/下载,然后解压并进行配置安装,具体步骤如下:
b.jpg?imageView2/2/w/550

在执行make命令之前应该修改顶层Makefile文件(ARCH=arm,CROSS_COMPILE=arm-linux-),也可以在make menuconfig进一步根据自己的需要来灵活配置Busyhox。执行完make install命令后会自动在当前目录的_install目录下生成bin,sbin,linuxrc三个文件。
配置界面如图1所示。

g.jpg?imageView2/2/w/550



4 构建根文件系统
4.1 创建脚本文件
为了简化构建根文件系统的操作,首先进入到开发目录,如下新建一个脚本文件create_myrootfs_bash:
c.jpg?imageView2/2/w/550
使用命令chmod+x create_myrootfs_bash改变文件的可执行权限,./create_myrootfs_bash运行脚本,就完成了基本根文件系统目录的创建。

4.2 建立系统配置文件inittab,fstab,rcS
d.jpg?imageView2/2/w/550
4.3 安装动态库
如果Busybox采用动态链接的方式编译,还需要加载器和链接库执行如下命令:
h.jpg?imageView2/2/w/550

5 NFS的安装与配置
NFS(Network File System)是由SUN公司推出的一种分布式文件系统,它能使用户在使用另外的联网机文件或外设时,与使用本地机一样方便。以root的身份在控制台输入setup,在系统服务选项中选中nfs服务,如图2所示。

i.jpg?imageView2/2/w/550


配置NFS服务器的共享主目录,注意权限问题:
k.jpg?imageView2/2/w/550

6 挂载NFS根文件系统
通过串口和RJ45网口连接宿主机与目标开发板,启动超级终端,输入以下命令:
l.jpg?imageView2/2/w/550
目标板启动后在超级终端中显示的结果如图3所示。可见,NFS根文件系统已经成功加载。

j.jpg?imageView2/2/w/550



7 结语
对以Busybox制作嵌入式Linux根文件系统的基本方法进行了归纳和总结,进一步给出了基于NFS构建的嵌入式Linux根文件系统的一般方法。利用此法构建出来的NFS根文件系统可以直接用于嵌入式Linux系统的开发,实时方便地对开发程序进行更改和调试,有效地避免了反复对目标开发板的直接烧写,提高了开发效率,缩短了开发周期。


推荐阅读

史海拾趣

Fractus公司的发展小趣事

为了加速技术的商业化进程,Fractus积极寻求与全球领先企业的合作。自2000年以来,公司陆续与多家知名手机厂商、电信运营商以及设备制造商建立了战略合作关系。这些合作不仅为Fractus带来了稳定的收入来源,也促进了其技术的广泛应用和持续改进。同时,Fractus还通过签订全球许可协议和建立战略伙伴关系,进一步拓展了其业务范围和市场影响力。

Advanced Power Solutions公司的发展小趣事

随着全球环保意识的提高,Advanced Power Solutions公司开始关注电源管理技术的环保性能。公司投入大量资源研发绿色、低碳的电源管理产品,并成功推出了一系列符合环保标准的新产品。这些产品不仅受到了消费者的欢迎,也赢得了政府和环保组织的认可。公司的环保理念和创新精神为其赢得了良好的社会声誉。

Discera公司的发展小趣事

Discera公司的产品在性能和稳定性上表现出色,很快就引起了美国军方的关注。经过严格的测试和评估,Discera的CMOS MEMS谐振器成功通过了美国军方的质量可靠性测试,并获得了军方的认证。这一成就不仅证明了Discera产品的卓越性能,也为公司进一步拓展军用市场打下了坚实的基础。

FASTRAX公司的发展小趣事

2012年,瑞士公司u-blox宣布以1300万欧元收购FASTRAX 100%的股权。这一并购事件引起了业界的广泛关注。u-blox看中了FASTRAX在GPS接收模块领域的领先地位和技术实力,希望通过并购加强其在定位市场的竞争优势。并购完成后,FASTRAX成为u-blox集团的重要一员,继续为全球客户提供优质的GPS产品和服务。

American Technical Ceramics (ATC)公司的发展小趣事

在成立初期,FASTRAX就注重技术创新,不断推出新的产品和技术方案。其中,Fastrax iSuite MP SDK软件开发系统是其技术创新的代表,该系统为编程人员提供了丰富的资源,大大简化了GPS接收模块的开发过程。这一创新不仅提升了FASTRAX产品的竞争力,也推动了整个电子行业的发展。

Alcatel-Lucent公司的发展小趣事

2012年,瑞士公司u-blox宣布以1300万欧元收购FASTRAX 100%的股权。这一并购事件引起了业界的广泛关注。u-blox看中了FASTRAX在GPS接收模块领域的领先地位和技术实力,希望通过并购加强其在定位市场的竞争优势。并购完成后,FASTRAX成为u-blox集团的重要一员,继续为全球客户提供优质的GPS产品和服务。

问答坊 | AI 解惑

请教有没实现过文件上传的

设备是在wince平台开发的,通过PC的浏览器可以访问。现在想通过浏览器向设备传送文件,应该有什么办法? ASP能否实现?…

查看全部问答>

wince里comman.bib里那么多冒号问题

comman.bib里为什么有那么多的冒号啊,屏蔽了那么多的东西,比如: ; @CESYSGEN IF FONTS_ARIALBD_1_08 ;    arialbd.ttf     $(_WINCEROOT)\\public\\common\\oak\\files\\arialbd_1_08.ttf     & ...…

查看全部问答>

2410+wince500 网卡问题

以太网初始化的发生reset错误,不知道什么原因,是从cs8900的lib文件中调用的函数 Initiating image download in 3 seconds. Starting auto-download ... memorybase:FLAG^_^CS8900: MAC Address: ff:31:4:0:ff:31 ERROR: Reset: Reset failed ...…

查看全部问答>

大家说说手上的板子来自何方呀

    论坛潜水很久啦,看高人如过江之鲫……     看到很多高手都要很多板子,羡慕哟,问下大家你们的板子都来自哪里呀     我手上只有一块51的开发板,淘宝上买的,寒酸哟,最近准备入手arm………

查看全部问答>

vxworks 驱动要怎么调试

我在搭建vxworks5.5 下的文件系统TFFS,现在MTD程序写完了我要怎么调试,tffsShow 这个函数调用通过了,下面怎么走 我使用usrtffsconfig(0,0,“/tffs0”) 出错? …

查看全部问答>

请教关于用lwip在lm3s9b96上面做服务器端不断开连接持续接受客户端发送的数据

参考academic的程序在9b96上面用lwip  raw api做成服务端,当客户端每次发送数据给服务器端时服务器端都会在接受数据后断开连接,代码参考academic的enet_tcp。 我将close_tcp()函数在App_sent()函数里面注释掉后,同时改变里面tcp_re ...…

查看全部问答>

大家帮我看一下这个运算电路

大家帮我看看这个电路啊,帮我分析一下作用,一级一级的,越详细越好,谢谢了,小弟愚钝,希望多多指教啊,谢谢你您们了…

查看全部问答>

大爱TI_M3与M4

最近想深入学习一下LM3S9B96或者LM4F232,就是官网带液晶那种,可以跑跑操作系统,进行cotex-M3的深入学习,不知道论坛坛友们有没有闲置的可以借用呀呵呵!!!不胜感激,嘿嘿!!!! [ 本帖最后由 鑫海宝贝 于 2012-5-22 14:57 编辑 ]…

查看全部问答>