专题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) 创建设备文件
Linux系统中的绝大多数文件,都是以文件的方式来存储的。Linux系统的中的dev文件专门用来存放这些文件。
#cd rootfs/dev
#mknod -m 666 console c 5 1
#mknod -m 666 null c 1 3
(3) 加入配置文件
将压缩包拷贝到这节课的目录下
#tar etc.tar.gz
#mv etc/* …/root/etc/ -rf
(4) 添加内核模块
内核的一部分文件在内核中,另一部分功能的实现,需要内核模块的实现,现在将内核模块的路径指向我们的创建的根文件系统。
#cd …/linux
#make modules ARCH=arm CROSS_COMPILE=arm-linux-
#make modules_install ARCH=arm INSTALL_MOD_PATH=…/rootfs
(5) 编译busybox
Busybox: 嵌入式开发中的瑞士军刀,它来提供嵌入式系统中的一些命令功能。
l 配置busybox
#make menuconfig
Busybox Settings àbuild Options->
v 选中“Build busybox as a static binary”, 静态链接
Cross Compiler prefix (arm-linux-)
Installation Options->
v 选中“Don‘t use /usr”, 选中该项可以避免busybox 被安装到宿主系统的/usr目录下,破坏宿主系统
v Busybox Installation Prefix (/xxx/rootfs)
该选项表明编译后的busybox的安装位置
l 编译、安装busybox
v make
v make install
现在在我们的rootfs的bin目录下就能看到很多的命令。
- 挂载根文件系统到内核
(1) 挂载方式简介
根据存储设备的硬件特性、系统需求,不同的文件系统类型有不同的应用场合。在嵌入式
Linux应用中,主要的存储设备为RAM 和FLASH,常用的基于存储设备的文件系统类型包括:jffs2, yaffs2, ubifs, ramdisk等。
基于NandFlash的文件系统:Yaffs2和UbiFs
基于NorFlash的文件系统Tffs2
基于内存的文件系统:Ramdisk和Initramfs
基于网络的文件系统:NFS
(2) Initramfs挂载
l 在rootfs文件夹中
#cd …/rootfs/
#ln –s ./bin/busybox init
l 在内核文件中
配置Linux内核,支持initramfs
l 编译内核
l setenv bootargs noinitrd console=ttySAC0,115200
(3) NFS挂载
setenv bootargs noinitrd
console=ttySAC0,115200 init=/init
root=/dev/nfs rw
nfsroot=192.168.1.3:/home/S5-
driver/lesson9/rootfs,proto=tcp,nfsvers=3
proto=tcp,nfsvers=3
ip=192.168.1.6:192.168.1.3:192.168.1.1:25
5.255.255.0::eth0:off