今天为客户做了一个yaffs2的根文件系统,其中遇到了一些问题,总结一下
根文件系统有很多种,嵌入式系统中常用的有yaffs,jffs,ramdisk,cramfs。
为嵌入式内核制作根文件系统的基本步骤:
1 利用busybox交叉编译生成开发板上的基本命令,完善其他基本的目录,如etc
2 使用文件系统镜像制作工具制作文件系统镜像,如mkyaffs2img
3 修改内核选项,支持相应的文件系统
4 在bootloader中烧写内核和文件系统镜像到相应的分区
5 指定内核启动参数,启动内核
第一步
安装busybox
编译busybox步骤跟内核相似
make menuconfig
出现一个图形界面,选择Busybox Settings,这里可以对编译、安装以及调试等模式进行配置。
然后选择Build Options,对交叉编译器以及编译方式进行配置。
其中的第一项是Build Busybox as a static binary(no shared libs),如果选择上,
则busybox将以静态形式进行编译,否则将以动态方式编译。此外,还需要对交叉编译环境进行
配置,选择其中的Cross Compiler Perfix,输入交叉编译器的前缀,我们的嵌入式平台上使用
的是mipsel-linux-的交叉编译工具。
这里选择静态编译,这样省事,不然还需要将需要的库文件加进来,
注意Build with Large File Support (for accessing files > 2 GB)不要选(默认是选上的)
,否则编译后会出现错误
make;make install
可以采用perfix参数安装到指定目录下,格式为:make install prefix=xxx目录,如果不特别指定
,将默认在busybox源码目录下生成一个_install目录。到此,busybox基本上可以功成身退 了。
我们需要的就是busybox编译出来的这个_install目录。
对install目录下的几个文件进行一些说明。
bin包含用户工具,其中,busybox可执行文件就在这个目录 下,该目录下其他所有文件都是指向busybox的符号链接
sbin目录包含操作系统工具,同样也指向busybox。
linuxrc是一个链接文件,指向busy