一、准备编译环境和工具
系统:ubuntu16.04
源码:https://busybox.net/下载最新busybox-1.29.3.tar.bz2
二、制作根文件系统
1、解压 tar -xjf busybox-1.29.3.tar.bz2
2、make menuconfig, 这里我使用静态库的方式编译
Settings ===>Build Options ====>Build Busybox as a static binary(no shared libs)编为静态库
3、安装
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- CONFIG_PREFIX=$PWD/../tmp install
安装到指定目录位置,这里装到tmp目录底下,将出现bin sbin usr 目录和linuxrc文件
4、配置
创建etc lib proc tmp dev home mnt root sys
进入etc/目录:
创建inittab文件
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
创建fstab文件
#device mount-point type option dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
创建rcS文件
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
mount -a
echo /sbin/mdev>/proc/sys/kernel/hotplug
mdev -s
添加库文件
查找交叉编译工具中库文件位置,我的如下:
sudo cp /usr/lib/gcc-cross/arm-linux-gnueabi/5/*so* ./ -d 拷贝到文件系统lib目录
在dev中创建console 和null节点
sudo mknod console c 5 1
sudo mknod null c 1 3
创建mdev.conf
vim mdev.conf 。mdev是一个udev的简化版本,主要用来支持一些热插拔设备。我们可以通过文件mdev.conf自定义一些设备节点的名称或链接来满足特定的需要,但在此处让它为空。
5、制作yaffs2
获得源码
git clone git://www.aleph1.co.uk/yaffs2
进入utils目录,cd /home/flnet/kernel/yaffs2/yaffs2/