busybox配置

busybox配置
busybox配置

Busybox Setting配置

Busybox Settings ---> //busybox设置选项

General Configuration ---> //通用设置

/*桌面系统全配置,嵌入式系统不需要*/

[ ] Enable options for full-blown desktop systems

[ ] Provide compatible behavior for rare corner cases (bigger code) (NEW)

/*兼容SUSv2以后命令*/

[*] Enable obsolete features removed before SUSv3 (NEW)

/*如果不适用GCC编译需要选择,用GCC不需要*/

[ ] Avoid using GCC-specific code constructs (NEW)

--- Enable Linux-specific applets and features

/*缓冲区分配政策(适用malloc分配)*/

Buffer allocation policy (Allocate with Malloc) --->

/*显示简短的帮助信息,如果不想显示,可以节省7K空间*/

[*] Show applet usage messages (NEW)

/*显示详细的帮助信息,增加13K*/

[*] Show verbose applet usage messages (NEW)

/*运行 —help显示的帮助信息*/

[*] Store applet usage messages in compressed form (NEW)

/*支持—install [-s]命令,该选项允许在busybox运行时动态创建链接*/

[*] Support --install [-s] to install applet links at runtime (NEW)

/*不使用/usr,当make install时,所有程序安装在/bin和/sbin下,而不安装在/usr/bin

和/usr/sbin下*/

[ ] Don't use /usr (NEW)

/*支持系统语言环境,需要系统支持*/

[ ] Enable locale support (system needs locale for this to work) (NEW)

/*支持unicode编码*/

[*] Support Unicode (NEW)

/*选中当LANG变量值为“XXXX.utf8时生效,否则总是生效”*/

[ ] Check $LANG environment variable (NEW)

/*典型值63,表示一切输入输出设备*/

(63) Character code to substitute unprintable characters with (NEW)

/*不支持拉丁文*/

(767) Range of supported Unicode characters (NEW)

/*如果不选,0长度的unicode字符编码不显示*/

[ ] Allow zero-width Unicode characters on output (NEW)

/*如果不选,大于1长度的unicode字符编码不显示*/

[ ] Allow wide Unicode characters on output (NEW)

/**/

[ ] Bidirectional character-aware line input (NEW)

/**/

[ ] Make it possible to enter sequences of chars which are not Unicode (NEW)

/*允许使用GUN的长参数*/

[*] Support for --long-options (NEW)

/*需要devpts挂载上*/

[*] Use the devpts filesystem for Unix98 PTYs (NEW)

/*除非你有一个好的原因,否则不要使能*/

[ ] Clean up all memory before exiting (usually not needed) (NEW)

/*使用/var/run/utmp追踪哪个用户处于登陆状态,程序在这设置和删除接入点*/ [*] Support utmp file (NEW)

/*程序将在/var/run/wtmp文件附加新接入点*/

[*] Support wtmp file (NEW)

/*支持一些程序写pid文件*/

[*] Support writing pidfiles (NEW)

/*设置busybox的二进制程序给予root权限*/

[*] Support for SUID/SGID handling (NEW)

/*通过检查/etc/busybox.conf文件来确定SUID/SGID的状态(笨方法)*/

[*] Runtime SUID/SGID configuration via /etc/busybox.conf (NEW)

/*选中避免没有权限的警告*/

[*] Suppress warning message if /etc/busybox.conf is not readable (NEW)

/*启用SELinux支持LS,PS和ID指令。还提供了SELinux中的applet编译选项。*/ [ ] Support NSA Security Enhanced Linux (NEW)

/*试验性选项,制定busybox运行的程序,及时没有连接到busybox,可能引起一些问题*/

[ ] exec prefers applets (NEW)

(/proc/self/exe) Path to BusyBox executable (NEW)

Build Options ---> //编译选项

/*静态编译,不需要动态库,会使编译的文件变大很多*/

[ ] Build BusyBox as a static binary (no shared libs) (NEW)

/*几乎没人使用*/

[ ] Build BusyBox as a position independent executable (NEW)

/*支持无MMU版本*/

[ ] Force NOMMU build (NEW)

/*建立一个包含素有busybox代码的库libbusybox.so.N.N.N*/

[ ] Build shared libbusybox (NEW)

/*如果想支持2GB的大文件选上,否则不选,选择需要库支持*/

[*] Build with Large File Support (for accessing files > 2 GB) (NEW)

/*交叉编译器路径,例:arm-linux-*/

() Cross Compiler prefix (NEW)

/*用于指定交叉编译时的/usr/lib和usr/include路径,本地留空*/

() Path to sysroot (NEW)

/*传给编译器的CFLAGS*/

() Additional CFLAGS (NEW)

/*传给连接器的LDFLAGS*/

() Additional LDFLAGS (NEW)

/*通过-l传给连接器的LDLIB*/

() Additional LDLIBS (NEW)

Debugging Options ---> //调试选项

