用busybox打造S3C2410上的文件系统

嵌入式技术

1372人已加入

描述


 很久以前就用过busybox了, 最近想在自己的这块MC2410板上做自己的文件系统.搜集了一些资料, 遇到了一些困难.  现写出来与大家分享其过程:
 
环境:
 host machine :Fedora 2
 target machine : MC2410 (S3C2410)  上面跑的 Linux version 2.4.18-rmk7-pxa1 (root@Rhvd) (gcc version 2.95.2 20000516 (releas6) 内核.

 安装交叉编译工具链, 我使用的是arm-linux-3.32 ,然后下载busybox-1.2.1,
 
 说明: linux上的软件版本很重要,有时版本不一样,就不能正常编译,经验之谈. 我看了网上的人家做的一般是 arm-linux-3.32 + busybox-1.1.3 ,说是编译没有问题, 但结果我却出了问题,可能我的host OS 不是Rh9吧

 顺便说一句: 不知为何搞嵌入式的公司都用Rh9, 由于在网上现在很难下载到Rh9,就装了Fedora.就不信这个邪.
 
 1: 交叉编译busybox  ,make menuconfig
 这里需要注意的地方:
 
  在Build Options里面
  Build busybox  as  a staic binary (no shared libs) ,我是选yes, 毕竟静态链接比较简单, 先把简单的做成功再做复杂的.
  Build shared libbusybox  没有选
  Do you want to build BusyBox with a Cross Compiler
 填写/usr/local/arm/3.3.2/bin/arm-linux-
 
  在Installation Options里面可以设置安装的路径,即设置为新文件系统的根目录。当然也可以用缺省的 _install目录,安装之后再复制到新文件系统中去。
 
  Shells >                                                               
                    Choose your default shell (ash) >                            
                        /* (X) ash 选中ash,这样生成的时候才会生成bin/sh文件
特别注意这个地方: 刚开始没有选择这个Choose your default shell (none) >为ash, 由于默认是none ,结果做成的文件系统启动后出现: sh: applet not found

其他的配置见文章最后的.config文件内容
                  
  make  TARGET_ARCH=arm all (看到网上的是这样的, 刚开始我一直就是用 make ,没有加参数)
 
  make instll (将在_INSTLL生成 bin,sbin两个文件夹和一个linuxrc文件.
 
 
  2: 创建文件系统的启动脚本
 
  mkdir root_fs
  cp     _INSTLL生成的bin,sbin两个文件夹   .
 
  在这里,我没有要生成的linuxrc, 参考了网上的资料, 写了一个
linuxrc------->

#!/bin/sh
/sbin/insmod -f /lib/yaffs.o
 
 
/bin/mount  -f -t cramfs  -o remount,ro  /dev/mtdblock/3 /
 
/bin/mount -t  yaffs /dev/mtdblock/4   /usr
 
exec /sbin/init

然后chmod 777 linuxrc  ,因为内核启动参数中init=/linuxrc,可见linuxrc肯定要是可执行的文件.
 
 这个linxurc特别重要, 影响启动是否成功.
 
 由于我这里用到了YAFFS系统, 故将yaffs.o考到root_fs/lib之下
 
 
  我自己对照了一下原来板子提供的文件系统里的启动脚本文件,研究发现/etc/下面须有init.d/rcS,
  passwd,  group, fstab
  至于是否是非要这几个文件不可, 还有待考证.
 
  这里只是列出我的过程:
  init.d/rcS ------->
 
 #! /bin/sh
/bin/mount -o remount,rw  /
/bin/mount -a
/bin/hostname  hjembed  (这句很明显配置hostname 的,要不要随你)


fstab ------->
none          /proc           proc      defaults    0   0
none         /dev/pts         devpts    mode=0622     0    0
tmpfs        /dev/shm         tmpfs     defaults      0    0
 
 
group------->
root:x:0:root

resolv.conf------->
nameserver  202.114.88.10
nameserver  202.114.160.10 (这里很明显配置DNS的,要不要随你)

3: 试验新的文件系统
./mkcramfs  root_fs  root_fs.cramfs
将root_fs.cramfs烧写进板子,发现启动正常,mount nfs文件系统也没有问题.

 

另: 在编译busybox-1.1.3时,



打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分