- 1、我理解的根文件系统制作步骤
-
1.1、首先根文件系统可以依照linux桌上系统进行构造
网上下载busybox集成指令包。直接解压到将要制作的根文件的目录下,比如fs_mini,通过make menuconfig
来进行选择将要使用的模块以及是否要使用动态链接的方式建立文件,修改makefile文件中
ARCH=arm
CROSS_COMPILE=arm-linux-
-
然后
make
制作出相应的bin文件
最后使用make CONFIG_PREFIX=fs_mini install
进行安装,此时在fs_mini文件夹下会有bin sbin linuxrc等文件夹出现
然后去gcc的交叉编译工具文件夹的lib文件夹中拷贝所有的.so.文件到fs_mini文件夹下新建的lib文件夹下,此时就建立了指令系统到fs_mini文件夹中
-
1.2、建立/etc文件夹
有fstab文件,是与系统开机是挂载的文件系统有关,可以设置所要挂载的文件系统类型,目录以及是否备份等等
有inittab文件,里面主要是写入在系统启动,正常运行,关闭系统时需要进行的一些操作,控制台名称:运行级别:运行方式:程序
有init.d文件夹,里面有rcS文件,是一个脚本文件,里面设置挂载文件系统,设置IP地址等等,就是文件系统启动时候执行的程序。记得要把rcS文件加上x权限
-
1.3、建立dev文件夹
里面包括了设备节点nod,里面有console控制台节点,串口节点等等,创建pts文件夹,暂时不知道什么作用
-
1.4、建立其它的文件夹
home proc sys tmp这些文件夹可以是空的文件夹
-
1.5、制作映像
若使用网络nfs的方法进行挂载就不需要进行文件系统映像的制作以及文件的下载
若使用文件映像的方式还需要进行文件映像的制作,制作完成之后再进行下载,映像的制作程序有jffs jffs2 yaffs yaffs2等。需要注意的是在使用jffs的方式进行
映像的建立的时候,由于没有自定义指定文件系统的页大小(即NAND Flash的页大小),所以有可能会出现下载不进去NAND Flash的情况,这个时候需要自行改动jffs
格式的制作程序,使其适合自己板子上的NAND Flash的配置。而使用yaffs方式制作的在运行程序的时候就可以自行指定相应的文件系统的格式,所以可以进行下载。
-
1.6、下载并启动
在u-boot界面使用j选项或者y选项下载yaffs或者jffs文件系统映像,之后修改bootargs的参数,主要是修改rootfstype与root的mtdblock选项,修改成自己相对应的文件
系统格式,之后保存环境变量然后boot系统,之后就可以执行了
- 2、错误提示以及解决办法
-
以下错误提示均由英文翻译过来,按照自己看到的英文错误提示,然后翻译过来找相应的中文错误项目
- 2.1、提示不能够建立标准的console设备
若是手动方式建立的console设备,则是有可能根文件系统内的/dev/文件夹下console设备建立错误,包括console单词拼写错误,节点选择错误(5 1),设备类型选择错误(b),未使用mknod 660 console b 5 1
完整的命令,若是在开机的时候由系统指定建立的console设备文件,则有可能是命令脚本写错了,检查命令脚本的正确与否。 基本只有以上几种错误
2.2、提示找不到linuxrc等等
说明在根文件系统制作的时候没有添加必备的文件夹以及文件选项,etc/fstab etc/inittab等等,提示缺少什么就去添加什么
2.3、在擦除烧写文件系统映像的时候就提示error
看提示错误的内容,大部分是说页大小与NAND Flash不一,或者没有对齐。这是由于制作文件系统映像程序的原因,其制作程序与NAND Flash配置不匹配,就必须得去按照自己的NAND Flash类型去修改映像制作程序,或者换由其它的可自定义制作的文件系统映像制作工具
PS:文件系统的建立完全是手动添加文件夹以及文件的方式进行建立,此过程所需要建立的文件可以参照桌上PC的linux系统里面的根文件系统进行建立
关于操作系统中的二进制文件执行方式猜想:
首先若有脚本文件的话,脚本文件相当于向串口控制台发送一串字符,串口控制台分析过后会找到相应的二进制文件的位置,然后将二进制文件读到为应用程序准备的内存空间中,然后再将
PC指针指向相应的应用程序的开头进行执行。执行完毕后程序进行返回,再回退到控制台等待用户的下一次输入