[ ] Build BusyBox with extra Debugging symbols (NEW) //开发时调试用

[ ] Abort compilation on any warning (NEW) //向GCC增加-Werror选项Additional debugging library (None) ---> //调试用的库

(X) None

( ) Dmalloc

( ) Electric-fence

Installation Options ("make install" behavior) ---> //安装选项What kind of applet links to install (as soft-links) ---> //链接类型,一般选软链接(X) as soft-links

( ) as hard-links

( ) as script wrappers

( ) not installed

/*make install时生成文件的位置。默认当前目录下的_install*/

(./_install) BusyBox installation prefix (NEW)

Busybox Library Tuning ---> //库微调

/*使能systemd控制busybox的守护进程,能减少代码*/

[*] Enable systemd support (NEW)

/*支持kill,killall中RTMIN和RTMAX信号名称,占250字节*/

[*] Support RTMIN[+n] and RTMAX[-n] signal names (NEW)

/*最小密码长度*/

(6) Minimum password length (NEW)

/*运行MD5SUM算法的速度*/

(1)MD5: Trade bytes for speed (0:fast, 3:slow) (NEW)

/*使上层执行速度快20%或减少20%CPU消耗,但代码稍大*/

[*] Faster /proc scanning code (+100 bytes) (NEW)

/*启用/etc/networks中网络名称,很少使用*/

[ ] Support for /etc/networks (NEW)

/*允许通过一些命令确定窗口大小,要使用*/

[*] Use termios to manipulate the screen (NEW)

/*命令行模式,主要用于shell*/

[*] Command line editing (NEW)

/*命令行在堆栈缓冲区的大小*/

(1024) Maximum length of input (NEW)

/*启用VI风格的命令行*/

[ ] vi-style line editing commands (NEW)

/*制定命令历史记录,0为禁止*/

(255) History size (NEW)

/*保存shell模式下的历史*/

[*] History saving (NEW)

/*言如其义*/

[ ] Save history on shell exit, not after every command (NEW)

/*启用历史搜索,增加0.5K代码*/

[*] Reverse history search (NEW)

/*使用TAB补全,很好用*/

[*] Tab completion (NEW)

/*使能用户名补全*/

[ ] Username completion (NEW)

/*允许使用转移字符提示*/

[*] Fancy shell prompts (NEW)

/*使能显示光标位置,关闭可节省代码空间*/

[ ] Query cursor position from terminal (NEW)

/*使用此选项,当使用CP命令复制符号链接时将符号链接复制成普通文件*/ [*] Non-POSIX, but safer, copying to special nodes (NEW)

/*使能一些CP错误信息,增加60字节*/

[ ] Give more precise messages when copy fails (cp, mv etc) (NEW)

/*一些命令使用的缓冲区大小*/

(4) Copy buffer size, in kilobytes (NEW)

/**/

[*] Skip rootfs in mount table (NEW)

/*使用clock_gettime(CLOCK_MONOTONIC) 系统调用,一些命令会用到准确时间,不使用可能引发错误*/

[ ] Use clock_gettime(CLOCK_MONOTONIC) syscall (NEW)

/*使用名称显示错误而不是十六进制数,不选择节省1400字节空间*/

[*] Use ioctl names rather than hex values in error messages (NEW)

/*支持在网络中打印infiniband地址*/

[*] Support infiniband HW (NEW)

busybox详解制作根文件系统

详解制作根文件系统 单击,返回主页,查看更多内容 一、FHS(Filesystem Hierarchy Standard)标准介绍 当我们在linux下输入ls / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。 该标准规定了根目录下各个子目录的名称及其存放的内容: 制作根文件系统就是要建立以上的目录,并在其中建立完整目录内容。其过程大体包括: ?编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录 ?利用交叉编译工具链,构建/lib目录 ?手工构建/etc目录 ?手工构建最简化的/dev目录 ?创建其它空目录 ?配置系统自动生成/proc目录 ?利用udev构建完整的/dev目录 ?制作根文件系统的jffs2映像文件 下面就来详细介绍这个过程。 二、编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录

这些目录下存储的主要是常用命令的二进制文件。如果要自己编写这几百个常用命令的源程序,my god,这简直是一个噩梦!好在我们有嵌入式Linux系统的瑞士军刀——busybox,事情就简单很多。 1、从https://www.360docs.net/doc/5015864291.html,/下载busybox-1.7.0.tar.bz2 2、tar xjvf busybox-1.7.0.tar.bz2解包 3、修改Makefile文件 175 ARCH ?= arm 176 CROSS_COMPILE ?= arm-linux- 4、make menuconfig配置busybox busybox配置主要分两部分。 第一部分是Busybox Settings,主要编译和安装busybox的一些选项。这里主要需要配置:

BusyBox简化嵌入式Linux系统

BusyBox 简化嵌入式Linux 系统 BusyBox 的诞生 BusyBox 最初是由Bruce Perens 在1996 年为Debian GNU/Linux 安装盘编写的。其目标是在一张软盘上创建一个可引导的GNU/Linux 系统,这可以用作安装盘和急救盘。一张软盘可以保存大约 1.4-1.7MB 的内容,因此这里没有多少空间留给Linux 内核以及相关的用户应用程序使用。 BusyBox 许可证 BusyBox 是按照GNU General Public License(GPL)许可证发行的。这意味着如果我们在一个项目中使用BusyBox,就必须遵守这个许可证。我们可以在BusyBox Web 站点(请参看本文后面参考资料一节的内容)上看到这个许可证的内容。BusyBox 团队似乎正忙于监视违反这个许可证的情况。实际上,他们维护了一个“Hall of Shame” 页面来说明违反者的情况。 BusyBox 揭露了这样一个事实:很多标准Linux 工具都可以共享很多共同的元素。例如,很多基于文件的工具(比如grep和find)都需要在目录中搜索文件的代码。当这些工具被合并到一个可执行程序中时,它们就可以共享这些相同的元素,这样可以产生更小的可执行程序。实际上,BusyBox 可以将大约3.5MB 的工具包装成大约200KB 大小。这就为可引导的磁盘和使用Linux 的嵌入式设备提供了更多功能。我们可以对 2.4 和 2.6 版本的Linux 内核使用BusyBox。 BusyBox 是如何工作的? 为了让一个可执行程序看起来就像是很多可执行程序一样,BusyBox 为传递给 C 的main 函数的参数开发了一个很少使用的特性。回想一下 C 语言的main 函数的定义如下: POSIX 环境 尽管 BusyBox 的目标是提供一个相当完整的 POSIX(可移植操作系统接口)环境,这是一个期望,而不是一种需求。这些工具虽然并不完整,但是它们提供了我们期望的主要功能。 清单 1. C 的main 函数 int main( int argc, char *argv[] ) 在这个定义中,argc是传递进来的参数的个数(参数数量),而argv是一个字符串数组,代表从命令行传递进来的参数(参数向量)。argv的索引 0 是从命令行调用的程序名。 清单 2 给出的这个简单 C 程序展示了BusyBox 的调用。它只简单地打印argv向量的内容。 清单 2. BusyBox 使用argv[0]来确定调用哪个应用程序 // test.c #include int main( int argc, char *argv[] ) {

基于busybox的根文件系统制作

龙源期刊网 https://www.360docs.net/doc/5015864291.html, 基于busybox的根文件系统制作 作者:李飞,武金虎,石颖博 来源:《电脑知识与技术》2010年第17期 摘要:Busybox是构建嵌入式Linux文件系统的必备软件,它是所有文件和设备节点的起始点,是决定系统能否正常启动的关键。通过busybox-1.1.3为例,进行配置、编译、安装等过程,从而形成简单的根文件系统映像文件,为以后嵌入式Linux系统的移植打下了良好的开端。 关键词:Busybox;嵌入式Linux;Linux操作系统;根文件系统;cramfs 文件系统 中国分类号:TP316.81文献标识码:A文章编号:1009-3044(2010)17-4655-02 Making Root File System Based on Busybox LI Fei, WU Jin-hu, SHI Ying-bo (College of Computer Science and Information, Guizhou University, Guiyang 550025, China) Abstract: Busybox is an essentiaL software to buiLd an embedded Linux fiLe system. It is the starting node point of aLL the fiLes and devices and the key whether the system can have a normaL start. Taking busybox-1.1.3 for exampLe, making a simpLe root image system fiLe by configuration compiLation and instaLLation Lays a good foundation for migration of the embedded Linux system. Key words: busybox; embedded linux; Linux OS; root file system; cramfs file system 1 根文件系统结构 根文件系统是所有文件和设备节点的起始点,包括系统所必须的各种工具软件、库文件、 脚本、配置文件等一系列的文件。一个基本的Linux根文件系统包含有以下的目录:dev、proc、bin、etc、usr、Lib、temp、var、usr等等目录。其中dev是设备文件节点目录,proc是挂载proc文件系统所用的目录,bin目录下面包含了系统的基本命令,etc目录是系统启动脚本所在的目录,Lib是系统默认的动态链接库目录,usr是用户目录,temp是临时目录,用来保存临时文 件,var目录包含系统运行时要改变的数据。以上都是根文件系统所必须的目录 2 Busybox简介 熟练嵌入式Linux的朋友对busybox一定不会陌生,它是标准Linux工具的一个单个可执行实现,被形象的称为嵌入式Linux系统中的“瑞士军刀”,因为它将许多常用的UNIX工具和命令 结合到一个单独的可执行程序中。虽然busybox中的这些工具相对于GNU常用工具功能有所

busybox简介及使用

busybox简介及使用 :2006-11-27作者:acsbor来自:cublog 1,busybox简介 busybox是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.我们平时用的那些linux命令就好比是分立式的电子元件,而busybox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍,在嵌入式linux应用中,busybox有非常广的应用,另外,大多数linux发行版的安装程序中都有busybox的身影,安装linux的时候案ctrl+alt+F2就能得到一个控制台,而这个控制台中的所有命令都是指向busybox的链接. Busybox的小身材大作用的特性,给制作一张软盘的linux带来了及大方便. 2,busybox的用法 可以这样用busybox #busybox ls 他的功能就相当运行ls命令 最常用的用法是建立指向busybox的链接,不同的链接名完成不同的功能. #ln -s busybox ls #ln -s busybox rm #ln -s busybox mkdir 然后分别运行这三个链接: #./ls #./rm #./mkdir 就可以分别完成了ls rm 和mkdir命令的功能.虽然他们都指向同一个可执行程序busybox 但是只要链接名不同,完成的功能就不同,busybox就是这么的神奇.

很多linux网站都提供busybox的源代码下载.目前版本是busybox1.0正式版. 3,配置busybox busybox的配置程序和linux内核菜单配置方式简直一模一样.熟悉用make menuconfig方式配置linux内核的朋友很容易上手. #cp busybox-1.00.tar.gz /babylinux #cd /babylinux #tar xvfz busybox-1.00.tar.gz #cd busybox-1.00 #make menuconfig 下面是需要编译进busybox的功能选项,其他的可以根据需要自选,但是同样不要太贪心. General Configuration应该选的选项 Show verbose applet usage messages Runtime SUID/SGID configuration via /etc/busybox.conf Build Options Build BusyBox as a static binary (no shared libs) 这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个linux内核不能使他正常工作. Installation Options Don't use /usr 这个选项也一定要选,否则make install 后busybox将安装在原系统的/usr下,这将覆盖掉系统原有的命令.选择这个选项后,make install后会在busybox目录下生成一个叫_install的目录,里面有busybox和指向他的链接. 其他选项都是一些linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了. 配置好后退出并保存.

Busybox 裁剪

因为原先板子上的busybox大小接近2MB,包含的东西太多,现在又需要把系统裁到16 MB了, 并且原来是static编译的, 并且/lib中存在uclibc库, 应用程序也需要使用, 浪费了。 所以决定重新对busybox进行裁剪,编译为动态链接库,初步估计能省下1.5 MB的宝贵空间。 步骤: 1. 解压 2. 修改Makefile 的CROSS_COMPILE 3. 根据产品需求配置 make menuconfig 生成的.config文件如下: # # Automatically generated make config: don't edit # Busybox version: 1.12.1 # Sat Oct 11 14:04:08 2008 # CONFIG_HAVE_DOT_CONFIG=y # # Busybox Settings # # # General Configuration # # CONFIG_DESKTOP is not set # CONFIG_EXTRA_COMPAT is not set CONFIG_FEATURE_ASSUME_UNICODE=y CONFIG_FEATURE_BUFFERS_USE_MALLOC=y # CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set # CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set CONFIG_SHOW_USAGE=y # CONFIG_FEATURE_VERBOSE_USAGE is not set # CONFIG_FEATURE_COMPRESS_USAGE is not set CONFIG_FEATURE_INSTALLER=y # CONFIG_LOCALE_SUPPORT is not set CONFIG_GETOPT_LONG=y # CONFIG_FEATURE_DEVPTS is not set CONFIG_FEATURE_CLEAN_UP=y # CONFIG_FEATURE_PIDFILE is not set CONFIG_FEATURE_SUID=y # CONFIG_FEATURE_SUID_CONFIG is not set # CONFIG_FEATURE_SUID_CONFIG_QUIET is not set # CONFIG_SELINUX is not set

Busybox移植小记

Busybox移植小记 网上类似的文章很多很多,谨在此记录下一些这两天移植时遇到的问题和一些经验。 前两天因为项目需求,出于安全性考虑,客户需要串口或telnet 登录系统时能为默认的账户添加密码,这样的事情本来是很容易的,呵呵,可是客户不愿意自己上网查资料弄,非要我们提供方案的给他做,没办法,客户是上帝……,呵呵。 于是总监安排我去处理这个问题,然后就有了下面的故事,OK,简称是故事吧,呵呵。 背景: 1.由于系统硬件限制,文件系统制作成sqush文件系统,然后以只读的方式挂载到 / 目录下。 2.有一个jffs2分区,可读写。 3.busybox之前没有集成passwd命令。 尝试过的方法: 方法一: 基于上述背景,当初接到这个任务的时候,我就在想能不能有个什么办法,比如说把busybox的passwd命令的源码改一下实现成一个我们自己的passw d命令,然后根据输入的明码,按照当前系统的解码规则对应的使用相应的编码规则生成密码,然后将生成的密码(加密后的)字符串写入到/etc/shadow 文件下。 但是当我看到passwd 命令的源码时,我觉得一时半会也搞不定,因为本人菜鸟嘛~。而且项目紧张还有很多事情要做,不可能花很多时间去解决这个问题。于是这个方案放弃了,但是我想,以后有机会的话还是可以尝试一下这个方法。 方法二: 然后我发现同事有一块主分区是可写的(主要是/etc/passwd和/etc/shadow 这两个文件,group暂时没有管),并且又有passwd命令。于是兴高采烈的去借了他的板子,然后使用passwd命令修改root账户的密码,然后打算将shadow下的密钥那一栏(具体是哪一栏其他很多资料讲的很清楚)复制下来,当我满怀兴奋的用cat 查看时,又一盆冷水泼来,发现他的竟然没有使用shadow,而是直接写在passwd中,不同的系统配置设置密码和解码

busybox网络配置

想找一些现成的busybox配置脚本启动网络搜到的都是些介绍性质的,彼此拷来拷去的东西,没办法.自己看脚本配置,很简单,几分钟就搞定了.过程从busybox的启动脚本:/etc/rc.d/init.d/network的启动过程终可以看到网设备的初始化过程.首先/etc/network.conf终定义了NETWORKING和网关的值,如果是yes那么从network.d中找设备的配置文件.(在linux发行版中看network配置,它地网卡配置在/etc/sysconfig目录下) network如下; #!/bin/ash # # Network interface(s) init script # # config: /etc/network.conf # /etc/network.d/interface.[devname] . /etc/rc.d/init.d/functions . /etc/network.conf if [ "$NETWORKING" != "yes" ]; then echo "Networking is disabled in /etc/network.conf" exit 0 fi case "$1" in start) for i in /etc/network.d/interface.* do if [ -r "$i" ]; then . $i if [ "$DHCP" = "yes" ]; then echo -n "Starting DHCP for interface $INTERFACE: " udhcpc -b -i "$INTERFACE" \ -p "/var/run/udhcpc.$INTERFACE.pid" \ > /dev/null else echo -n "Setting up interface $INTERFACE: " ifconfig "$INTERFACE" "$IPADDRESS" \ netmask "$NETMASK" \ broadcast "$BROADCAST" up fi check_status fi done if [ "$USE_GATEWAY" = "yes" -a -n "$GATEWAY" ]; then

ELDK中文开发手册

ELDK 开发手册 1. 概要 这是嵌入式PowerPC, ARM和MIPS系统中使用DENX U-Boot和Linux的指导手册。文档中描述了如何在嵌入式PowerPC, ARM和MIPS系统上配置、编译、使用Das U-Boot (常常缩写为“U-Boot”)和Linux操作系统。文档中涵盖了所有你可能需要的用于配置、编译、运行U-Boot和Linux的工具。 2. 绪论 首先,我们介绍如何安装交叉编译开发工具Embedded Linux Development Kit(ELDK),这个开发套件你很有可能会用到——至少当你在标准的x86 PC上使用Linux或者Sun Solaris系统作为开发环境的时候,你会需要它的。 然后,我们会阐述通过串口与你的目标板连接:你需要配置一个终端控制程序,如cu 或者kermit。 你常常需要通过网线把映像文件下载到你的目标板上。为了实现这个目的,你需要TFTP和DHCP/BOOTP服务器。文档中提供了简要的相关配置说明。 接下来则是描述如何配置和编译U-Boot使之适用于某个特定的平台,以及如何安装和在该硬件平台上运行。 下一步的工作是配置、建立和安装Linux。我们使用SELF(Simple Embedded Linux Framework)来展示如何建立一个开发环境(包括通过NFS挂载的根文件系统)和一个嵌入式目标板配置(从基于busybox的ramdisk映像文件中运行)。 本文档不会给出如何把U-Boot或者Linux移植到一个新的硬件平台,而是默认你的开发板已经被U-Boot和Linux所支持。 本手册各种文档格式的最新版本可以从以下网址获取: · HTML http://www.denx.de/wiki/publish/DULG/DULG-canyonlands.html · plain ASCII text http://www.denx.de/wiki/publish/DULG/DULG-canyonlands.txt ·PostScript European A4 format http://www.denx.de/wiki/publish/DULG/DULG-canyonlands.ps ·PDF European A4 format http://www.denx.de/wiki/publish/DULG/DULG-canyonlands.pdf 3. 嵌入式Linux开发工具套件 嵌入式Linux开发工具套件(ELDK)包括GNU交叉开发工具,如编译器、binutils、gdb 等工具,和一些已经编译好的目标工具以及负责提供在目标平台上函数调用的库文件。还免费提供了所有的源代码,包括全部补丁、扩展文件、以及用于编译开发工具使用的程序和脚本。安装包都是基于RPM包管理器。 3.1 获取ELDK 可以通过以下方式获得ELDK。 ·DENX计算机系统光盘 ·从以下服务器中下载 FTP方式 ftp://mirror.switch.ch/mirror/eldk/eldk/ ftp://https://www.360docs.net/doc/5015864291.html,/pub/linux/eldk/ ftp://ftp.sunet.se/pub/Linux/distributions/eldk/ ftp://https://www.360docs.net/doc/5015864291.html,/pub/eldk/

