快速业务通道

精通init ramfs构建step by step (十)

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-11

二十九、toolchain

  在init ramfs中使用uclibc库,关键是构建uclibc的工具链toolchain.构建uclibc 的 toolchain 有两种主要方式:(1)用buildroot工具( http://buildroot.uclibc.org/)自动构建,这也是uclibc的官方标准做法.(2)用CLFS Embedded手册的方法手工创建.目前CLFS Embedded还在开发中,可在http://cross-lfs.org/view/clfs-embedded/x86/中查阅.

  我们简单地说明用buildroot工具构建uclbic的toolchain的步骤:

  (1)获取buildroot.

  推荐用svn命令从它的版本库中下载:

  svn co svn://uclibc.org/trunk/buildroot

  要求使用svn命令,需要先安装subversion软件包.下载过程中,可能会出现连接异常中断的情况,这时重新执行上述命令,继续进行下载,有可能要重复多次.

  (2)配置buildroot

  我们只是创建toolchain,需要做相应的配置.在buildroot的顶层目录下,执行

  make menuconfig

  命令,在缺省配置的基础上做如下配置

  Target Architecture: i386

  Target Architecture Variant: i686

  Package Selection for the target: 取消BusyBox的选项(缺省是选中的)

  Target filesystem options: 取消 ext2 root filesystem(缺省是选中的)

  Toolchain --> Toolchain type: Buildroot toolchain

  (3)编译

  执行

  make

  命令,buildroot工具会自动下载所需要的源文件并自动编译,等一两个小时后,toolchain就编译好了.编译好的toolchain位于

  buildroot/build_i686/staging_dir/usr/bin/

  目录下.工具命令的前缀是 i686-linux- .

  三十、编译Busybox静态连接uclibc库

  一般而言,使用uclibc库是为了把它静态连接到busybox中.具体步骤是:

  (1)把uclibc toolchain的目录添加到PATH中.

  在~/.bash_profile文件中添加:

  #set PATH so it includes uclibc toolchain if it exist

  if [ -d ~/buildroot/build_i686/staging_dir/usr/bin ] ; then

  PATH="${PATH}":~/buildroot/build_i686/staging_dir/usr/bin

  fi

  (2)配置busybox静态连接库.

  在busybox的配置界面中,选择:

  Build Options --> Build BusyBox as a static binary (no shared libs)

Empire CMS,phome.net

  (3)编译

  执行

  make CROSS_COMPILE=i686-linux-

  命令“交叉编译”busybox.

  编译生成的是静态连接的可执行文件,不需要在init ramfs中拷贝库文件.

  三十一、用buildroot自动构建init ramfs

  buildroot工具实际是一个功能强大的根文件系统构建工具,它以uclibc和busybox作为系统构建的基础,toolchain只是它构建系统的中间产品.init ramfs是一种特殊的根文件系统,当然也可以用buildroot工具自动构建,下面是构建方法的简要描述:

  (1)配置

  在buildroot的配置界面下做如下的配置:

  Package Selection for the target: 选择

  Busybox

  Run Busybox''s own full installation

  Use minimal target skeleton

  Target filesystem options --> cpio the root filesystem --> comprassion method: gzip

  (2)编译

  执行

  make

  命令,进行编译.

  (3)输出

  构建好的cpio文件是

  buildroot/binaries/rootfs.i686.cpio.gz

  同一目录下还包含一个未压缩的文件:rootfs.i686.cpio

  构建目录则是

  buildroot/project_build_i686/uclibc/root

  可以在这个目录下对原始的init ramfs进行修改调整,然后自己用cpio命令打包生成新的init ramfs.

  (4)调整

  直接用buildroot生成的root.i686.cpio.gz作为init ramfs,运行时会出现

  

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号