嵌入式根文件系统制作

1:文件系统分类:
   基于flash的文件系统:flash有两种一种是NOR,另一种NANDNOR型 FLASH主要用于存放程序NAND型 FLASH主要用于存放数据NOR的特点是可在芯片内执行。这样应用程序可以直接在flash内存内运行,不必再把代码读到系统的RAM中。NOR的传输效率很高,但写入和擦除速度较低而NAND结构能提供极高的单元密度。并且写入和擦除也很快。是提高数据存储密度的最佳选择JFFS2型文件系统主要用于NOR型flash。其特点为可读写,支持数据压缩的日志型文件系统.而yaffs文件系统一般是基于NAND FLASH上。yaffs文件系统与jffs相比,减少了一些功能(如支持数据压缩),所以挂载时间更短,速度更快,对内存占用更小。cramfs文件系统既可以用在NOR型flash上,也可以用在NAND型FLASH上。其特点为只读的压缩文件系统

    基于RAM的文件系统:ramdisk文件系统,严格的讲ramdisk并不是一种文件系统,而只是一种磁盘访问技术。是将内存中一块区域当作磁盘来用。是一种将实际的文件系统(如ext2)装入内存的机制。还有一种initramfs文件系统,也是基于RAM的。不做介绍了。进入主题。

   cramfs是一个压缩式的文件系统,它并不需要一次性地将文件系统中的所有内容都解压缩到内存中,
而只是在系统需要访问到某个位置的数据的时候,马上计算出该数据在cramfs中的位置,将其实时地
解压缩到内存之中,然后通过对内存的访问来获取文件中需要读取的数据
cramfs中的解压缩以及解
压缩之后的内存中数据存放位置都是由cramfs文件系统本身进行维护的,用户并不需要了解具体的实现
过程,因此这种方式增强了透明度,对开发人员来说,既方便、又节省了存储空间。
cramfs拥有以下一些特性:
1、采用实时解压缩方式,但解压缩的时候有延迟
2、cramfs的数据都是经过处理、打包的,对其进行写操作有一定困难。所以cramfs不支持写操作,这个特性
刚好适合嵌入式应用中使用Flash存储文件系统的场合
3、在cramfs中,文件最大不能超过16MB

2.1 Linux根文件系统

  根文件系统不同于普通文件系统,它是在内核启动时挂载(mount)的第一个文件系统, 内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后把一 些基本的初始化脚本和服务程序等加载到内存中。

  Linux 根文件系统是树型结构组织[1,3],它包含了内核和系统管理所需要的各种文档和程序等。一般来说,根目录“/”下顶层目录都有一些比较固定命名和用途,下面列出一

  个Linux 根文件系统中的比较常见的目录结构。

  /bin:存放二进制可执行命令的目录。

  /dev:存放设备文件和目录。

  /etc:存放系统管理和配置文件和目录。

  /home:用户主目录,比如用户user 的主目录就是/home/user,可以用~user 来表示。

  /lib:存放动态链接共享库的目录。

  /sbin:存放系统管理员使用的管理程序的目录。

  /tmp:公用的临时文件存储点。

  /root:系统管理员的主目录。

  /mnt:用以临时挂载其他的文件系统。

  /proc:虚拟文件系统,可直接访问这个目录来获取系统信息。

  /var:某些大文件溢出区。

  /usr:存放应用程序和文件。

  对于嵌入式 Linux 系统的根文件系统来说,由于受系统资源的限制,一般没有上述 那么复杂仅保留一些常用的目录即可。如/bin、/dev、/etc、/lib、/proc、/var、/tmp、/usr、 /mnt 等[2]。 由于嵌入式系统的设计冗余度小、系统紧凑,通常存储容量有限,因此,必须选择 一个合适的根文件系统以使系统运行最佳。目前嵌入式Linux 根文件系统主要的根文件系 统类型有Romfs, JFFS2, RAMDISK, YAFFS/YAFFS2, Cramfs, Squashfs 等[1]。本文主要对 Cramfs 根文件系统进行讨论

 

 

3:根文件系统的制作

(1):新建一个目录,取名为rootfs,在其文件夹下创建根文件系统必须的目录。这些目录有:bin,dev,etc,lib,proc,sbin,sys,usr,mnt,tmp,var.usr/bin,usr/lib,usr/sbin,lib/modules。

(2):创建设备文件,以下两个设备文件必须创建。

   mknod -m 666 console c 5 1 (说明:C为字符型设备的意思,5为主设备号,1为次设备号)

   mknod -m 666 null c 1 3

