免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1049 | 回复: 0
打印 上一主题 下一主题

做文件系统的脉络介绍 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-10 11:57 |只看该作者 |倒序浏览

(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的兄弟们看的)
二.         具体做的步骤
解压busybox1.7.0,然后在该目录下用make menuconfig 出现配置界面,有几个地方在配置的时候要注意一下:
(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/3.4.1/arm-linux/lib下面的3个库文件和一个加载器拷贝到/filesystem_install/lib下:ld-2.3.2.so ld-linux.so.2 libc.so.6  libcrypt.so.1  libm.so.6
(f)在/filesystem_install/dev下建立设备节点:
Console  mtdblock0  mtdblock1  mtdblock2  null  ttySAC0
用这样的命令建立:
sudo mknod console c 5 1
sudo mknod null c 1 3


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/104304/showart_2066991.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP