[计算机]busybox配置

申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

文档介绍

[计算机]busybox配置

面是对1.00版本的实验。  1、文件准备  解压busybox-1.00.tar.gz得到busybox-1.00目录,进入,阅读相关的README和INSTALL,没什么特别的,都是提示busybox需要经过三个步骤的操作进行安装使用。  2、配置busybox  busybox的配置程序和linux内核菜单配置方式简直一模一样  #makemenuconfig  下面是需要编译进busybox的功能选项,其他的可以根据需要自选,但是同样不要太贪心.  GeneralConfiguration应该选的选项  Showverboseappletusagemessages  SupportforSUID/SGIDhandling    RuntimeSUID/SGIDconfigurationvia/etc/busybox.conf  BuildOptions  BuildBusyBoxasastaticbinary(nosharedlibs)  这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个linux内核不能使他正常工作.  InstallationOptions  Don'tuse/usr  (./_install)BusyBoxinstallationprefix  这个选项也一定要选,否则makeinstall后busybox将安装在原系统的/usr下,这将覆盖掉系统原有的命令.选择这个选项后,makeinstall后会在busybox目录下生成一个叫_install的目录,里面有busybox和指向他的链接.  其他选项都是一些linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了.  配置好后退出并保存.  3,编译并安装busybox  #make  #make\ninstall  顺利完成。  4、检查安装结果  根据参考资料2,检查到编译好后在解压目录busybox-1.00目录下生成子目录_install  #ll  总用量8  drwxr-xr-x2rootroot409612月1115:49bin  lrwxrwxrwx1rootroot1112月1115:49linuxrc->bin/busybox  drwxr-xr-x2rootroot409612月1115:49sbin  其中可执行文件busybox在bin目录下,其他的都是指向他的符号链接.  -rwxr-xr-x1rootroot80140012月1115:49busybox  可见busybox只要八百k多点。根据配置选择的不同,编译出来的busybox大小也会有差别。根据其他资料所述,典型的busybox文件大小在动态链接的情况下是300KB左右,静态链接为800KB左右,用它实现的文件系统完全可以控制在1MB以下  在bin/下面有:  #ll  总用量788  lrwxrwxrwx1rootroot712月1115:49[->busybox  lrwxrwxrwx1rootroot712月1115:49ash->busybox  lrwxrwxrwx1rootroot712月1115:49basename->busybox  lrwxrwxrwx1rootroot712月1115:49bunzip2->busybox  -rwxr-xr-x1rootroot80140012月1115:49busybox  lrwxrwxrwx1rootroot712月1115:49bzcat->busybox  lrwxrwxrwx1rootroot712月1115:49cat->busybox  lrwxrwxrwx1rootroot712月1115:49chgrp->busybox  lrwxrwxrwx1rootroot712月1115:49chmod->busybox  lrwxrwxrwx1rootroot712月1115:49chown->busybox  lrwxrwxrwx1rootroot712月1115:49chvt->busybox  lrwxrwxrwx1rootroot712月1115:49clear->busybox  lrwxrwxrwx1rootroot712月1115:49cmp->busybox  lrwxrwxrwx1rootroot712月1115:49cp->busybox  lrwxrwxrwx1rootroot712月1115:49cut->busybox  lrwxrwxrwx1rootroot712月1115:49date->\nbusybox  lrwxrwxrwx1rootroot712月1115:49dd->busybox  lrwxrwxrwx1rootroot712月1115:49deallocvt->busybox  lrwxrwxrwx1rootroot712月1115:49df->busybox  lrwxrwxrwx1rootroot712月1115:49dirname->busybox  lrwxrwxrwx1rootroot712月1115:49dmesg->busybox  lrwxrwxrwx1rootroot712月1115:49du->busybox  lrwxrwxrwx1rootroot712月1115:49echo->busybox  lrwxrwxrwx1rootroot712月1115:49egrep->busybox  lrwxrwxrwx1rootroot712月1115:49env->busybox  lrwxrwxrwx1rootroot712月1115:49expr->busybox  lrwxrwxrwx1rootroot712月1115:49false->busybox  lrwxrwxrwx1rootroot712月1115:49fgrep->busybox  lrwxrwxrwx1rootroot712月1115:49find->busybox  lrwxrwxrwx1rootroot712月1115:49free->busybox  lrwxrwxrwx1rootroot712月1115:49grep->busybox  lrwxrwxrwx1rootroot712月1115:49gunzip->busybox  lrwxrwxrwx1rootroot712月1115:49gzip->busybox  lrwxrwxrwx1rootroot712月1115:49head->busybox  lrwxrwxrwx1rootroot712月1115:49hexdump->busybox  lrwxrwxrwx1rootroot712月1115:49hostname->busybox  lrwxrwxrwx1rootroot712月1115:49id->busybox  lrwxrwxrwx1rootroot712月1115:49install->busybox  lrwxrwxrwx1rootroot712月1115:49kill->busybox  lrwxrwxrwx1rootroot712月1115:49killall->busybox  lrwxrwxrwx1rootroot712月1115:49ln->busybox  lrwxrwxrwx1rootroot712月1115:49logger->busybox  lrwxrwxrwx1rootroot712月1115:49ls->busybox  lrwxrwxrwx1rootroot712月1115:49mkdir->busybox  lrwxrwxrwx1rootroot712月1115:49mknod->busybox  lrwxrwxrwx1rootroot712月1115:49mktemp->busybox  lrwxrwxrwx1rootroot712月1115:49more->busybox  lrwxrwxrwx1rootroot712月1115:49mount->\nbusybox  lrwxrwxrwx1rootroot712月1115:49mv->busybox  lrwxrwxrwx1rootroot712月1115:49openvt->busybox  lrwxrwxrwx1rootroot712月1115:49pidof->busybox  lrwxrwxrwx1rootroot712月1115:49ping->busybox  lrwxrwxrwx1rootroot712月1115:49ps->busybox  lrwxrwxrwx1rootroot712月1115:49pwd->busybox  lrwxrwxrwx1rootroot712月1115:49readlink->busybox  lrwxrwxrwx1rootroot712月1115:49reset->busybox  lrwxrwxrwx1rootroot712月1115:49rm->busybox  lrwxrwxrwx1rootroot712月1115:49rmdir->busybox  lrwxrwxrwx1rootroot712月1115:49sed->busybox  lrwxrwxrwx1rootroot712月1115:49sh->busybox  lrwxrwxrwx1rootroot712月1115:49sleep->busybox  lrwxrwxrwx1rootroot712月1115:49sort->busybox  lrwxrwxrwx1rootroot712月1115:49strings->busybox  lrwxrwxrwx1rootroot712月1115:49sync->busybox  lrwxrwxrwx1rootroot712月1115:49tail->busybox  lrwxrwxrwx1rootroot712月1115:49tar->busybox  lrwxrwxrwx1rootroot712月1115:49tee->busybox  lrwxrwxrwx1rootroot712月1115:49test->busybox  lrwxrwxrwx1rootroot712月1115:49time->busybox  lrwxrwxrwx1rootroot712月1115:49touch->busybox  lrwxrwxrwx1rootroot712月1115:49tr->busybox  lrwxrwxrwx1rootroot712月1115:49true->busybox  lrwxrwxrwx1rootroot712月1115:49tty->busybox  lrwxrwxrwx1rootroot712月1115:49umount->busybox  lrwxrwxrwx1rootroot712月1115:49uname->busybox  lrwxrwxrwx1rootroot712月1115:49uniq->busybox  lrwxrwxrwx1rootroot712月1115:49unzip->busybox  lrwxrwxrwx1rootroot712月1115:49uptime->busybox  lrwxrwxrwx1rootroot712月1115:49usleep->busybox  lrwxrwxrwx1rootroot712月1115:49vi->\nbusybox  lrwxrwxrwx1rootroot712月1115:49wc->busybox  lrwxrwxrwx1rootroot712月1115:49wget->busybox  lrwxrwxrwx1rootroot712月1115:49which->busybox  lrwxrwxrwx1rootroot712月1115:49whoami->busybox  lrwxrwxrwx1rootroot712月1115:49xargs->busybox  lrwxrwxrwx1rootroot712月1115:49yes->busybox  lrwxrwxrwx1rootroot712月1115:49zcat->busybox  根据资料,可以这样用busybox  #busyboxls  他的功能就相当运行ls命令  实验如下:  在bin/目录下  #busyboxls  [chgrpcutdufindhostnamelsopenvtrmsynctruptimexargs……  实际就是把原先的命令加一个busybox的前缀就是了~  最常用的用法是建立指向busybox的链接,不同的链接名完成不同的功能.  #ln-sbusyboxls  #ln-sbusyboxrm  #ln-sbusyboxmkdir  然后分别运行这三个链接:  #./ls  #./rm  #./mkdir  就可以分别完成了lsrm和mkdir命令的功能.虽然他们都指向同一个可执行程序busybox  但是只要链接名不同,完成的功能就不同。  实际上可以看到安装结果已经包含了这些基本命令但符号链接。实验如下:  #./ls  Usingfallbacksuidmethod  [chgrpcutdufindhostnamelsopenvtrmsynctruptimexargs……  #./echo$PATH  Usingfallbacksuid\nmethod  /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin  #./mkdir  Usingfallbacksuidmethod  BusyBoxv1.00(2006.12.11-07:42+0000)multi-callbinary  Usage:mkdir[OPTION]DIRECTORY...  ……  #busyboxmkdir  BusyBoxv0.60.5(2003.01.24-22:43+0000)multi-callbinary  Usage:mkdir[OPTION]DIRECTORY...  ……  可以看到,使用busybox的ls命令会多输出一个左括符号,并会多出Usingfallbacksuidmethod或BusyBoxv1.00(2006.12.11-07:42+0000)multi-callbinary的提示  5、反思与总结  实际上最麻烦的工作是配置,其中动态/静态库,安装位置,是否使用交叉编译工具等几个问题在上面操作中并没有深入涉及。  参考资料3中提到配置时的选项:  下面三个目录是很多人都会感兴趣的:  BuildOptions--->  InstallationOptions--->  Login/PasswordManagementUtilities--->  在BuildOptions里面有是否使用交叉编译的选项(DoyouwanttobuildBusyBoxwithaCrossCompiler)。如果要对其他平台进行编译就要选择它并设置相应的编译程序前缀。  在InstallationOptions里面可以设置安装的路径,即设置为新文件系统的根目录。当然也可以用缺省的_install目录,安装之后再复制到新文件系统中去。  在设置Login/PasswordManagementUtilities的时候,为了免去配置glibc的麻烦,最好设置使用busybox自己的password和shadow文件的功能(Useinternalpasswordandgroupfunctionsratherthansystemfunctions)。  busybox提供的命令无疑比较全面,但它的缺省配置还不能构成一个功能比较完备的文件系统。必须要添加的命令有Login/PasswordManagement\nUtilities里面的getty、login和passwd,这些命令从前是由另外一个软件包tinylogin所提供的。当然,如果不需要一个交互的登录界面,这些命令也可以去掉。通过设定内核参数init=/bin/sh可以在系统启图1busybox的编译配置界面动后直接得到一个shell。  tlenetd命令是一个远程登录服务程序,把它编译进busybox中会为将来的调试提供很多的方便。当然也可以通过串口终端的方式管理嵌入式设备,但网络登录的方式却更为方便。  [遗留问题]  1、Showverboseappletusagemessages  RuntimeSUID/SGIDconfigurationvia/etc/busybox.conf是什么意思?  [参考资料]  1、《源码开放的嵌入式系统软件分析与实践——基于skyeye和arm开发平台》陈渝李明杨晔等编著北京航空航天大学出版社  2、编译busybox  实际上这个资料只不过是另一篇文章“  BabyLinux制作过程详解  ”中的一个片段~  3、Busybox制作嵌入式Linux的文件系统(王朝网络wangchao.net.cn)-
查看更多

相关文章

您可能关注的文档