BusyBox配置菜单的详细选项

BusyBox配置菜单的详细选项 1 Busybox Settings ---> 2 General Configuration ---> 3 [ ] Enable options for full-blown desktop systems 4 [ ] Provide compatible behavior for rare corner cases (bigger code) 5 [ ] Assume that 1:1 char/glyph correspondence is not true 6 Buffer allocation policy (Allocate with Malloc) ---> 7 --- Show terse applet usage messages 8 [*] Show verbose applet usage messages 9 [*] Store applet usage messages in compressed form 10 [*] Support --install [-s] to install applet links at runtime 11 [*] Enable locale support (system needs locale for this to work) 12 [*] Support for --long-options 13 [*] Use the devpts filesystem for Unix98 PTYs 14 [ ] Clean up all memory before exiting (usually not needed) 15 [*] Support writing pidfiles 16 --- Support for SUID/SGID handling 17 [*] Runtime SUID/SGID configuration via /etc/busybox.conf 18 [*] Suppress warning message if /etc/busybox.conf is not readable 19 [ ] Support NSA Security Enhanced Linux 20 [ ] exec prefers applets 21 (/proc/self/exe) Path to BusyBox executable 22 Build Options ---> 23 [*] Build BusyBox as a static binary (no shared libs) //选用静态链接 24 [ ] Force NOMMU build 25 [*] Build with Large File Support (for accessing files > 2 GB) 26 () Cross Compiler prefix //指定交叉编译工具的路径,也可以直接修改Makefile文件 27 Debugging Options ---> 28 [ ] Build BusyBox with extra Debugging symbols 29 [ ] Abort compilation on any warning 30 Additional debugging library (None) ---> 31 [*] Enable obsolete features removed before SUSv3? 32 Installation Options ---> 33 [*] Don't use /usr //不选该项,BusyBox将默认安装到原系统的/usr目录下面,这将覆盖掉系统原有的命令。 34 Applets links (as soft-links) ---> 35 (./_install) BusyBox installation prefix 36 Busybox Library Tuning ---> 37 (6) Minimum password length 38 (2) MD5: Trade Bytes for Speed 39 [*] Faster /proc scanning code (+100 bytes) 40 [*] Support for /etc/networks 41 [*] Command line editing 42 (1024) Maximum length of input 43 [*] vi-style line editing commands 44 (15) History size 45 [*] History saving 46 [*] Tab completion 47 [*] Username completion 48 [*] Fancy shell prompts 49 [ ] Give more precise messages when copy fails (cp, mv etc) 50 (4) Copy buffer size, in kilobytes 51 [ ] Use clock_gettime(CLOCK_MONOTONIC) syscall 52 [*] Use ioctl names rather than hex values in error messages 53 [*] Support infiniband HW 54 --- Applets 55 Archival Utilities ---> 56 [*] Make tar, rpm, modprobe etc understand .lzma data 57 [*] Make tar, rpm, modprobe etc understand .bz2 data 58 [*] Make tar, rpm, modprobe etc understand .gz data 59 [*] Make tar and gunzip understand .Z data 60 [*] ar 61 [*] Support for long filenames (not need for debs) 62 [*] bunzip2 63 [*] bzip2

arm-linux-gcc-4.4.1+Linux-2.6.31.6+busybox-1.15.1在TQ2440的移植

针对最新的交叉编译环境和最新的Linux内核以及最新的busybox,我用最新的交叉编译器arm-linux-gcc-4.4.1编译且移植linux-2.6.31.6和busybox-1.15.1到TQ2440开发板上。使用的u-boot是天嵌光盘中带的u-boot-1.1.6,但是我把其中的s3c2440的机器码修改为默认值,即:362,这样就不用修改Linux内核中的s3c2440的机器码了。下面是具体的移植步骤(今天我只移植了NAND、RTC、SD卡和DM9000,明天接着移植其他部分): 移植Linux-2.6.31.6到2440 1。从https://www.360docs.net/doc/5015864291.html,下载目前Linux最新源代码包,linux-2.6.31.6.tar.bz2 2。解压缩linux-2.6.31.6.tar.bz2到指定的目录下,如:kernel/目录下; 3。进入kernel目录(#cd kernel); 4。修改系统时钟。Linux内核默认系统时钟为16MHz,我的板子使用的时钟是12MHz的,因此需要调整系统时钟参数。打开文件arch/arm/mach-s3c2440/mach-smdk2440.c,修改smdk2440_map_io()函数中的s3c24xx_init_clocks()中的参数为12000000; 5。添加NAND分区表到内核。 1)#vim arch/arm/plat-s3c24xx/common-smdk.c; 2)修改结构smdk_default_nand_part,添加自己的分区表信息。如下是我的分区表: static struct mtd_partition smdk_default_nand_part[] = { [0] = { .name = "bootloader", .size = 0x00040000, .offset = 0x0, }, [1] = { .name = "kernel", .size = 0x00200000, .offset = 0x00200000, }, [2] = { .name = "yaffs2", .size = 0x0FB80000, .offset = 0x00400000, } } 3)在内核配置选项中,选择Device Drivers->MTD support->NAND Device Support->NAND Flash support for Samsung S3C SoCs和Samsung S3C NAND Hardware ECC;同时需要在MTD support中选择MTD partitioning support(支持分区)、Command line partition table parsing、Direct char device access to MTD devices和Caching block device access to MTD devices。MTD support选择项中只需要选择这些就可以了,别的都可以去掉。 6。添加yaffs2文件系统到内核。 1)从https://www.360docs.net/doc/5015864291.html,/cgi-bin/viewcvs.cgi/网站上下载最新的yaffs源代码包; 2)解开yaffs源码包后,有两个目录分别为yaffs和yaffs2。之后进入yaffs2,执行如下命令:#patch-ker.sh c 3)在内核配置选项中,选择File Systems->Miscellaneous filesystems->YAFFS2 file system support 7。修改串口名称(该步骤可以省略,前提是你的根文件系统中/etc/inittab文件中的串口名称与内核中的串口名称一致)。由于我的根文件系统中/etc/inittab中的串口名称为s3c2440_serial0,因此需要修改内核中的串口名称。 1)#vim drivers/serial/samsung.c 2)修改该文件中s3c24xx_uart_drv变量的dev_name成员为s3c2440_serial即可 8。RTC驱动移植。2.6.31.5内核已经完全实现了RTC驱动。因此不需要修改任何代码,只需要在系统开机时能加载RTC驱动即可。 1) 编辑arch/arm/mach-s3c2440/mach-smdk2440.c文件中的smdk2440_devices数组,添加s3c_device_rtc;

嵌入式中busybox启动基本流程

一、BusyBox BusyBox 是标准Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如cat 和echo,还包含了一些更大、更复杂的工具,例如grep、find、mount 以及telnet。有些人将BusyBox 称为Linux 工具里的瑞士军刀.简单的说BusyBox就好像是个大工具箱,它集成压缩了Linux 的许多工具和命令。 嵌入式根目录下的bin、sbin和usr目录以及linuxrc通常就是BusyBox。在构建嵌入式linux的根文件系统的时候,会根据目标平台配置BusyBox源码,编译生成这三个目录和一个文件。根目录下的目录和文件需要自行建立或者从BusyBox的example中拷贝修改。二、嵌入式中的BusyBox的启动流程 脚本执行顺序如下: /sbin/init -> /etc/inittab -> /etc/init.d/rcS 1、在kernel/init/main.c的init函数中有代码 if (execute_command) execve(execute_command,argv_init,envp_init); execve("/sbin/init",argv_init,envp_init); bootloader会给内核的main函数init=/linuxrc 这个参数,于是就有了 execute_command = "/linuxrc",busybox中_install目录下的linuxrc 是busybox的一个软链接,指向/bin/busybox,而/sbin/init也是/bin/busybox的符号链接,因此这个linuxrc基本没什么用处,我们不要这个linuxrc脚本可以直接通过/sbin/init执行busybox的初始化,或者重写linuxrc,添加自己的一些初始化的东西。 2、BusyBox初始化 BusyBox是目标板系统上执行的第一个应用程序。当BusyBox知道调用它的目的是要执行init,它会立即跳转到init进程。BusyBox的init进程依次进行以下工作:1)为init设置信号处理进程。 2)初始化控制台。 3)解析inittab文件(/etc/inittab)。 4)执行系统初始化命令。 5)执行所有阻塞的(会导致init暂停的)inittab命令(动作类型:wait)。 6)执行所有仅执行一次的inittab命令(动作类型:once)。 7)一旦完成以上工作,init进程便会循环执行以下工作: 8)执行所有终止时必须重新启动的inittab命令(动作类型:respawn)。 9)执行所有中止时必须重新启动但启动前必须前询问用户的inittab命令(动作类型:askfirst)。 其中,inittab文件的每一行的格式为:id:runlevel:action:process。process字段用来指定所执行程序的路径,包括命令行选项。action字段用来指定可应用到process的动作。BusyBox init

busybox配置

