1:文件系统分类:
   基于flash的文件系统:flash有两种,一种是NOR,另一种NAND。NOR型 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

嵌入式根文件系统制作相关推荐

  1. 【笔记】嵌入式根文件系统制作随堂笔记

    喏,这个是基于x210文件系统的制作过程学习哦! 笔记依然是自己一个字一个字手打的=.= 想要机酱的Ubuntu环境的话,往后我会把Vmware的克隆包链接丢上来的 授课老师:朱有鹏 听课辣鸡:宕机酱 ...

  2. 嵌入式linux启动根文件系统,嵌入式Linux根文件系统制作和挂载

    嵌入式Linux系统由三部分组成: uboot.kernel.根文件系统, 还是这张老图 这里的根文件系统可以说是包含两个部分: 一个是根,一个是文件系统 那么什么是根呢?哈哈 其实根表示的就是第一个 ...

  3. 嵌入式Linux根文件系统制作

    嵌入式Linux根文件系统制作 一.根文件系统简介 根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,但是相对于普通的文件系统而言它还是内核启动时所挂载(mount)的 ...

  4. 嵌入式Linux内核以及根文件系统制作

    内核制作 注意: 我测试的使用nandflsh中bootloader启动,sd卡bootloader启动有问题 制作嵌入式平台使用的Linux内核,方法和制作PC平台的Linux内核基本一致. 清除原 ...

  5. 根文件系统制作一制作根文件系统树

    完成了u-boot移植后就是内核移植然后是根文件系统制作,这次分为这几部分书写:根文件系统树.文件系统initramfs.jaffs2.ubifs 有必要了解一些存储系统和文件系统的知识 Norfla ...

  6. Linux内核移植和根文件系统制作(详细步骤精讲)

    第一章移植内核 1.1 Linux内核基础知识 1.1.1 Linux版本 1.1.2 什么是标准内核 1.1.3 Linux操作系统的分类 1.1.4 linux内核的选择 1.2 Linux内核启 ...

  7. Linux-2.6.32.2内核在mini2440上的移植(四)---根文件系统制作(1)

    移植环境(红色粗字体字为修改后内容,蓝色粗体字为特别注意内容) 1,主机环境:VMare下CentOS 5.5 ,1G内存. 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linu ...

  8. JFFS2根文件系统制作

    一.根文件系统简介 根文件系统首先是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如inittab.rcS)和 ...

  9. 根文件系统制作与NFS挂载

    一:busybox: 1.完整的操作系统=bootloader(u-boot)+kernel(zImage)+根文件系统. 2.根文件系统的核心就是  各种以及系统运行配置参数(类似于linux的cd ...

最新文章

  1. 【c语言】蓝桥杯算法提高 c++_ch02_03
  2. 可能是基于 Hooks 和 Typescript 最好的状态管理工具
  3. python中range和xrange的异同
  4. 想不到吧?数学还有如此妙用!
  5. python web后端和vue哪个难_全栈开发用纯后端模板与Vue+后端框架组合哪个好?
  6. 什么是BI(Business Intelligence
  7. 用perl操作excel的介绍
  8. html获取元素的rgb值,使用javascript提取支持的HTML或X11颜色名称及其RGB值的列表
  9. 基于MFC的OpenDDS发布订阅例子(idl)
  10. 云丁智能锁说明书_真硬核!行业爆发前夜,这把锁登上航母
  11. 一个苹果证书怎么多次使用——导出p12文件
  12. 麦咖啡服务器怎么进系统,麦咖啡(McAfee)系统托盘图标不见了怎么办?
  13. Win11 系统安装事项,跳过微软账户登录,VMWare安装Win11
  14. Java程序员必读书籍推荐
  15. 【UE4】给游戏制作一个简易的小地图
  16. python读Excel数据成numpy数组
  17. 计算机如何连接wifi台式,台式机怎么连接wifi_台式机连接wifi教程-太平洋IT百科...
  18. GNSS/INS超紧组合、深组合导航数据采集器
  19. C#:实现 Van Eck‘s sequence范·艾克序列算法(附完整源码)
  20. 信阳师院计算机与信息技术学院,徐丽娟

热门文章

  1. Monkey脚本编写
  2. Atitit.  c# 语法新特性 c#2.0 3.0 4.0 4.5 5.0 6.0   attilax总结
  3. System.Math.Min(System.Threading.Interlocked.Increment(i), i - 1)
  4. OpenGL编程低级错误范例手册
  5. vue图片懒加载插件vue-lazyload
  6. java运算符 —(9)
  7. webpack — 概述介绍
  8. Java中九大内置对象
  9. WC2019 自闭记
  10. Lvs Tun隧道模式配置