编译Busybox | |
| |
来源: ChinaUnix博客 日期:2009.05.03 16:01 (共有条评论) 我要评论 | |
一、编译Busybox 1、修改编译配置 修改源代码目录中的“Makefile”文件,将此文件中的 CROSS_COMPILE ?= ARCH ?= $(SUBARCH) 分别修改为: CROSS_COMPILE ?= /your/toolchain/path/arm-linux- ARCH ?= arm 其中的“/your/toolchain/path/”为交叉编译工具链的地址,“arm-linux-”为交叉编译命令的前缀。 2、设置编译选项 使用以下命令设置编译选项: $ make menuconfig 以下选项为必选项: |---Busybox Settings | |---General Configuration | | |---Show verbose applet usage messages | | |---Runtime SUID/SGID configuration via /etc/busybox.conf | |---Build Options | | |---Build BusyBox as a static binary (no shared libs) | |---Installation Options | | |---Don't use /usr 其它命令和工具则根据需要自行选择! 3、开始编译 使用以下命令进行编译: $ make clean $ make $ make install 完成后会将 Busybox 安装至当前目录下的“_install”目录中。 注:编译“networking/interface.c”文件时可能会出现以下错误: CC networking/interface.o networking/interface.c:818: error: 'ARPHRD_INFINIBAND' undeclared here (not in a function) make[1]: *** [networking/interface.o] Error 1 make: *** [networking] Error 2 通过查看内核源代码目录中的“include/linux/ifarp.h”文件可得知“ARPHRDINFINIBAND”的值为“32”,然后修改“networking/interface.c”文件,在其中添加: #define ARPHRD_INFINIBAND 32 /* InfiniBand */ 即可解决此错误。 二、制作 root fs 1、创建目录结构 首先要指定一个目录做为存放你新的文件系统的根目录,这里设定的为“/your/root/path”目录。然后使用以下命令建立各目录: # mkdir /your/root/path //建立一个目录用来存放新的文件系统 # cd /your/root/path # cp -R /your/busybox/path/_install/* . # mkdir dev etc lib proc sys usr //必备的8个目录(包括busybox自带的bin和sbin) # mkdir etc/init.d # mkdir usr/bin usr/lib usr/sbin lib/modules # mkdir home mnt root tmp var 2、建立必需的配置文件 首先是“etc/inittab”文件,设定了系统在各状态下要运行的文件。其内容如下: # System initialization. ::sysinit:/etc/init.d/rcS ::askfirst:/sbin/getty 115200 console 其次是“etc/fstab”文件,文件中提供了要自动挂载的对象。因为我们要手动挂载“/var”,所以没有在下面列出。此文件内容如下: # fstab none /proc proc defaults 0 0 none /dev/pts devpts mode=0622 0 0 tmpfs /dev/shm tmpfs defaults 0 0 然后是“etc/init.d/rcS”文件,此文件是“etc/inittab”中设定的系统初始化时使用的脚本,需要注意此文件需要有运行权限。文件内容如下: #! /bin/sh # PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin: runlevel=S prevlevel=N umask 022 export PATH runlevel prevlevel #Charactor modules /bin/mknod /dev/pts/0 c 136 0 /bin/ln -s /dev/v4l/video0 /dev/video0 /bin/ln -s /dev/fb/0 /dev/fb0 /bin/ln -s /dev/vc/0 /dev/tty1 /bin/ln -s /dev/scsi/host0/bus0/target0/lun0/part1 /dev/sda1 /bin/mount -t proc none /proc /bin/mount -t tmpfs none /tmp /bin/mount -t tmpfs none /var /bin/mkdir -p /var/lib /bin/mkdir -p /var/run /bin/mkdir -p /var/log /sbin/ifconfig lo 127.0.0.1 /sbin/ifconfig eth0 192.168.0.111 up /bin/hostname -F /etc/hostname 最后是“etc/hostname”文件,此文件在“etc/init.d/rcS”文件中设定用来提供主机名称。文件内容如下: QQ2004V3 3、创建 dev 中的节点 如果使用“linux 2.6.xx”的内核,应该事先创建节点“console”、“null”。否则在系统启动时内容会提示以下错误: Warning: unable to open an initial console. Kernel panic - not syncing: Attempted to kill init! 创建节点的命令如下: # mknod dev/console c 5 1 # mknod dev/null c 1 3 至此,一个最基本的文件系统已经完成了,下面就可以制作 cramfs 映像文件了。 4、制作 cramfs 映像文件 要制作 cfamfs 映像文件,需要先安装 cramfs 的工具包,因为我使用的是Debian系统,所以使用命令“aptitude install cramfsprogs”就可以安装此工具包。 使用下面的命令就可以创建一个 cramfs 映像文件: mkcramfs /your/root/path /your/root/image/path/root.cramfs 将生成的映像文件“root.cramfs”烧入实验板即可! 注:在移植内核的时候,需要选中“File systems-->Miscellaneous filesystems”中的“Compressed ROM file system support (cramfs)”,否则内核不支持 cramfs 文件系统。 备注: 此文章中的操作只生成了一个最基本的文件系统,只能将系统引导至登录界面,但由于没有设置与用户相关的文件,所以无法登录。其它配置会在以后再进行! |
编译Busybox
最新推荐文章于 2024-03-02 00:03:44 发布