一、静态编译busybox
1、创建根文件系统的目录
mkdir rootfs
cd rootfs
mkdir bin dev etc lib proc sbin sys mnt usr var
mkdir 1777 tmp (我变更了/tmp目录的使用权,让它开启sticky位。为/tmp目录的使用权开启此位,将可保/tmp目录下所建立的文件,只有建立它的用户才有权删除)
mkdir usr/bin usr/lib usr/sbin lib/modules
2、创建设备文件
cd dev/
mknod -m 666 console c 5 1
mknod -m 666 null c 1 3
3、安装/etc
tar etc.tar.gz -C /xxx/rootfs
目的:使在etc目录下产生四个文件。
Cd dev/
Mknod -m 666 console c 5 1
Mknod -m 666 null c 1 3
Cd ..
内核在引导时设备节点console,null必须存在
4、make menuconfig如果编译错误,就yum install ncurses-dev
5、配置busybox:
1、busybox setting -> build options 选中静态编译:Build busybox as a static binary
installation options ->选中“do not use /usr”,选中该选项可以避免busybox被安装到宿主系统的/usr目录下,破坏宿主系统
6、make
make CONFIG_PREFIX=/home/flinux/rootfs/rootfs install (/home/flinux/rootfs/rootfs是安装目录)
成功!
二、动态编译busybox
1、创建根文件系统的目录
mkdir rootfs
cd rootfs
mkdir bin dev etc lib proc sbin sys mnt usr tmp var
mkdir usr/bin usr/lib usr/sbin lib/modules
2、make menuconfig
配置busybox:
1、busybox setting -> build options 选中静态编译:Build busybox as a static binary
installation options ->选中“do not use /usr”,选中该选项可以避免busybox被安装到宿主系统的/usr目录下,破坏宿主系统
2、make make CONFIG_PREFIX=/home/flinux/rootfs/rootfs install
3、安装arm-linux-gcc 的lib动态库
Mkdir -p /nfsroot/rootfs/lib
Cp /usr/local/arm/4.4.1/arm-linux*/libc/lib/*.so* /nfsroot/rootfs/lib -d
4、构建根文件系统
1、构建etc目录
1、创建etc /inittab:
#/etc/inittab
::sysinit:/etc/init.d/rcS
ttySAC0::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
2、创建etc/init.d/rcS
#!/bin/sh
ifconfig eth0 192.168.1.17
mount –a
修改rcS的属性:
Chmod +x etc/init.d/rcS
3、创建etc/fstab
文 件/etc/fstab存放的是系统中的文件系统信息。当正确的设置了该文件,则可以通过"mount /directoryname"命令来加载一个文 件系统,每种文件系统都对应一个独立的行,每行中的字段都有空格或tab键分开。同时fsck、mount、umount的等命令都利用该程序。
#device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
2、构建dev目录
1、静态创建设备文件
2、使用mdev创建设备文件
Console mtdblock0 mtdblock1 mtdblock2 null ttySAC0
用这样的命令建立:
sudo mknod console c 5 1
sudo mknod null c 1 3
3、制作/使用yaffs文件系统映像文件