首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Busybox制作嵌入式Linux的文件系统 02

Busybox制作嵌入式Linux的文件系统 02

Shells --->
  [*] Enable builtin version of 'echo'
  Linux System Utilities --->
  [*] mount
  [*]     Support mounting NFS file systems
  注释:这个比较重要,否则会在后来的mount时候出现mount program didn't pass remote address的错误。
  在Installation Options里面可以设置安装的路径,即设置为新文件系统的根目录。当然也可以用缺省的 _install目录,安装之后再复制到新文件系统中去。
  在设置Login/Password Management Utilities的时候,为了免去配置glibc的麻烦,最好设置使用busybox自己的password和shadow文件的功能(Use internal password and group functions rather than system functions)。
  busybox提供的命令无疑比较全面,但它的缺省配置还不能构成一个功能比较完备的文件系统。必须要添加的命令有Login/Password Management Utilities里面的getty、login和passwd,这些命令从前是由另外一个软件包tinylogin所提供的。当然,如果不需要一个交互的登录界面,这些命令也可以去掉。通过设定内核参数init=/bin/sh可以在系统启图1busybox的编译配置界面动后直接得到一个shell。
  设置完毕后保存、退出,执行make; make install命令,busybox将在未来的根文件系统中建立/usr、/bin、/sbin等目录。从中可以看到,编译好的busybox可执行文件和其他应用命令的符号链接。典型的busybox文件大小在动态链接的情况下是300 KB左右,静态链接为800 KB左右,用它实现的文件系统完全可以控制在1 MB以下。但就目前为止,得到的还不是一个完整可用的文件系统,必须要在这个基础上添加一些必要的文件,让它可以工作。
  编译的时候可能出错:variable or field '__user' declared void
  可以将
  /usr/local/arm/3.4.1/arm-linux/sys-include/linux/fd.h
  中修改下面的语句,编译完成后再修改回去。
  //void __user *data;
  void *data;
  3. 安装
  make install
  二、制作文件系统
  用已经编译好的busybox制作完善的能自启动的文件系统
  1、建立文件夹arm2410-root-1.0:
  mkdir /ebutek/arm2410-root-1.0
  export ARM2410HOME=/ebutek/arm2410-root-1.0
  export BUSYBOXHOME=/ebutek/busybox-1.1.0
  2、将busybox编译后的文件拷贝到arm2410-root-1.0.
  cp -fr $BUSYBOXHOME/_install/* $arm2410HOME
  拷贝后可以看到$arm2410HOME下的文件如下:
  ls -all $arm2410HOME
  总计 20
  drwxr-xr-x 5 root root 4096 01-24 13:58 .
  drwxr-xr-x 16 root root 4096 01-24 13:56 ..
  drwxr-xr-x 2 root root 4096 01-24 13:58 bin
  lrwxrwxrwx 1 root root   11 01-24 13:58 linuxrc -> bin/busybox
  drwxr-xr-x 2 root root 4096 01-24 13:58 sbin
  drwxr-xr-x 4 root root 4096 01-24 13:58 usr
  3、创建其它文件夹:
  cd $arm2410HOME
  mkdir mnt root var tmp proc boot etc lib dev
  mkdir var/{lock,log,mail,run,spool}
  3、将交叉编译器中的busybox需要的lib库文件拷贝过来。
  在/usr/local/arm/3.4.1/arm-linux/lib中找到如下文件和链接:
  -rwxrwxrwx 192519    ld-2.3.2.so
  lrwxrwxrwx 111       ld-linux.so.2 -> ld-2.3.2.so
  -rwxrwxrwx 1 1190032 libc-2.3.2.so
  lrwxrwxrwx 113       libc.so.6 -> libc-2.3.2.so
  -rwxr-xr-x 118348    libcrypt-2.3.2.so
  lrwxrwxrwx 117       libcrypt.so.1 -> libcrypt-2.3.2.so
返回列表