首先,所谓文件系统就是用户程序和文件的集合,在LINUXPC机上放到一个统一的目录下,然后通过一个工具打包成一个image文件,这通常是个压缩的过程。然后烧制到板子上后,LINUX内核启动完成后,会逐个挂接这些文件系统映象文件并做解包的工作,当然第一个挂接的就是rootfs了,有了rootfs并提供了SHELL之后,就可以通过mount这个SHELL命令来挂载其它FS了。 对于JFFS2,则不要解压原有的jffs2.img,而是直接往原来的目录里面添加即可: 对于CRAMFS: 对于uClinux上用的ROMFS: cramfs和romfs只是一个文件系统类型,ramdisk相当于一块硬盘空间,可以理解为在内存中虚拟出一块硬盘来,所以它上面就可以有你 linux支持的各种文件系统什么的。所以你问的,它和romfs和cramfs确实不是一个层次的概念。 ^-^恭喜你,你答对了,加10分 而ramdisk呢?这个用的比较多,ramdisk相当于一块硬盘空间,可以理解为在内存中虚拟出一块硬盘来,所以它上面就可以有你linux支持的各种文件系统什么的。所以你问的,它和romfs和cramfs确实不是一个层次的概念。 关键是以后,在ramdisk里面可以写,这是一个和cramfs重要的区别了。 然后,你的文件系统所在的目录的所有文件copy到tmp目录下: 比如你的文件系统目录在/root/rootfs-test : 然后卸载/tmp/ 目录就好了。 一般的情况下,ramdisk是要压缩的,对于上面的生成好的img, rootfs.img ,你可以这样压缩: romfs 个人经验: 你自己要创建文件系统,一般是先建一个目录在里面建一些常用的目录,比如bin ,sbin ,root ,etc lib 什么的,正如楼上所言,lib比较烦,需要考虑你要用的程序需要的动态链接库, 建议你先搞一个别人的,拿过来,参考,自己去改,一开始,自己去作肯定要疯的。 你可以到网上搜搜的。 有个网站,http://user-mode-linux./ 这个里面提供了一些简单的文件系统,你可以拿过来,自己改改。 这是个比较快的方法,其实,里面要改基本是:
在内存上建立自己的文件系统 目的:学习内核数天,跃跃欲试 决定在RAM上建立一个ROOT文件系统,从而对Linux的启动过程,挂载root文件系统加深理解. 参考:www. 上的电子期刊第一期《走进Linux 操作系统》的一个试验 操作步骤: work.tar.gz - 一些脚本,用于生成root文件系统,initrd文件系统以及它们的镜像文件比较有用的就是mkimage.sh,其它两个生成roots和initrdfs的好像不太好用 准备工作是把work.tar.gz 解压到/root/kernel/,形成/root/kernel/work工作目录 1 创建Root文件系统内容直接用文章提供的做好的rootfs,解压就可以了 (1). 在/etc/lilo.conf当前启动的内核镜像的下面加入append="ramdisk_size=20000"使其支持在Ram中建立20M的文件系统区域然后运行lilo和reboot (2). dd if=/dev/zero of=/dev/ram bs=1k count=20000 #对/dev/ram文件对应的设备清零,目的是提高后来的压缩率 #把rootfs文件数据拷贝到新建的文件系统上,也即/dev/ram对应的物理设备上运行df ,注意1k-blocks一栏中/dev/ram的数值,假定为ramsize umount /dev/ram 4 生成initrd镜像 和第二步类似 或者直接执行脚本mkimage.sh生成initrd.img.gz和ramlinux.img.gz 它的工作原理是:
1、 Linux文件系统概述 Linux中用户能看到的文件空间是一个单树状结构的,该树的根在顶部,称为根目录(root),用“/”表示。文件空间中的各种目录和文件从树根向下分支。 对用户而言,该目录树就象一个无缝的整体,用户能看见的是紧密联系的目录和文件。实际上,文件树中的许多目录存放在一个磁盘、不同磁盘甚至不同的计算机的不同分区中。当磁盘分区之一被“mount”到文件树中称为“安装点”(mount point)的目录上时,就成为了该目录树的一个组成部分。 当windows 98的C:盘(其本身是FAT32文件系统)未被安装时,/mnt/winc是根文件系统中的一个普通子目录(格式可能是Linux EXT2/3),里面可以存放任何数据。而FAT32格式的C盘上的数据独立于Linux系统,不能被Linux系统所读取。安装(mount)之后,/mnt/winc/就成了安装点,其中所有的数据都将被FAT32文件系统所屏蔽,用户只能看到FAT32文件系统中存放的数据,只能将该文件系统卸载之后,/mnt/winc中原有的数据才会出现,不会丢失。 Linux正是通过这种将不同文件系统装配在一起的技术,实现了个文件系统之间的无缝连接,为用户的操作提供了极大的方便,用户也不用费心思去考虑光盘驱动器的盘符是什么了。 2、Linux文件系统组成 Linux操作系统由一些目录和文件组成。根据安装的方式不同,这些目录可能是不同的文件系统。通常,一个系统可以有多个文件系统组成:根分区文件系统(/),和安装在/usr下的文件系统,还有其他安装在/home、/var文件系统。其中根文件系统必须是Linux ext2/3.顺便提一下最简单的Linux操作系统分区是/和交换分区(SWAP)。 根目录中包含了组成根目录的内容,也为其他的文件系统提供了安装点。 /dev目录 包含所有的设备文件、这些设备式系统设置的、一般都和系统的硬件有一定相互对应关系的特殊文件,分为快设备,字符设备和特殊设备,一般不要随便更改和删除 /bin 目录 包含称为二进制文件的可执行程序 /sbin目录 和/bin目录类似,这些文件往往是用来进行系统管理的,一般只有root才有运行的权限 /etc 目录 Linux系统的绝大部分配置文件都存放在这里,这些文件是系统更符合用户的需要。 /proc 目录 这实际是一个虚拟的文件系统,使系统启动是从内存中建立的,用于内存读取数据。 /tmp 目录 用于存放各种临时文件,这些文件大都是程序运行是产生的,程序结束时一般将他们删除 /home目录 存放一般用户的个人目录 /var 目录 保存大小和内容随时改变的文件,通常各种系统日志文件放在这里 /lib 目录 存放系统的各种库文件,库文件在编译程序时会用到。 /mnt 目录 为其他的文件系统提供安装点 /boot 目录 存放系统启动时所需的各项文件 /root 目录 超级用户的个人目录,普通用户没有权限访问 /lost+found目录 :放置一些垃圾文件 /usr目录 一般用户程序安装所在的目录,使系统中最庞大和最重要的目录。 3、 文件系统管理 Linux文件系统管理最上层模块是文件系统。系统启动时,必首先装入“根”文件系统,然后根据/etc/fstab中制订,逐个建立文件系统。此外用户也可以通过mount、umount操作,随时安装和卸载文件系统。 当装入一个文件系统时,应首先向系统核心注册该系统及其类型。当卸载一个文件系统时,应向核心申请注销该系统和类型。文件系统的注册和注销反映在以vfsmnlist为链头,vfsmntail为链尾,以vfsmount为节点的单向链表中。从链表的每一个vfsmount可以找出一个已注册的文件系统的信息。文件系统类型的注册和注销反映在以file_systems为链头,以file_system_type为节点的单向链表中。链表中的每一个file_system-type节点描述了一个已注册的文件系统类型。 4、虚拟文件系统(VFS) VFS是物理文件系统与服务之间的一个接口层,他对每一个Linux文件系统的所有细节进行抽象,使得不同的文件系统在Linux核心以及系统中运行的其他进程看来,都是相同的。 严格说来,VFS并不是一种实际的文件系统。他只存在内存中,不存在于任何外存空间。VFS在系统启动是建立,在系统关闭时消亡 VFS的功能包括 记录可用的文件系统的类型 将设备同对应的文件系统联系起来 处理一些面向文件的通用操作 涉及到针对文件系统的操作时,VFS把他们映射到与控制文件、目录、以及inode相关的物理文件系统。 5、安装和卸载文件系统 要在Linux目录树中安装一个文件系统,必须要有实际要安装的硬盘分区、光盘或软盘,并且作为该文件系统安装点的目录必须是实际存在的。 手工安装文件系统。命令是mount [options] <device> <mount_point>,device是要安装的实际设备文件,mount_point是安装点。Options是mount接收的命令行选项。如果用户没有给出所需的选项,mount将尝试从相关的/etc/fstab文件中查找。 Mount的常用选项有: 1、-r以只读方式安装文件系统。 2、-w以可读写方时安装文件系统。 3、-v verbose模式,mount将给出许多信息以报告其工作状态 4、-a 安装/etc/fstab文件中所列的所有文件系统 5、-o list_of_options选项列表,各选项之间用逗号隔开。 6、-t file_type指定要安装的文件系统类型。 直接装载文件系统的最基本命令就是 mount –t <fs_type> <device> <mount_point>, -t选项接受auto作为其参数,这使得mount能够自动检测文件系统类型。 卸载文件系统的命令是umount,由四种基本的命令格式 umount <device> umount <mount_point> umount –a umount –t fs_type 前两种方式卸下由device和mount_point指定的文件系统,第三种形式卸下所有的文件系统,第四种方式卸下制定类型的文件系统。Umount不能卸下正在使用的文件系统,当然系统的根分区也不能卸载,知道系统退出Linux的运行状态。
合并内核与romfs(以及独立的内核与romfs)映象文件的方法 image.ram和romfs.img的分两次下载可能已经使您觉得很麻烦了,下面是将两者合并为一个文件(image.ram)下载的方法, 修改linux2.4.x/driver/block/blkmem.c文件: #ifdef CONFIG_BOARD_MBA 44 重新编译,就会生成一个较大的合并了的image.ram了。 (05-4-29)现在的bootloader和uClinux源码包都是支持合并映像文件的了,但有部分做应用的用户使用两者分离的更为方便,因此现在我们也提供这样的bootloader,请需要的用户来信索取。 |
|
来自: 望穿墙 > 《filesystem》