嵌入式根文件系统制作
?
1:文件系统分类: ??? 基于RAM的文件系统:ramdisk文件系统,严格的讲ramdisk并不是一种文件系统,而只是一种磁盘访问技术。是将内存中一块区域当作磁盘来用。是一种将实际的文件系统(如ext2)装入内存的机制。还有一种initramfs文件系统,也是基于RAM的。不做介绍了。进入主题。 ?? cramfs是一个压缩式的文件系统,它并不需要一次性地将文件系统中的所有内容都解压缩到内存中, 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |