首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>嵌入式开发>正文

详细解析:如何制作嵌入式Linux文件系统

http://www.oklinux.cn  2007-09-29  来源:  kit  会员收藏  游客收藏  【 】 

一、什么是文件系统 (Filesystem)

 

A directory structure contained within a disk drive or disk area. The total available disk space can be composed of one or more filesystems. A filesystem must be mounted before it can be accessed. To mount a filesystem, you must specify a directory to act as the mount point. Once mounted, any access to the mount point directory or its subdirectories will access the separate filesystem.

文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点。

 

二、主要嵌入式采用的文件系统

 

* Linux 中,rootfs 是必不可少的。PC 上主要实现有 ramdisk 和直接挂载 HD(Harddisk,硬盘) 上的根文件系统;嵌入式中一般不从 HD 启动,而是从 Flash 启动,最简单的方法是将 rootfs load 到 RAM 的 RAMDisk,稍复杂的就是 直接从Flash 读取的 Cramfs,更复杂的是在 Flash 上分区,并构建 JFFS2 等文件系统。

 

* RAMDisk 将制作好的 rootfs 压缩后写入 Flash,启动的时候由 Bootloader load 到RAM,解压缩,然后挂载到 /。这种方法操作简单,但是在 RAM 中的文件系统不是压缩的,因此需要占用许多嵌入式系统中稀有资源 RAM。

 

ramdisk 就是用内存空间来模拟出硬盘分区,ramdisk通常使用磁盘文件系统的压缩存放在flash中,在系统初始化时,解压缩到SDRAM并挂载根文件系统, 在linux系统中,ramdisk有二种,一种就是可以格式化并加载,在linux内核2.0/2.2就已经支持,其不足之处是大小固定;另一种是 2.4的内核才支持,通过,ramfs来实现,他不能被格式化,但用起来方便,其大小随所需要的空间增加或减少,是目前linux常用的ramdisk技术.

 

* initrd 是 RAMDisk 的格式,kernel 2.4 之前都是 image-initrd,Kernel 2.5 引入了 cpio-initrd,大大简化了 Linux 的启动过程,附合 Linux 的基本哲学:Keep it simple, stupid(KISS). 不过cpio-initrd 作为新的格式,还没有经过广泛测试,嵌入式 Linux 中主要采用的还是 image-initrd。

 

* Cramfs 是 Linus 写的很简单的文件系统,有很好的压缩绿,也可以直接从 Flash 上运行,不须 load 到 RAM 中,因此节约了 RAM。但是 Cramfs 是只读的,对于需要运行时修改的目录(如: /etc, /var, /tmp)多有不便,因此,一般将这些目录做成ramfs 等可写的 fs。

 

* SquashFS 是对 Cramfs 的增强。突破了 Cramfs 的一些限制,在 Flash 和 RAM 的使用量方面也具有优势。不过,据开发者介绍,在性能上可能不如 Cramfs。这也是一种新方法,在嵌入式系统采用之前,需要经过更多的测试

 

三、建一个包含所有文件的目录

 

1。建一个目录rootfs 用来装文件系统

 

2。mkdir bin dev etc lib proc sbin tmp usr var

 

3. ln -fs bin/busybox linuxrc(使用busybox)

 

4. 到系统 /dev 把所有的device打一个包,拷贝到 dev下面(最省事的做法);或者使用mknod来自己建所需要的device,我自己用的如下:

crw-rw-rw- 1 root root 5, 1 2006-02-24 13:12 console

crw-rw-rw- 1 root root 5, 64 2006-02-24 13:12 cua0

crw-rw-rw- 1 root root 63, 0 2006-02-24 13:12 dk0

crw-rw-rw- 1 root root 63, 1 2006-02-24 13:12 dk1

drwxr-xr-x 2 root root 4096 2006-02-24 13:12 flash

brw-rw-rw- 1 root root 3, 0 2006-02-24 13:12 hda

crw-rw-rw- 1 root root 36, 10 2006-02-24 13:12 ipsec

crw-rw-rw- 1 root root 241, 0 2006-02-24 13:12 ixNpe

crw-rw-rw- 1 root root 1, 2 2006-02-24 13:12 kmem

crw-rw-rw- 1 root root 126, 0 2006-02-24 13:12 ledman

lrwxrwxrwx 1 root root 16 2007-09-19 14:08 log -> /tmp/var/log/log

crw-rw-rw- 1 root root 1, 1 2006-02-24 13:12 mem

crw-rw-rw- 1 root root 90, 0 2006-02-24 13:12 mtd0

