我使用的是buzybox-1.13.3这个工具,我使用过别的版本但不好使如果有网友照着我这个教程制作根文件系统建议使用相同的版本,我会把它传到我的空间中,方便大家使用。
1、解压busybox1.13.3.tar.bz2
#tar zxvf busybox1.13.3.tar.bz2
2、修改其Makefile
ARCH ?= arm
CROSS_COMPILE ?=arm-linux-
3、make menuconfig
注:这些需要一个一个的对照,我做的时候有几个没有找到但也好使在下面我会注释出来(红色的部分)
(1)、Busybox Settings--->
General Configuration--->
[*] Show verbose applet usage messages
[*] Store applet usage messages in compressed form
[*] Support –install [-s] to install applet links at runtime
[*] Enable locale support(system needs locale for this to work)
[*] Support for –long-options
[*] Use the devpts filesystem for unix98 PTYs
[*] Support writing pidfiles
[*] Runtime SUID/SGID configuration via /etc/busybox.config
[*] Suppress warning message if /etc/busybox.conf is not readable
Build Options--->
[*] Build BusyBox as a static binary(no shared libs)
[*] Build with Large File Support(for accessing files>2GB)
Installation Options->
[]Don’t use /usr
Applets links (as soft-links) --->
(./_install) BusyBox installation prefix
Busybox Library Tuning --->
(6)Minimum password legth
(2)MD5:Trade Bytes for Speed
[*]Fsater /proc scanning code(+100bytes)
[*]Command line editing
(1024)Maximum length of input
[*] vi-style line editing commands
(15) History size
[*] History saving
[*] Tab completion
[*]Fancy shell prompts
(4) Copy buffer size ,in kilobytes
[*]Use ioctl names rather than hex values in error messages
[*]Support infiniband HW
(2)、Linux Module Utilities--->
(/lib/modules)Default directory containing modules
(modules.dep)Default name of modules.dep
[*] insmod
[*] rmmod
[*] lsmod
[*] modprobe
-----options common to multiple modutils
[ ] support version 2.2/2.4 Linux kernels
[*]Support tainted module checking with new kernels
[*]Support for module .aliases file
[*] support for modules.symbols file
Linux System Utilities --->
[*]Support /etc/mdev.conf
[*]Support command execution at device addition/removal
保存后会自动生成生成了busybox这个文件夹
4、制作rootfs文件夹
(1)书写脚本文件rootfsdir
#! /bin/sh
echo "creatint rootfs dir......"
mkdir rootfs
cd rootfs
echo "making dir : bin dev etc lib proc sbin sys usr"
mkdir bin dev etc lib proc sbin sys usr #必备的8个目录
mkdir usr/bin usr/lib usr/sbin lib/modules
# Don't use mknod ,unless you run this Script as root !
mknod -m 600 dev/console c 5 1
mknod -m 666 dev/null c 1 3
echo "making dir : mnt tmp var"
mkdir mnt tmp var
chmod 1777 tmp
mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp
mkdir var/lib var/lock var/log var/run var/tmp
chmod 1777 var/tmp
echo "making dir : home root boot"
mkdir home root boot
echo "done"
(2)改变rootfsdir这个文件的权限
#chmod 777 rootfsdir
(3)./rootfsdir
5、编译安装busybox
#make CONFIG_PREFIX= /opt/studyarm/rootfs install (在你的buzybox-1.13.3文件夹下执行,红色部分为你的rootfs文件的路径)
在rootfs 目录下会生成目录bin、sbin、usr 和文件linuxrc 的内容。
6、拷贝动态链接库
这里的动态链接库主要是生成的busybox使用的,因此可以从你的交叉工具链文件夹下拷贝lib目录中的动态链接库文件,例如我的在tools目录下执行
#cp tools/lib/*.so* /rootfs/lib -d
7、建立配置文件
(1)#vi etc/mdev.conf 文件,内容为空。
(2)拷贝主机etc 目录下的passwd、group、shadow 文件到rootfs/etc 目录下。
(3)etc/sysconfig 目录下新建文件HOSTNAME,内容为”AL-Study”,这个其实没有什么关系,就是在板子上运行命令的时候命令前显示的显示,类似[root@debian6]。
(4)etc/inittab 文件:我的前文开机自动设置和这个就有关了。
#etc/inittab
::sysinit:/etc/init.d/rcS
s3c2410_serial0::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a –r
(5)etc/init.d/rcS 文件:
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
echo "----------mount rootfs success----------------"
mount -a
echo /sbin/mdev>/proc/sys/kernel/hotplug
mdev -s
echo "***********************************************"
echo "**************Studying ARM Linux***************"
echo "Kernel version:linux-2.6.32.2"
echo "Date:2011.10.25"
echo "***********************************************"
/bin/hostname -F /etc/sysconfig/HOSTNAME
改变rcS的权限
#chmod 777 rcS
(6)etc/fstab 文件:
#device mount-point type option dump fsck order
proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0
mdev /dev ramfs defaults 0 0
(7)etc/profile 文件:
#Ash profile
#vim:syntax=sh
#No core file by defaults
#ulimit -S -c 0>/dev/null 2>&1
USER="id -un"
LOGNAME=$USER
PS1='[\u@\h=W]#'
PATH=$PATH
HOSTNAME='/bin/hostname'
export USER LOGNAME PS1 PATH
8、制作根文件系统镜像
利用mkyaffs2image-128M,解压原厂提供的压缩包,执行命令rootfs为自己制作的根文件系统目录
#./usr/sbin/mkyaffs2image-128M rootfs rootfs.bin