一个基本的文件系统应该包括:
busybox(提供 shell, 工具, 目录 /bin /sbin)。
配置文件(用来初始化和布局你的文件系统 主要目录/etc)。
设备文件(udev 目录 /dev)。
必要的库文件系统(目录 /lib /usr/lib)。
其他系统目录( /mnt /proc /sys /tmp /usr /home /root /var )。
1. 生成目录: mkdir rootfs cd rootfs mkdir bin sbin etc dev lib mnt proc sys tmp usr home root var mnt/usb mnt/mtdblock...
2. busybox 的配置和编译:
make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig 配置自己的busybox,
make ARCH=arm CROSS_COMPILE=arm-linux- make install
生成 bin sbin 两个目录,
cp -a bin sbin rootfs
注意:在配置busybox时,安装路径要设置好。
3. udev的编译和安装: make ARCH=arm CROSS_COMPILE=arm-linux-
生成几个可执行文件,这里我们只需要udevadm udevd这两个文件。
把这两个文件复制到/sbin下。
4. 依赖库文件的安装:
对于放在根文件里的可执行文件
在这里用 arm-linux-readelf -a 可执行文件 | grep "Shared library"
可以找到可执行文件所需要的动态库,把需要用到的动态库复制到lib目录下。
因为工具链中动态库包含调试信息,size比较大,可以用以下命令去除调试信息.
arm-linux-strip 动态库。
二、 再来说一下配置文件的问题
大部分的配置文件都在/etc目录里,系统启动的过程是首先linux内核挂载根文件系统,
运行/etc/inittab脚本, 根据fstab的内容挂载个文件系统。
启动udev生成设备文件,启动shell等.
简单的/etc目录包括fstab inittab mtab 和 udev配置信息,
这些就可以启动一个较小的系统了。 关于这几个配置文件,以后再说。
三、 经过以上准备, 就生成了一个根文件系统,
mkcramfs rootfs root.cramfs生成基于cramfs的文件系统,
然后下载到板子上就可以启动运行了,当然这样的一个系统已经可以作很多事情了,
但是有了这个基础,还可以一步一步添加更多的库和应用在里面