brw-rw-rw- 1 root root 31, 0 2006-02-24 13:12 mtdblock0

brw-rw-rw- 1 root root 31, 1 2006-02-24 13:12 mtdblock1

brw-rw-rw- 1 root root 31, 2 2006-02-24 13:12 mtdblock2

brw-rw-rw- 1 root root 31, 3 2006-02-24 13:12 mtdblock3

brw-rw-rw- 1 root root 31, 4 2006-02-24 13:12 mtdblock4

brw-rw-rw- 1 root root 31, 5 2006-02-24 13:12 mtdblock5

brw-rw-rw- 1 root root 31, 6 2006-02-24 13:12 mtdblock6

crw-rw-rw- 1 root root 90, 1 2006-02-24 13:12 mtdr0

crw-rw-rw- 1 root root 1, 3 2006-02-24 13:12 null

crw-rw-rw- 1 root root 108, 0 2006-02-24 13:12 ppp

crw-r--r-- 1 root root 5, 2 2006-03-29 15:56 ptmx

drwxr-xr-x 2 root root 4096 2006-03-29 15:56 pts

crw-rw-rw- 1 root root 2, 0 2006-02-24 13:12 ptyp0

brw-rw-rw- 1 root root 1, 0 2006-02-24 13:12 ram0

crw-rw-rw- 1 root root 1, 8 2006-02-24 13:12 random

crw-rw-rw- 1 root root 5, 0 2006-02-24 13:12 tty

crw-rw-rw- 1 root root 4, 0 2006-02-24 13:12 tty0

crw-rw-rw- 1 root root 3, 0 2006-02-24 13:12 ttyp0

crw-rw-rw- 1 root root 4, 64 2006-02-24 13:12 ttyS0

crw-rw-rw- 1 root root 1, 9 2006-02-24 13:12 urandom

crw-rw-rw- 1 root root 1, 5 2006-02-24 13:12 zero

 

举例: mknod console c 5 1 这样 crw-rw-rw- 1 root root 5, 1 2006-02-24 13:12 console

共2页: 上一页 1 [2] 下一页

上一篇:中国软件生产力年度风云榜行业评选通知   下一篇:新闻观察:红帽提倡真正的互操作性和竞争


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·嵌入应用:如何制作和使用Jffs2文件系统
·嵌入式Linux系统软件开发学习思路介绍
·嵌入式Linux文件系统详细介绍
·嵌入式系统开发:Arm与Linux的完美结合
·嵌入式Linux 的safe mode 设计与实现
·从Sony PLAYSTATION 3 构建Linux 实验设备
·详细定义嵌入式操作系统概念
·嵌入式Linux操作系统学习规划
·嵌入式Linux系统的设计与应用
· 2.6内核的Linux嵌入式系统应用
·用GNU工具开发基于ARM嵌入式系统的方法
·嵌入式Linux操作系统名词解释及资源大全
·Linux系统和嵌入式系统应用
·Linux嵌入式系统的内存管理方法详细介绍
·嵌入式Linux系统的驱动程序开发要点
·嵌入式系统开发学习如何起步、如何深入?
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·嵌入式:关于Linux下_init与_exit的解
·在嵌入式Linux系统中应用的GTK 和X分析
·使用虚拟机嵌入式Linux开发前的必要准
·用NFS服务开发ARM Linux程序的方法介绍
·虚拟机Linux系统下连接ARM开发板的方法
·嵌入式Linux系统下的网页浏览器 WebKit
·系统学习嵌入式Linux 几点非常实用的建
·嵌入式Linux攻略 ACE程序移植过程详细
·嵌入式基础 当今常用的开源协议详细解
·Linux攻略 嵌入式系统的开发流程概括介
·Linux嵌入应用:ARM体系结构的技术特征
·天造地设的绝配 Linux和嵌入式系统应用
  阅读排行
· 嵌入式linux下常见的文件系统
·Linux and symmetric multiprocessing
·深入浅出 嵌入式中文Linux系统详细解析
·嵌入式Linux系统图形及图形用户界面
·Linux设备驱动框架、配置文件及加载
·概述Linux系统的驱动框架及驱动加载
·为系统处理器编写Linux设备驱动程序
· 构建嵌入式Linux系统平台
·Linux高手进阶 嵌入式系统设计开发过程
·嵌入式Linux操作系统学习规划
· 在Ubuntu上建立Arm Linux的开发环境
·详述嵌入式系统下Microwindows的实现
·嵌入式系统开发学习如何起步、如何深入
·U-Boot的常用命令详解
· Linux 2.6 内核的嵌入式系统应用
网摘收藏: