嵌入式linux根文件系统的制作

2019-07-12 15:09发布

一、文件系统概要

  1、根文件系统(Root filesystem)是存放运行、维护系统所必须的各种工具软件、库文件、脚本、配置文件和其他特殊文件的地方,也可以安装各种软件包   2、文件系统层次结构标准【Filesystem Hierarchy Standard(FHS)】 1)Linux和UNIX的文件系统是一个以“/”为根的阶层式的树状文件结构,/因此被称为根目录。
2)在UNIX早期各厂家有分别有自己的根文件系统,比较混乱,LINUX为了避免这个问题,在LINUX初期1994年推出了名为FSSTND(Filesystem Standard)的文件系统层次结构标准。
3)FHS标准使得众多的LINUX发布包有了可以遵循的标准,定义了文件系统每个区域的用途,定义了所需要的最小构成的文件和目录。 4)提高软件的可移植性。   3、根文件系统主要目录     目录 内容 /bin 可执行程序 /dev 块、字符设备节点 /etc 主要配置文件和初始化执行文件 /lib 基本的库文件,如:C库和内核模块                                                        /mnt 挂载点,临时挂载文件系统用 /opt 附加的软件包 /proc 虚拟文件按系统,用于内核和进程通讯 /sbin 基本的系统管理程序 /tmp 临时文件目录 /usr 更多的用户程序,包括X server /sys 虚拟文件系统sysfs挂载点 /var 可变信息储存,如log等     程序文件目录 /bin: 普通用户和root用户都能执行的基本程序,ping,mknod,mount,tar,grep,gzipdeng /sbin: root用户能执行的基本程序,int,insmod,route,mkfs,rmmod,ifconfig等 /usr/bin: 更多非必须的用户程序,autorun,bibtex,latex,biff,ftp等 /usr/sbin: 更多非必须的root工具程序,automount,httpd,sendmail等

二、根文件系统的制作

1、定制应用程序

1)配置基本的linux命令(嵌入式linux通过busybox制作),主要命令有: cat、chmod、chown、cp、chroot、copi、date、dd、df、dmesg、dos2unix、du、echo、 env、expr、find、grep、gunzip、gzip、halt、id、ifconfig、init、insmod等等   2)配置用户自己的应用  

2、创建基本的目录,根据FHS规范创建。

3、定制库文件

1)配置基本的glibc库(以so结尾的动态库),复制到自己的根文件系统.   2)对于嵌入式,仅仅需要保留使用到的库就可以了。 用ldd、readelf 来查看用到的动态库,去除那些不需要的动态库   用Strip将库中的调试信息等去除。

4、创建基本的设备节点

放置目录/dev,嵌入式中只需要创建必须的设备节点,consoles是必须要创建的。
创建命令:mknod /dev/ [c|b]   说明:   <device>: 设备名称 [c|b]: 设备类型,c:字符设备,b:块设备 : 主设备号,具体查看内核中Documentation/devices.txt的说明 : 次设备号

5、创建启动脚本

/linuxrc
1)用来初始化系统的一个简单的启动脚本程序,通过内核命令行产生init指定 init=/linuxrc 2)通常用在initrds上或一个简单的系统中 3)通常是nash or busybox sh 脚本 4)这个脚本可以执行多种任务: 加载驱动 设置网络 挂载文件系统 切换到一个新的根文件系统 .......

6、添加启动配置和脚本程序

/etc/inittab
文件格式:id:runlevels:action:process 说明: id:此处ID指定程序的控制tty,如果程序不需要交互。则ID为空 runlevels:运行等级,busybox不支持 process:将执行的命令和命令的参数 acthion: Action类型 描述 sysinit provide init with the path to the initialization script respawn 程序终止后重新执行 askfirst 同respawn,程序执行前会询问,要求按ENTER建 wait init等待执行的程序后再继续执行 once 只运行程序一次,并且不等待程序运行完就继续执行 ctrlaltdel 当按下Ctrl-Alt-Delete组合键时执行的程序 shutdown 系统关机时执行的程序 restart 系统重新启动时执行的程序,通常是init程序    
/etc/fstab
设置需要挂载的节点   文件格式 device mount-point type options dump fsck order
/etc/init.d/rcS
/bin/mount -a #自动挂载/etc/fstab里的设备

7、测试根文件系统

8、制作根文件系统镜像