首页 > 代码库 > 专题4-嵌入式文件系统

专题4-嵌入式文件系统

1.创建目录

#mkdir rootfs
#cd rootfs
#mkdir bin dev etc lib proc sbin sys usr mnt tmp var
#mkdir usr/bin usr/lib usr/sbin lib/modules

2.创建设备文件

(1)在Linux中设备都以文件的形式存在和操作。

(2)这些文件都在dev目录

(3)在启动Linux系统的时候必须要使用两个设备文件console和null

#cd rootfs/dev

#mknod -m 666 console c 5 1

#mknod -m 666 null c 1 3

3.加入配置文件(一般都是借鉴已有的)

#tar etc.tar.gz
#cp etc/* /rootfs/etc/ -rf

4.添加内核模块

#cd …/linux
#make modules ARCH=arm CROSS_COMPILE=arm-linux-

#make modules_install ARCH=arm INSTALL_MOD_PATH=…/rootfs

5.编译安装busybox(瑞士军刀)

(1)busybox提供linux的系统调用等功能

(2)配置busybox

#make menuconfig
Busybox Settings àbuild Options->
--》 “Build busybox as astatic binary”, 静态链接

--》 Cross Compiler prefix (写入前缀arm-linux-)
Installation Options->
--》选中 “Don‘t use /usr”

选中该项可以避免busybox 被安装到宿主系统的/usr目录下,破坏宿主系统
--》 Busybox Installation Prefix(写入参数/xxx/rootfs)
该选项表明编译后的busybox的安装位置

(3) 编译/安装busybox

make

make  install

6.文件系统分类

根据存储设备的硬件特性、系统需求,不同的文件系统类型有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为 RAM 和FLASH,常用的基于存储设备的文件系统类型包括:jffs2, yaffs2, ubifs, ramdisk等

7.根文件系统一般用initfamfs,基于内存的文件系统掉电丢失,但是速度快。一般一个系统是多个文件系统混合使用。

8.要使用initramfs就必须使用软链接

ln  -s  ./bin/busybox  init

在当前文件夹产生init的快捷方式对应于./bin/busybox 

9.配置内核要选上 initramfs选项(General里),且紧接着填写根文件系统所在位置。再重新编译内核。

10.设置UBOOT环境变量(传给内核的启动参数)

setenv bootargs noinitrd console=ttySAC0,115200

但是这样,如果要添加文件则必须要重新编译内核使得文件系统得到更新,因为此时的文件系统是通过解压存在内存里面的。即这种方式的文件系统是包含在内核里的。

11. 使用NFS

(1)内核配置

---》取消initramfs

---》进入File  System

---》根文件系统onNFS选上

(2)编译内核

(3)设置UBOOT启动参数

setenv bootargs noinitrd (设置启动参数的固定格式)
console=ttySAC0,115200 init=/init  (启动项信息,串口0,波特率)
root=/dev/nfs rw (指明用nfs启动)
nfsroot=192.168.1.3:/home/S5-driver/lesson9/rootfs(根文件系统在主机的路径)
ip=192.168.1.6(开发板IP地址):192.168.1.3(主机IP):192.168.1.1(网关):255.255.255.0(掩码):(开发板主机名):eth0(启动之后IP地址赋值的对象):off(关闭动态IP)

setenv bootargs noinitrd  console=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.1.108:/nfsroot/motion_rootfs ip=192.168.1.186:192.168.1.108:192.168.1.1:255.255.255.0:XiaoJunJun:eth0:off

12.产品成熟以后都用initramfs和yaffs2文件系统。如果开发板的IP和windows的相同会导致访问NFS很慢甚至掉线。

专题4-嵌入式文件系统