需要为hi3531板子上的spi flash 做一个jffs2的文件系统, 看了好多资料都不够全面,特别是添加文件系统文件的部分都写的很乱,现在先总结一下思路,再详细介绍.
1. 安装配置busybox
2. 创建和修改jffs2文件系统中的文件
2.1 自己创建
2.2 使用已有文件系统修改
3. 使用mkfs.jffs2制做文件系统
4. 文件系统优化
一.编译并生成根文件系统文件
1.解压该包
tar -jxvf busybox-1.16.1.tar.bz2
cd busybox-1.16.1
2.修改Makefile
找到
CROSS_COMPILE ?=
修改为CROSS_COMPILE ?=arm-linux-
?= 表示若之前未赋值,则赋值为
找到
ARCH ?= $(SUBARCH)
修改为
ARCH ?= arm
3.进行默认配置
make defconfig
4.对配置信息进行修改
make menuconfig
检查Miscellaneous Utilities--->
taskset 是否已经去除 (不去除就编译不过的)
同时设置如下:
Busybox Settings --->
Build Options --->
[*]Build BusyBox as a static binry (no shared libs)
使用静态库,就不用拷贝交叉编译文件到/lib下了
Installation Options --->
[ ]Don't use /usr
有人说是不选会覆盖/usr文件夹,其实是在文件系统中生成一个 /usr 目录的意思,我们需要 /usr 文件夹,所以不要选
#make
#make install
所生成的文件就在当前目录的 _install目录下。
二.准备制作jffs2文件系统的所有文件
(一) 自己创建
编译结束后,自己随便找个目录,并在该目录下建立rootfs文件夹
并在其中建立如下路径
1. #mkdir bin sbin lib etc dev mnt usr/bin usr/sbin usr/lib proc sys -p
2. 把刚才编译busybox生成的在_install目录下的文件全部copy到rootfs/目录下,注意用 cp命令带 –arf 参数
3.加入运行需要的库文件
写了一个脚本,把这个放在/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib/下执行,目的是将一些程序运行时需要的函数库复制到目标文件系统的lib路径下
=========以下是脚本内容===================
#!/bin/bash
#You should put this file cp.sh in $(CROSS-COMPILE)/lib/
ROOTFS_LIB=${PROJECT}/rootfs/rootfs_1.13/lib/
for file in libc libcrypt libdl libm libpthread libresolv libutil
do
cp $file-*.so ${ROOTFS_LIB}
cp -d $file.so.[*0-9] ${ROOTFS_LIB}
done
cp -d ld*.so* ${ROOTFS_LIB}
#end script
=============脚本结束========================
4.在 rootfs/etc/下建立如下文件或者路径
4.1.
vi fstab
内容是:
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
4.2.
vi proflie
内容是:
#!/bin/sh
#You should put this file profile into your $(CONFIG_PREFIX)/etc/
echo "Set seaech library in /etc/profile"
export LD_LIBRARY_PATH=/lib:/usr/lib
echo "Set user path in /etc/profile"
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
alias ll='ls -l'
/sbin/ifconfig eth0 218.192.161.80 netmask 255.255.255.0
/sbin/ifconfig lo 127.0.0.0
echo "Configure net done"
4.3.
mkdir init.d
cd init.d
vi rcS
内容是
#!/bin/sh
/bin/mount –a
/bin/sh /*这个一定要,不然进不了控制台*/
(执行chmod 777 rcS)
4.4. 在etc下创建文件inittab,内容如下