(3)在/etc目录下装以上文件。inittab ,profile,fstab,init.d(文件夹),init.d/rcS.这几个文件必须要有,我做实验的时候是直接拷的开发箱上的这几个文件。

(4)编译内核模块          make modules

(5)安装内核模块

make modules_install INSTALL_MOD_PATH=/XXX/rootfs(后面跟根文件系统路径,为什么要安装模块到根文件系统,是因为这些模块是用的时候才加入内核中。保存在根文件系统的lib/modules目录中)

(6)配置busybox

  busybox主要是制作根文件系统下面的命令,如ls,mkdir等。这是一个很好用的工具。最后编译成功会生成一个busybox文件,然后这些命令最后都是链结到这个busybox文件上。busybox配置中注意的选项有:编译选项中选择使用静态链接库,交叉编译环境的选择。特别注意里面有一个installation option.里面有一个busybox installation prefix,把你建的rootfs的路径填进去。

(7)如果busybox成功配置好,那么你转到rootfs下的bin目录就可以看到很多的命令和一个busybox文件。最后一步就是把rootfs打包成适合开发板的镜像文件了,这一步根据你要选择的文件系统,开发板的文件系统地址有关。我用的是jffs2文件系统。最后的命令为./mkfs.jffs2 -r rootfs -o rootfs.img -e 0x20000 --pad=0xd00000

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跨时钟域电路设计——结绳法

信号从快时钟域到慢时钟域过渡时,慢时钟可能无法对快时钟变化太快的信号进行采样。 之前的同步器法对两个时钟间的关系有要求,结绳法适用于任何时钟域之间的过渡。 结绳法的原理是将快时钟信号的脉冲周期延长,等到慢时钟周期采样后再“解绳”…

我之理解---计时器setTimeout 和clearTimeout

今天在写个图片切换的问题 有动画滞后的问题,才动手去查setTimeout 和clearTimeout。之前写的图片播放器也有类似的问题,有自动start按钮 和stop按钮, 其他都正常,问题出在每次多次快速的点击start按钮时,图片播放的速…

002服务提供者Eureka

1、POM配置 和普通Spring Boot工程相比&#xff0c;仅仅添加了Eureka、Spring Boot Starter Actuator依赖和Spring Cloud依赖管理 <dependencies><!--添加Eureka Server依赖--><dependency><groupId>org.springframework.cloud</groupId><art…

使用Busybox构造cramfs根文件系统

使用Busybox构造cramfs根文件系统 11.1、下载Busybox&#xff0c;如果系统中没有mkcramfs工具则还要下载mkcramfs压缩工具。本文件系统使用Busybox-1.10.1&#xff0c;cramfs-1.1。压缩文件Busybox-1.10.1.tar.bz2&#xff0c;cramfs-1.1.tar.gz。 22.解压文件&#xff1a; tar…

关于二维码分块上色(彩色二维码)的算法研究

原文:关于二维码分块上色&#xff08;彩色二维码&#xff09;的算法研究众所周知&#xff0c;二维码通常是黑白的&#xff0c;而且是由若干个长方形或正方形小块平铺而成。但从人们的审美角度来看&#xff0c;常见的黑白二维码不免让人审美疲劳。本文试着从分块上色的角度对二维…

20145309信息安全系统设计基础第12周学习总结后篇

指针与声明 声明 1、C语言中变量的声明 类型&#xff08;type&#xff09; 声明符&#xff08;declarator&#xff09; 2、最简单的声明是变量 3、指针数组 指针数组是一个数组数组里的元素都是指针例&#xff1a;int *daytab[13]4、数组指针 数组指针是一个指针指针指向一个类…

跨时钟域电路设计——多bit信号FIFO

多个bit信号的跨时钟域仅仅通过简单的同步器同步时不安全的。 如下图&#xff1a; 虽然信号都同步到目的时钟域&#xff0c;可完成的功能却与设计的初衷不相符。 解决方案之一为对信号进行格雷码编码&#xff0c;但此方案只适用于连续变化的信号。另一种方案为增加新的控制信号…

嵌入式linux系统中设备驱动程序

嵌入式linux系统中设备驱动程序是内核的一部分&#xff0c;完成对设备初始、读写操作和控制等功能。驱动程序隐藏了硬件设备的具体细节&#xff0c;对不同的设备提供一致的接口&#xff0c;这些接口通过file_Operation结构来定义&#xff0c;设计驱动程序的大部分工作就是根据硬…

WPF 打印实例

