分类: LINUX
2009-10-10 11:57:51
(1) 为什么我们要用busybox,利用他干什么?
我们利用busybox主要是生成文件系统的4个主要文件:bin sbin usr linuxrc这4个文件就是我们要构建的文件系统的主体部分,这个时候busybox对于我们来说就没有什么作用了,我们一般的做法是在其他的地方再建立一个文件夹,然后将bin sbin usr linuxrc拷贝过去,以后我们做的文件系统就是这个新建的文件夹里边的部分。
(2) 用yaffs2生成一个做文件系统镜象的工具
在yaffs2里边有个文件夹叫utils,在这个里边3个文件,Makefile ,mkyaffsimage.c mkyaffs2image.c ,在这个里边按道理是直接make就可以搞定,实际需要加两个文件,这两个文件是处理ECC的。然后在make 就可以生成两个工具文件:mkyaffsimage 和mkyaffs2image
(注:如果在移植的过程就不用看这个东西了,因为要是我在移植的时候一看到这个就觉的烦了,呵呵!这个是给第一次用busybox的兄弟们看的)
二. 具体做的步骤
解压busybox
(1) Miscellaneous Utilities --->
[] taskset要去掉
如果不去掉,出错信息:
miscutils/taskset.c:17: error: parse error before ''*'' token
miscutils/taskset.c:18: warning: function declaration isn''t a prototype
miscutils/taskset.c: In function `__from_cpuset'':
miscutils/taskset.c:22: error: `CPU_SETSIZE'' undeclared (first use in this function)
miscutils/taskset.c:22: error: (Each undeclared identifier is reported only once
miscutils/taskset.c:22: error: for each function it appears in.)
miscutils/taskset.c:26: warning: implicit declaration of function `CPU_ISSET''
miscutils/taskset.c:26: error: `mask'' undeclared (first use in this function)
miscutils/taskset.c: In function `taskset_main'':
miscutils/taskset.c:47: error: `cpu_set_t'' undeclared (first use in this function)
miscutils/taskset.c:47: error: parse error before "mask"
miscutils/taskset.c:68: warning: implicit declaration of function `CPU_ZERO''
miscutils/taskset.c:68: error: `new_mask'' undeclared (first use in this function)
miscutils/taskset.c:69: error: `CPU_SETSIZE'' undeclared (first use in this function)
miscutils/taskset.c:71: warning: implicit declaration of function `CPU_SET''
miscutils/taskset.c:78: error: `mask'' undeclared (first use in this function)
(2) Linux Module Utilities --->
[]Support version 2.2.x to 2.4.x Linux kernels 要去掉
如果不去掉的话,出错信息:
modutils/lib.a(insmod.o)(.text.insmod_main+0x360): In function `insmod_main'':
: undefined reference to `query_module''
modutils/lib.a(insmod.o)(.text.insmod_main+0x394): In function `insmod_main'':
: undefined reference to `query_module''
modutils/lib.a(insmod.o)(.text.insmod_main+0x440): In function `insmod_main'':
: undefined reference to `query_module''
modutils/lib.a(insmod.o)(.text.insmod_main+0x494): In function `insmod_main'':
: undefined reference to `query_module''
modutils/lib.a(insmod.o)(.text.insmod_main+0x570): In function `insmod_main'':
: undefined reference to `query_module''
modutils/lib.a(insmod.o)(.text.insmod_main+0xc10): In function `insmod_main'':
: undefined reference to `create_module''
collect2: ld returned 1 exit status
其他的配就可以了,这两个地方要是不去掉的话,编译不过。
(3)用make install命令来安装,就会产生一个文件夹_install,在这个文件家里边有4个文件----- bin sbin usr linuxrc,然后我们在其他目录在用mkdir 建一个文件夹,将这4个文件拷贝过去。这是我们要转到拷贝的目录来完善我们的文件系统。(注:我在根目录下建了一个名字为filesystem_install的文件夹)
(4)在filesystem_install文件夹下面用mkdir建立文件夹: dev etc home lib mnt proc root sys tmp var
(5)我们在etc下面要写两个文件fstab inittab 和一个文件夹init.d
(a) Fstab的内容是:
#device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
(b) fstab文件的作用
文 件/etc/fstab存放的是系统中的文件系统信息。当正确的设置了该文件,则可以通过"mount /directoryname"命令来加载一个文 件系统,每种文件系统都对应一个独立的行,每行中的字段都有空格或tab键分开。同时fsck、mount、umount的等命令都利用该程序。
Inittab的内容是:
#/etc/inittab
::sysinit:/etc/init.d/rcS
ttySAC0::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
(c) init.d\rcS文件的内容:
#!/bin/sh
ifconfig eth0 192.168.1.17
mount –a
(d)记的要将rcS文件的属性改成可执行的,就是rcS的颜色变成绿色了就可以了,这一步很重要,必须改。
改变其属性:chmod +x etc/init.d/rcS
(e)我在配置busybox的时候用的是动态库,所以要把/usr/local/arm/
(f)在/filesystem_install/dev下建立设备节点:
Console mtdblock0 mtdblock1 mtdblock2 null ttySAC0
用这样的命令建立:
sudo mknod console c 5 1
sudo mknod null c 1 3