首先文件系统的构造如图
所以 我们如果要移植文件系统的话 也就是在根目录上去创建(挂载)这些系统启动所必须的目录
/bin 存放linux系统下常用的命令 cat,chmod,等
/sbin 存放需要管理员权限才能使用的命令 比如 shutdown reboot等 挂接其他文件前都可以使用,所以
放在和根文件相同的分区中。不紧迫的命令可以放在 、/usr/sbin下
/dev 存放设备文件比如串口啊存储啊 手动创建 + uedv 自动创建
/etc 用来存放各种配置文件export passwd 等
/lib 存放共享库 和 可加载文件运行根文件系统中的可执行程序 libc.so*
/home 、 /root 、/usr 、 跟用户相关的一些东西
/proc 存储一下临时生成的文件 用来表示系统的运行状态
/mnt 用于临时挂接某个文件系统的挂接点 通常是空的 也可以在里面创建目录挂接 一些硬盘设备等
/tmp 通常是空的 一些需要临时生成的文件用到 必须要有
2、移植BusyBox
从官网下载最新版本的busyBox压缩包 然后解压 修改其中的Makefile
CROSS_COMPILE = arm-linux-
ARCH = arm
Busybox Settings --->
Build Options --->
[ ] Build BusyBox as a static binary (no shared libs) (NEW)
这个意思是运行busybox才动态链接库,busybox需要的库要我们提供
Busybox Settings --->
Installation Options ("make install" behavior) --->
What kind of applet links to install (as soft-links) --->
设置busybox生成后各种命令均为指向busybox主程序的软链接
Busybox Settings --->
Busybox Library Tuning --->
(255) History size
[*] History saving (NEW) // 支持历史记录
[*] Tab completion (NEW) // 支持Tab补全操作
选项Applets就是将busybox支持的几百个命令分门别类,我们可以在各个门类下选择想要的命令。
保存 然后make menuconfig 配置这些选项
关于需要注意的一些选项说明如下:
最后出现下面的信息,make成功
CC util-linux/volume_id/xfs.o
AR util-linux/volume_id/lib.a
LINK busybox_unstripped
Trying libraries: crypt m
Library crypt is not needed, excluding it
Library m is needed, can't exclude it (yet)
Final link with: m
libbusybox: 0_lib/libbusybox.so.1.23.1
DOC busybox.pod
DOC BusyBox.txt
DOC busybox.1
DOC BusyBox.html
然后 make
生成以后 make install 到目标板的目录
出现下面的信息安装成功
--------------------------------------------------
You will probably need to make your busybox binary
setuid root to ensure all configured applets will
work properly.
2,构建文件系统的目录
构建文件系统需要三个步骤
1、创建所需要的文件夹
mkdir dev etc home lib media mnt opt proc sys tmp var root
2、添加文件系统所需要的库
mkdir lib
cp home/wjl/work/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib 下的库到刚建的目录下
3、创建所需要的文件
mkdir etc 目录
需要再etc 目录下创建三个文件
1>initab /ect/initab
initab 主要是任务是创建其他进程,比如调用脚本文件配置IP地址,挂接其他文件系统。启动shell等
2> rcS etc/init.d/rcS
rcS 里面可以添加你真正想执行的程序 配置的信息 在这里面可以用 mount -a
3> fatab etc/fstab
fstab文件被用来控制 mount 的行为
fstab的表示形式如下
#device mount-point type options dump fsck order
proce /proce proc defaults 0 0
构建dev 目录
1、 静态创建设置文件 在dev 目录下手动创建 一些设备节点
mkdir /dev
sudo mknod console c 5 1
sudo mknod null c 1 3
sudo mknod ttySAC0 c 204 64
2、使用mdev动态的去创建设备文件
要使用 mdev 需要内核支持sysfs文件系统 为了减少flash的读写还需要支持tempfs 文件系统
所以要配置内核设置 CONFIG_SYSFS CONFIG_TEPFS 配置项
mount -t tmpfs mdev /dev
mkdir /dev/pts
mount -t dev
mount -t devpts devpts /dev/pts
mount -t sysfs sysfs /sys
echo /bin/mdev > /proc/sys/kernel/hotplug
mdev -s
还需要修改 rcS fstsb 文件
4 制作 YAFFS 文件系统映像文件
所谓制作文件系统映像文件 就是将一个目录下的所有内容按照一定的格式存放到一个文件中 这个文件可以直接烧写到
存储设置上去,当系统启动狗挂接这个设备 就可以看到与原来目录一样的内容
mkyaffsimage fs_mini fs_mini.yaffs
j将fs_mini.yaffs 放入tftp 目录或者nfs目录后 在U-BOOT阶段 烧入指定的内存即可