关于根文件系统 jffs2和ubifs

来源:互联网 发布:网络优化与维护 编辑:程序博客网 时间:2024/05/16 07:00

关于根文件系统jffs2 ubifs
我只详细了解了两个重要的文件系统,其他系统以后在详细了解。
jffs2 使用起来比较方便,但是不适合大的文件系统。当分区比较大或者分区将要满时,挂载会花费大量时间。
ubifs 使用起来稍显复杂,做为根文件系统,我做了很久但是现阶段并没有完成。使用起来优点很多,快速挂载性,对flash 的尺寸具有良好的扩展性,等等很多优点。
还有一种ramdisk,是在内存中的文件系统,我们虽然可以对其中的内容进行操作,但是掉电即复位。
文件系统(按照我现在的理解,不知道对不对)就好像一个管家。这个管家将用户和真正的存储地址隔离开,使用户可以通过路径来访问对应的存储区域。不同的文件系统就是不同的管家,各有所长。
下面来说说跟文件。根文件系统首先是一种文件系统,但是相对于普通的文件系统,它的特殊之处在于,它是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。
**/bin 存放二进制可执行命令的目录
/dev 存放设备文件的目录
/etc 存放系统管理和配置文件的目录
/home 用户目录
/lib 存放动态连接共享库的目录
/sbin 存放系统管理员使用的管理程序的目录
/tmp 共用的临时文件存储点
/root 系统管理员的主目录
/mnt 用户挂载其他文件系统的挂载点
/proc 虚拟文件系统,获取系统信息
/var 某些大文件的溢出区
/usr 应用程序和文件**
下面讲下根文件制作的流程:
1、创建根文件目录树。
2、在dev目录下创建设备文件。
3、在var 目录下创建符号链接
4、拷贝交叉编译器中的动态库到/lib
5、在/etc 目录下创建一些文件
inittab
/etc/init.d/rcS
/etc/init.d/S01_network
创建 fstab 文件
创建 hostname hosts TZ issue 文件
创建 profile 文件
创建 mdev.conf 文件
创建用户组文件 group passwd
6、在系统中安装 busybox
在嵌入式系统中,系统命令的调用都是靠这个工具完成的。
7、移植dropbar

接下来,就要将我们制作好的根文件目录树制作成不同类型的文件系统了。
{1、对根文件系统做个性化的修改
2、制作根文件系统的印象文件
3、添加内核对该文件系统的支持
4、添加uboot 对文件系统的支持
}完成了以上几步就可以实现对不同文件系统的移植了。
不同的根文件系统,需要不同的参数传递。
bootargs 传递的参数
{concole=ttyS0,115200
ubi.mtd=2
root=ubi0:rootfs //根文件的位置 ubifs 特殊设置
rootfstype=ubifs //传递到内核文件系统类

bootcmd 设置
{nand read 30008000 100000 800000
bootm 30008000

我嫌频繁修改增加这些变量很麻烦,特地在uboot源码中添加了这些变量。
vim common/env_common.c
boot变量在 uchar default environment[]
这里面有一些宏定义,设置为默认的。
在 ./include/configs/fl2440.h 头文件中定义的。这这里面可以按照自己的想法私人定制自己的环境变量,
比如 我就定义了

define CONFIG_tftplinux “tftp linuxrom-s3c2440.bin;nand erase 100000 F00000;nand write 30008000 100000 $filesize”

定义了以上的宏,在uboot 中可直接使用 run bkr 更新内核
可以以上的形式添加更多的默认变量。
要注意的是 一旦更改了 fl2440.h 之后 就必须make distclean 重新编译。

0 0
原创粉丝点击