1.busybox代码
这里我用的版本是
busybox-1.22.1.tar.bz2
下载路径为:
http://busybox.net/downloads/
把解压后的文件放到所选择的目录下,一般是放在home里,我这里放到自己创建的文件夹下
进入
busybox-1.22.1目录,并且对其进行配置
进入命令:
2.配置busybox
进入后按照指定选项进行配置:
如下
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary (no shared libs)
[ ] Force NOMMU build
[ ] Build with Large File Support (for accessing files > 2 GB)
(arm-cortex_a8-linux-gnueabi-) Cross Compiler prefix //这里arm-cortex_a8-linux-gnueabi-根据你的交叉编译工具配置
() Additional CFLAGS
3.编译安装busybox
编译代码:make
编译后的结果如下
安装
busybox 默认安装路径为源码目录下的
_install
进入安装目录创建其他需要的目录
部分是新创建的
$ mkdir dev etc mnt proc var tmp sys root(这几个是创建的)
4.添加库
将工具链中的库拷贝到
_install
目录下
$ cp /home/linux/toolchain/gcc-4.6.4/arm-arm1176jzfssf-linux-gnueabi/lib/ . -a
删除静态库和共享库文件中的符号表
$ rm lib/*.a
$ arm-none-linux-gnueabi-strip lib/*
删除不需要的库
$ du -mh lib/
5.添加系统启动文件
在
etc
下添加新建
inittab
,文件内容如下:
具体如下:
在
etc
下创建文件
fstab
,文件内容如下:
这里我们挂载的文件系统有三个 proc、sysfs 和 tmpfs。在内核中 proc 和 sysfs 默认都支
持,而 tmpfs 是没有支持的,我们需要添加 tmpfs 的支持
修改内核配置:
$ make menuconfig 进入内核配置
File systems ---> 路径1
Pseudo filesystems --->路径2
[*] Virtual memory file system support (former shm fs) 要更改的选项
[*] Tmpfs POSIX Access Control Lists 要更改的选项
重新编译内核
在
etc
下创建
init.d
目录,并在
init.d
下创建
rcS
文件,
rcS
文件内容为:
#!/bin/sh
# This is the first script called by init process
/bin/mount -a
echo /sbin/mdev > /proc/sys/kernel/hotplug
/sbin/mdev -s
为
rcS
添加可执行权限:
$ chmod
+x init.d/rcS
在
etc
下添加
profile
文件,文件内容为:
#!/bin/sh
export HOSTNAME=farsight
export USER=root
export HOME=root
export PS1="[$USER@$HOSTNAME \W]\# "
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH
重要:新制作的文件系统尺寸若超出
8M
,删除不需要的库文件