原文:WPF 打印实例在WPF 中可以通过PrintDialog 类方便的实现应用程序打印功能&#xff0c;本文将使用一个简单实例进行演示。首先在VS中编辑一个图形&#xff08;如下图所示&#xff09;。 将需要打印的内容放入同一个<Canvas>中&#xff0c;并起名为“printArea”&…

mongodb 物理删除数据

刚开始用mongodb的时候&#xff0c;感觉很好用&#xff0c;速度很快&#xff0c;不过后面就遇到一个问题&#xff0c;数据物理内存一直增加&#xff0c;删除表也不管用。 然后网上找了各种办法&#xff0c;最后发现一个办法管用&#xff0c;就是物理删除存储数据。 操作如下&am…

计数排序、桶排序和基数排序

计数排序 当输入的元素是 n 个 0 到 k 之间的整数时&#xff0c;它的运行时间是 Θ(n k)。计数排序不是比较排序&#xff0c;排序的速度快于任何比较排序算法。 由于用来计数的数组C的长度取决于待排序数组中数据的范围&#xff08;等于待排序数组的最大值与最小值的差加上1&a…

静态时序分析——基础概念

一、简述 静态时序分析是检查系统时序是否满足要求的主要手段。以往时序的验证依赖于仿真&#xff0c;采用仿真的方法&#xff0c;覆盖率跟所施加的激励有关&#xff0c;有些时序违例会被忽略。此外&#xff0c;仿真方法效率非常的低&#xff0c;会大大延长产品的开发周期。静…

linux framebuffer 例子

昨天做的一个极简单的framebuffer的例子&#xff0c;用来学习怎样操作fb设备。 这段代码是在picogl的vesafb backend部分的基础上简出来的&#xff0c;所以变量名还保留着。 流程如下&#xff1a; &#xff11; 打开framebuffer设备&#xff1b; &#xff12; 通过ioctl取得f…

加载数据时,页面显示正在加载的动画,支持移动端

最近在使用ionic3做一个移动端APP&#xff0c;在用户网络环境差的时候&#xff0c;查询数据会比较慢&#xff0c;这个时候需要模拟其他成熟的APP给页面上加入一个加载的动画。由于一开始我不知道ionic3本身已经提供了一套组件&#xff0c;所以自己先做了一套样式。提供给不用框…

静态时序分析——单周期

一、建立时间的检查 建立时间的检查是指检查电路里每一个触发器的数据和时钟的关系是否满足建立时间的要求。 我们以上图为例进行建立时间检查。由图可知&#xff0c;我们主要针对第二个触发器UFF1进行检查。我们可以梳理时序关系如下&#xff1a; 通过这个图&#xff0c;我们…

自己搭建的CISCO实验环境

交换机&#xff1a;设备型号&#xff1a; CISCO 3750 24-TS 3台CISCO 3750 48-PS 1台路由器&#xff1a;设备型号&#xff1a;1.CISCO 2821 3台2.CISCO 3745 3台 物理拓扑图如下&#xff1a; 转载于:https://blog.51cto.com/zxs3026/2156424

关于大数定律的讨论(转)

科普一下所谓“大数定律的四种证法” 作者 : 王若度最近网上总是调侃数学、统计博士知道所谓“大数定律的四种证法”&#xff0c;本身是模仿《孔乙己》的桥段&#xff0c;用以调侃数学、统计博士学一些没什么用的东西。其实我是从来没听说过大数定律的四种证法这回事的&#x…

DM365 u-boot 启动分析

第一阶段&#xff1a;汇编语言启动 先看u-boot/board/davinci/dm365_ipnc/下的文件。 u-boot.lds OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) SECTIONS { . 0x0000000…

[Luogu1821][USACO07FEB]银牛派对Silver Cow Party

由题意可知&#xff0c;我们需要求的是很多个点到同一个店的最短距离&#xff0c;然后再求同一个点到很多个点的最短距离。 对于后者我们很好解决&#xff0c;就是很经典的单源最短路径&#xff0c;跑一边dijkstra或者SPFA即可。 然而对于前者&#xff0c;我们应该怎么解决呢&a…

CMOS组合逻辑

1. 静态互补CMOS 实际上就是静态CMOS反相器扩展为具有多个输入。更反相器一样具有良好的稳定性&#xff0c;性能和功耗。 静态的概念&#xff1a;每一时刻每个门的输出通过低阻抗路径连到VDD或VSS上。任何时候输出即为布尔函数值。动态电路通常依赖把信号暂存在高阻抗节点的电…