Busybox Setting配置 Busybox Settings ---> //busybox设置选项 General Configuration ---> //通用设置 /*桌面系统全配置,嵌入式系统不需要*/ [ ] Enable options for full-blown desktop systems [ ] Provide compatible behavior for rare corner cases (bigger code) (NEW) /*兼容SUSv2以后命令*/ [*] Enable obsolete features removed before SUSv3 (NEW) /*如果不适用GCC编译需要选择,用GCC不需要*/ [ ] Avoid using GCC-specific code constructs (NEW) --- Enable Linux-specific applets and features /*缓冲区分配政策(适用malloc分配)*/ Buffer allocation policy (Allocate with Malloc) ---> /*显示简短的帮助信息,如果不想显示,可以节省7K空间*/ [*] Show applet usage messages (NEW) /*显示详细的帮助信息,增加13K*/ [*] Show verbose applet usage messages (NEW) /*运行 —help显示的帮助信息*/ [*] Store applet usage messages in compressed form (NEW) /*支持—install [-s]命令,该选项允许在busybox运行时动态创建链接*/ [*] Support --install [-s] to install applet links at runtime (NEW) /*不使用/usr,当make install时,所有程序安装在/bin和/sbin下,而不安装在/usr/bin 和/usr/sbin下*/ [ ] Don't use /usr (NEW) /*支持系统语言环境,需要系统支持*/ [ ] Enable locale support (system needs locale for this to work) (NEW) /*支持unicode编码*/ [*] Support Unicode (NEW) /*选中当LANG变量值为“XXXX.utf8时生效,否则总是生效”*/ [ ] Check $LANG environment variable (NEW) /*典型值63,表示一切输入输出设备*/ (63) Character code to substitute unprintable characters with (NEW) /*不支持拉丁文*/ (767) Range of supported Unicode characters (NEW) /*如果不选,0长度的unicode字符编码不显示*/ [ ] Allow zero-width Unicode characters on output (NEW) /*如果不选,大于1长度的unicode字符编码不显示*/ [ ] Allow wide Unicode characters on output (NEW) /**/ [ ] Bidirectional character-aware line input (NEW)

浅析如何使用busybox的udhcpc实现开发板ip和dns自动获取

浅析如何使用busybox的udhcpc实现开发板ip和dns自动 获取 浅析如何使用busybox的udhcpc实现开发板ip和dns 自动获取 2010-04-29 15:07 2488人阅读评论(0) 收藏举报 busybox中udhcpc的默认script脚本地址为 #define DEFAULT_SCRIPT CONFIG_UDHCPC_DEFAULT_SCRIPT #define CONFIG_UDHCPC_DEFAULT_SCRIPT "/usr/share/udhcpc/default.script" 我想之所以以它作为默认地址,肯定有他的道理,所以在这个地址上创建它 [luther.gliethttp]luther@gliethttp:/vobs/initramfs$ mkdir usr/share/udhcpc/ -p luther@gliethttp:/vobs/initramfs$ cp ~/busybox-1.14.3/examples/udhcp/simple.script usr/share/udhcpc/default.script luther@gliethttp:/vobs/initramfs$ chmod +x usr/share/udhcpc/default.script 在/etc/inittab中加入下面一行语句:

::once:"/sbin/udhcpc >/dev/null 2>&1" # udhcpc 会退出,所以不能使用respawn,必须为once,1次,否则将一直出现udhcpc重启log信息 就这样简单的几行ip和dns就能自动获取了[luther.gliethttp] 其实有些东西就可以放在rcS等启动脚本中,有些可以到init 脚本中去完成. # /sbin/udhcpc ### adapter index 2 ### adapter hardware address 00:00:00:00:08:36 udhcpc (v1.14.3) started ### vfork'ing and exec'ing /usr/share/udhcpc/default.script ### entering raw listen mode ### opening raw socket on ifindex 2 ### got raw socket fd 5 ### attached filter to raw socket fd 5 ### bound to raw socket fd 5 ### adding option 0x35 ### adding option 0x3d ### adding option 0x3c ### adding option 0x39 Sending discover... ### Waiting on select...

Busybox 的编译过程

今天在家想做个文件系统来跑跑看. 已经编译好了SKYEYE,移植了一个2.6.14的内核,采用的是S3C2410的配置编译的.接合DEMO的initrd,可以跑起来了. 1)下载,解压busybox1.6.1 2)make defconfig 3)make menuconfig 在[build options]中选择[Build busybox as a static binary] 4)make 出现如下错误 CC applets/applets.o applets/applets.c:20:2: warning: #warning Static linking against glibc produces buggy executables applets/applets.c:21:2: warning: #warning (glibc does not cope well with ld --gc-sections). applets/applets.c:22:2: warning: #warning See https://www.360docs.net/doc/5015864291.html,/bugzilla/show_bug.cgi?id=3400 applets/applets.c:23:2: warning: #warning Note that glibc is unsuitable for static linking anyway. applets/applets.c:24:2: warning: #warning If you still want to do it, remove -Wl,--gc-sections applets/applets.c:25:2: warning: #warning from top-level Makefile and remove this warning. applets/applets.c:26:2: #error Aborting compilation. make[1]: *** [applets/applets.o] Error 1 make: *** [applets] Error 2 看来是做为static时不建议用glibc,图省事,不考虑生成文件会大的问题,不打算换uclibc,将applts/applets.c的第19到27行注消 5)make 出现如下错误 CC miscutils/taskset.o 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) make[1]: *** [miscutils/taskset.o] Error 1

相关主题
相关文档
最新文档