4 Busybox-1.16.1文件系统
根文件系统制作记录
根文件系统制作记录一、所用工具Busybox-1.16.1arm-linux-gcc-4.3.2二、制作过程1.编译/安装Busybox1.1下载Busybox及其补丁从/ 下载busybox-1.16.1.tar.bz2及该版本的所有补丁。
补丁文件复制到/work/create_rootfs/busybox-1.16.1-patch目录下。
使用如下命令将busybox-1.16.1.tar.bz2解压到busybox-1.16.1目录$ tar xjf busybox-1.16.1.tar.bz21.2给Busybox打上补丁可以手工逐一给Busybox打补丁,也可以编写脚本自动帮我们完成打补丁的工作,这里采用后面一种方法。
$ gedit /work/create_rootfs/patch.sh$ cd /work/create_rootfs$ sudo chmod +x ./patch.sh$ ./patch.sh若最后输出“Patching all file is finish!”则表示所有补丁都正确的打上了。
1.3配置Busybox若忘记设定交叉编译器和目标板体系结构,则可能在内核启动末期出现下面的错误:在Busybox目录下执行如下命令进入配置界面:$ make menuconfig请使用以下的配置(红色部分表示与Busybox默认配置不同而需要修改的,其他的则需确认):(1)Busybox Settings--->General Configuration--->[*] Show verbose applet usage messages[*] Store applet usage messages in compressed form[*] Support –install [-s] to install applet links at runtime[*] Enable locale support(system needs locale for this to work)[*] Support for –long-options[*] Use the devpts filesystem for unix98 PTYs[*] Support writing pidfiles[*] Runtime SUID/SGID configuration via /etc/busybox.config[*] Suppress warning message if /etc/busybox.conf is not readableBuild Options--->[*] Build BusyBox as a static binary(no shared libs)[*] Build with Large File Support(for accessing files>2GB)Installation Options->[]Don’t use /usrApplets links (as soft-links) --->(./_install) BusyBox installation prefixBusybox Library Tuning --->(6)Minimum password legth(2)MD5:Trade Bytes for Speed[*]Fsater /proc scanning code(+100bytes)[*]Command line editing(1024)Maximum length of input[*] vi-style line editing commands(15) History size[*] History saving[*] Tab completion[*]Fancy shell prompts(4) Copy buffer size ,in kilobytes[*]Use ioctl names rather than hex values in error messages[*]Support infiniband HW(2)Linux Module Utilities--->(/lib/modules)Default directory containing modules(modules.dep)Default name of modules.dep增加对mdev的支持:(3)Linux System Utilities --->[*]Support /etc/mdev.conf[*]Support command execution at device addition/removal1.4安装Busybox将Busybox安装到/work/create_rootfs/rootfs目录下,Busybox将在该目录下创建如下几个文件和目录:2.构建根文件系统2.1创建根文件系统下必要的目录为了创建根文件系统下的其他目录与文件,我们可以采用手工敲命令创建的方式,也可以编写脚本自动完成,这里采用后一种方式。
用busybox做一个简单的文件系统
用busyb ox做一个简单的文件系统利用Busy Box做一个简单的根文件系统1、下载Busy Box源代码包 http://busybo /2、找个地方解压缩包,例如tar-xjvf busybo x-1.00.tar.bz23、进入busy box的文件夹,使用make menuco nfig进入设置[attach]244[/attach]4、在build option s中有一些选项要注意BuildBusyBo x as a static binary(no shared libs):如果选择了这个选项,那么Busy Box 将被静态编译,也就是不需要动态链接库的支持就能运行,但是这样会使编译后文件的体积增大。
Do you want to buildBusyBo x with a CrossCompil er:如果你的bu sybox将要运行机器与编译主机的体系结构不同,比如s3c2410是A RM,与我们的X86主机芯片系统结构不一样,那么这个一定要选上,并且在 CrossCompil er prefix中写上交叉编译器的名字,比如ARM用arm-linux-[attach]245[/attach]5、在Insta llati on Option s中 BusyBo x instal latio n prefix就是在编译完后运行m ake instal l 时,busybo x将被安装的地址。
[attach]246[/attach]6、其它的选项按照默认选项就行,当然自己也可以看看有没有需要,把其它一些命令加入到编译选项中来7、完成后保存,然后运行ma ke8、编译没有问题后运行ma ke instal l这样编译好的bus ybox就会自动安装到Busy Box instal latio n prefix中,一般是三个文件夹bin sbin usr和一个文件lin uxrc。
busybox制作根文件系统
用Busybox制作嵌入式Linux的文件系统1 busybox简介BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。
有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。
简单的说BusyBox就好像是个大工具箱(只有一个可执行程序busybox,其他命令都是指向该可执行程序的连接),它集成压缩了 Linux 的许多工具和命令。
BusyBox 将许多具有共性的小版本的UNIX工具结合到一个单一的可执行文件。
2编译busybox :#make3安装busybox:#make install执行 make install后,会生成一个_install文件夹。
进入_install目录,可以看到一共有3个目录和一个文件,分别是:bin、sbin和usr目录以及linuxrc文件。
这三个目录有很多快捷方式,都是指向了/bin/ busybox。
这就是busybox的特点,即可执行程序只有一个,其他的都是link。
●bin目录包含用户工具,其中,busybox可执行文件就在这个目录下。
●sbin目录包含操作系统工具,同样也指向busybox。
●linuxrc是一个链接文件,指向busybox。
4 其他目录首先,我们创建一个rootfs的目录,把_install目录下的内容复制过来。
此时,rootfs目录中包含3个目录和一个文件,分别是:bin、sbin和usr目录以及linuxrc文件。
但是,仅仅有上述目录还不足以构成一个可用的文件系统,必须还要手工加一些其他的目录及配置文件、启动脚本等。
下面是几个必须有的目录|___ etc / 配置文件|___ dev / 设备节点目录|___ lib / 库|___ modules / 驱动下面是最好有的几个目录|___ proc /|___ sys /|___ var /|___ tmp /|___ root /|___ opt /|___ mnt /4.1 创建etc目录下的文件etc目录里添加配置文件,是最主要的工作。
busybox制作根文件系统
使用Busybox制作CRAMFS文件系统成功来源: ChinaUnix博客日期:2008.08.20 16:16(共有条评论) 我要评论这几天在使用Busybox制作FS2410开发板的CRAMFS文件系统,由于开始下载的是Busybox1.10,每次下载到开发板中,然后启动总是出现”Failed to execute /linuxrc.Attempting defaults...“的错误。
到网上查了大量的资料,并做了大量的实验,发现都不能成功。
今天下午突然发现一个能够仿真arm的软件qemu,在Ubuntu中的安装方法:sudo apt-get install qemu,Busybox编译后,可以通过arm仿真来测试:qemu-arm ./busybox ls,如果成功,则会显示当前目录下的文件列表。
我对Busybox1.10编译后的结果进行测试,发现出现错误:qemu: unhandled CPU exception 0x8 - abortingR00=001c596c R01=00000000 R02=001c5960 R03=00000001R04=000cbf94 R05=00000000 R06=00000000 R07=00000000R08=000cbfdc R09=000cbf94 R10=00000000 R11=00000000R12=ffff0fff R13=b7d6c470 R14=000d4588 R15=ffff0fa0PSR=20000010 --C- A usr32 ffff0fa0s00=00000000( 0) s01=00000000( 0) d00=0000000000000000( 0)s02=00000000( 0) s03=00000000( 0) d01=0000000000000000( 0)s04=00000000( 0) s05=00000000( 0) d02=0000000000000000( 0)s06=00000000( 0) s07=00000000( 0) d03=0000000000000000( 0)s08=00000000( 0) s09=00000000( 0) d04=0000000000000000( 0)s10=00000000( 0) s11=00000000( 0) d05=0000000000000000( 0)s12=00000000( 0) s13=00000000( 0) d06=0000000000000000( 0)s14=00000000( 0) s15=00000000( 0) d07=0000000000000000( 0)s16=00000000( 0) s17=00000000( 0) d08=0000000000000000( 0)s18=00000000( 0) s19=00000000( 0) d09=0000000000000000( 0)s20=00000000( 0) s21=00000000( 0) d10=0000000000000000( 0)s22=00000000( 0) s23=00000000( 0) d11=0000000000000000( 0)s24=00000000( 0) s25=00000000( 0) d12=0000000000000000( 0)s26=00000000( 0) s27=00000000( 0) d13=0000000000000000( 0)s28=00000000( 0) s29=00000000( 0) d14=0000000000000000( 0)s30=00000000( 0) s31=00000000( 0) d15=0000000000000000( 0)FPSCR: 00000000qemu: uncaught target signal 6 (Aborted) - exiting说明,所编译得到的busybox不能使用在arm处理器,由于时间关系就放弃了使用Buxybox1.10版本。
busybox用法
busybox用法【原创版】目录1.Busybox 简介2.Busybox 的基本用法3.Busybox 的高级用法4.Busybox 的常见问题正文【Busybox 简介】Busybox 是一款功能强大的 Linux 工具箱,它包含了大量的常用工具,如 cp、mv、rm 等。
Busybox 在嵌入式系统、Linux 系统中都有着广泛的应用。
它不仅可以在命令行中使用,还可以通过脚本调用,为用户提供了极大的便利。
【Busybox 的基本用法】Busybox 的基本用法非常简单,只需在命令行中输入“busybox”并回车,即可进入 Busybox 界面。
在 Busybox 中,用户可以通过上下箭头选择需要的工具,然后按空格键执行。
这些工具的用法和 Linux 系统中的命令行工具用法基本一致,用户可以轻松上手。
【Busybox 的高级用法】除了基本的命令行工具外,Busybox 还提供了一些高级功能。
例如,用户可以通过“busybox --install”命令安装 Busybox 到系统中,方便在系统中使用。
此外,Busybox 还支持通过脚本调用,用户只需在脚本中输入“busybox”和所需工具,即可调用 Busybox 中的工具。
【Busybox 的常见问题】一些用户在使用 Busybox 时可能会遇到一些问题,如无法正常进入Busybox 界面、工具无法正常使用等。
这些问题一般是由于系统配置不当或 Busybox 版本过低引起的。
用户可以通过检查系统配置、升级 Busybox 版本等方式解决这些问题。
总的来说,Busybox 是一款非常实用的工具箱,它不仅功能强大,而且使用简单。
用busybox搭建最简单的Linux文件系统
再执行如下挃令即可:
1. source ~/.bashrc 复制代码
第三步:填充文件系统内容 将上一步_install 目彔下 bin,sbin 目彔全部复制到文件系统目彔 rootfs_x4412, 注意在 bin 和 sbin 目彔下有很多都是软链接,复制时千万丌要丢失了文件属性:
1. make 2. make install 复制代码
这时在 busybox 根目彔会生成_install 目彔,里面存放着 bin,sbin,usr 三个目 彔以及 linuxrc 文件。这些文件构成了 busybox 癿各种挃令集。
前面我们提到,将 busybox 编译成静态文件后,丌再依赖共享库。迚入 busybox 癿根目彔,使用如下挃令查看 busybox 依赖癿共享库:
这里将 proc 和 sysfs 文件系统分别挂载到 proc 和 sys 目彔。 proc 文件系统是一个伪文件系统,它只存在内存当中,而 丌占用外存空间。它以 文件系统癿方式为访问系统内核数据癿操作提供接口。用户和应用程序可以通过 proc 得到系统癿信息,幵可以改变内核癿某些参数。由于 系统癿信息,如迚程, 是劢态改变癿,所以用户戒应用程序读取 proc 文件时,proc 文件系统是劢态从系统 内核读出所需信息幵提交癿。 sysfs 把连接在系统上癿设备和总线组织成为一个分级癿文件,它们可以被从用户 癿空间存取到。这是被设计用来处理那些以前驻留在 /proc/ 癿设备和驱劢程序挃 定癿选件以及用来处理那些以前由 devfs 提供支持癿劢态加载设备。注意一定要修 改 linuxrc 文件癿属性为 777,否则会提示 failedto execute /linuxrc 癿错诨。
busybox怎么用
BusyBox 怎么用BusyBox 是一个开源的工具集,用于提供精简的 Unix 工具集合,适用于嵌入式系统或资源受限的环境。
它的目标是用尽可能小的空间安装尽可能多的常用工具,以便在嵌入式系统中提供更强大的命令行功能。
本文将介绍 BusyBox 的使用方法和常见命令示例。
安装 BusyBox在大多数 Linux 发行版中,BusyBox 通常是预装的。
如果你的系统中没有安装BusyBox,可以通过以下方法进行安装:方法一:使用包管理器许多 Linux 发行版都提供了 BusyBox 的包,可以使用包管理器进行安装。
以Ubuntu 为例,可以通过以下命令安装 BusyBox:sudo apt updatesudo apt install busybox方法二:手动编译安装如果没有适用于你的发行版的包,你可以手动编译安装 BusyBox。
请按照以下步骤进行操作:1.下载 BusyBox 源代码包,并解压到一个目录中。
2.在终端进入 BusyBox 目录,执行以下命令进行配置:make defconfig这将生成默认的配置文件。
3.可选:如果你想自定义 BusyBox 的配置,你可以运行以下命令以进行高级配置:make menuconfig在配置界面中选择你需要的选项,然后保存并退出。
4.执行以下命令进行编译和安装:makemake install这将编译 BusyBox,并将可执行文件复制到/bin目录中。
使用 BusyBox安装完成后,你可以在终端中使用 BusyBox 提供的各种命令。
BusyBox 的语法和普通的 Unix 命令相似,但一些操作可能有所不同。
下面是一些常见的 BusyBox 命令示例:ls命令ls命令用于列出当前目录中的文件和文件夹。
使用 BusyBox 的ls命令示例:busybox ls该命令将显示当前目录中的文件和文件夹的列表。
mkdir命令mkdir命令用于创建新的文件夹。
busybox 详解(一篇讲busybox很详细的文章)
BusyBox 简化嵌入式Linux 系统BusyBox 最初是由Bruce Perens 在1996 年为Debian GNU/Linux 安装盘编写的。
其目标是在一张软盘上创建一个可引导的GNU/Linux 系统,这可以用作安装盘和急救盘。
一张软盘可以保存大约1.4-1.7MB 的内容,因此这里没有多少空间留给Linux 内核以及相关的用户应用程序使用。
BusyBox 揭露了这样一个事实:很多标准Linux 工具都可以共享很多共同的元素。
例如,很多基于文件的工具(比如grep 和find)都需要在目录中搜索文件的代码。
当这些工具被合并到一个可执行程序中时,它们就可以共享这些相同的元素,这样可以产生更小的可执行程序。
实际上,BusyBox 可以将大约3.5MB 的工具包装成大约200KB 大小。
这就为可引导的磁盘和使用Linux 的嵌入式设备提供了更多功能。
我们可以对2.4 和 2.6 版本的Linux 内核使用BusyBox。
BusyBox 源代码树BusyBox 的源代码树组织得很好。
这些工具都基于它们的用途进行了分类,并存储在单独的子目录中。
例如,网络工具和守护进程(如httpd、ifconfig 等)都在./networking 目录中;标准的模块工具(包括insmod、rmmod 和lsmod)都在./modutils 目录中;编辑器(例如vi 和流编辑器,如awk 和sed)都在./editors 目录中。
makefile 配置、编译和安装所使用的各个文档都在这个目录树的根目录中。
多体系结构支持可以简单地为BusyBox 指定交叉编译器意味着我们可以为很多体系结构编译BusyBox。
要为您的目标体系结构编译BusyBox,我们需要一个交叉编译器和一个已经为特定目标体系结构编译好的C 库(uClibc 或glibc)。
BusyBox 是如何工作的?为了让一个可执行程序看起来就像是很多可执行程序一样,BusyBox 为传递给 C 的main 函数的参数开发了一个很少使用的特性。
busybox文件系统的启动顺序
busybox文件系统的启动顺序 默认初始化文件是:/sbin/init,如果要从/linuxrc 脚本运行的话需要在内核传递参数里设置init=/linuxrc (不使用该模式,忽略)如果不采用linuxrc 的话就会执行/sbin/init 脚本,它会去分析/etc/inittab 脚本:(linux inittab详解:/u3/103494/showart_2033153.html)1) /sbin/init -> /etc/inittab#id: runlevels: action :process id:: sysinit: /etc/init.d/rcS:: respawn: -/bin/shconsole:: askfirst: -/bin/sh:: ctrlaltdel: /bin/umount -a -r2)/sbin/init -> /etc/inittab -> /etc/init.d/rcS#!/bin/shecho "===================== /etc/init.d/rcS ================"echo "export system param...."export PATH=/sbin:/bin:export HOSTNAME=micro2440echo "init ip address....."/sbin/ifconfig eth0 192.168.254.177echo "Mount all filesystems (of the given types) mentioned in fstab."mount -a3) mount -a 含义为把fstab文件定义的文件系统都做mount处理,fatab:# device mount-point type options dump fsck orderproc /proc proc defaults 0 0tmpfs /tmp tmpfs defaults 0 0sysfs /sys sysfs defaults 0 04)/sbin/init -> /etc/inittab -> /etc/profile# /etc/profile: system-wide .profile file for the Bourne shellsecho "========================= /etc/profile ==========="PATH=/bin:/sbin:/usr/bin:/usr/sbinUSER="`id -un`"LOGNAME=$USERHOSTNAME=`/bin/hostname`##也许,busybox 1.14.3 是ash,PS1设置不支持PS1=‘[\u@\h \W]\#’格式;PS1=‘[$USER@$HOSTNAME $PWD]#’export PATH USER LOGNAME HOSTNAME PS1 。
使用Busybox制作根文件系统
使用Busybox制作根文件系统1、BusyBox简介BusyBox 是很多标准 Linux 工具的一个单个可执行实现。
BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet;有些人将 BusyBox 称为 Linux 工具里的“瑞士军刀”。
BusyBox 揭露了这样一个事实:很多标准 Linux 工具都可以共享很多共同的元素。
例如,很多基于文件的工具(比如 grep 和 find)都需要在目录中搜索文件的代码。
当这些工具被合并到一个可执行程序中时,它们就可以共享这些相同的元素,这样可以产生更小的可执行程序。
实际上,BusyBox 可以将大约 3.5MB 的工具包装成大约 200KB 大小。
这就为可引导的磁盘和使用 Linux 的嵌入式设备提供了更多功能。
我们可以对 2.4 和 2.6 版本的 Linux 内核使用 BusyBox。
我们平时用的那些Linux命令就好比是分立式的电子元件,而BusyBox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍,在嵌入式linux应用中,BusyBox有非常广的应用。
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就是这么的神奇。
3、配置编译BusyBox下载首先需要下载BusyBox源代码。
通过busybox制作根文件系统详细过程
通过busybox制作根⽂件系统详细过程我在之前的中也有实现过根⽂件系统的制作,那只是在ubuntu官⽹已经做好的根⽂件基础上安装⼀些⾃⼰所需的软解⽽已。
⽽使⽤busybox 制作根⽂件系统可以⾃定义选项,加深⾃⼰对linux的系统理解,⽅便后期学习根⽂件系统的裁剪。
⼀、下载busybox制作制作⼯具⼆、编译链配置将下载的⽂件放⼊linux开发环境中进⾏解压,⽬录如下图所⽰为了以后使⽤⽅便,修改交叉⼯具链,进⼊“Makefile”⽂件sudo vim Makefile进⼊⽂件后修改“ARCH”和“CROSS_COMPILE”变量,如下图所⽰:注意:交叉编译链⼀定要是⾃⼰安装的全路径三、busybox中⽂⽀持1.修改“printable_string.c”⽂件sudo vim libbb/printable_string.c进⼊⽂件后修改内容如下图所⽰:2.修改“unicode.c”⽂件sudo vim libbb/unicode.c进⼊⽂件后修改内容如下图所⽰:四、配置busybox1.设置配置项defconfig:缺项配置,也就是默认配置选项。
allyesconfig:全选配置,也就是说选中busybox的所有功能。
allnoconfig:最⼩配置。
可以根据⾃⼰需要选择配置命令,这⾥我选⽤的是最下配置命令如下sudo make defconfig配置完成后可通过查看是否有.config⽂件,如果存在则说明配置成功,如下图所⽰:2.进⼊图形配置sudo make menuconfig进⼊图形配置界⾯后,配置库⽂件来源,配置路径如下所⽰-> Settings-> Build static binary使⽤静态库时,编译出来的⽂件很⼤,然后编译出来的DNS会出问题,所以我这⾥选⽤的是动态库,配置如下图所⽰:勾选“vi-style line editing commands”,配置路径如下-> Settings-> vi-style line editing commands取消“Simplified modutils”的勾选,配置路径如下-> Linux Module Utilities-> Simplified modutils勾选“mdev”,配置路径如下-> Linux System Utilities-> mdev如下图所⽰:勾选“Support Unicode”及其⼦选项“Check $LC_ALL, $LC_CTYPE and $LANG environment variables”-> Settings-> Support Unicode-> Check $LC_ALL, $LC_CTYPE and $LANG environment variables到此busybox的配置基本完成,如果需要其他配置项的内容可根据⾃⼰的需求选择。
busybox用法
busybox用法Busybox是一个精简的Linux工具集,它集成了许多常用的Unix命令和工具,适用于嵌入式设备和资源有限的系统。
本文将介绍Busybox的用法,以帮助用户更好地使用这个工具集。
1. Busybox安装与配置Busybox通常被用作嵌入式设备的基础工具集,它可以帮助开发者节省系统空间和资源。
安装Busybox可以通过源代码编译或使用预编译的二进制文件。
在安装过程中,用户可以选择需要的命令和工具,以及相应的配置选项来满足自己的需求。
2. Busybox常用命令Busybox集成了许多常用的Unix命令和工具,涵盖了文件操作、系统管理、网络通信等多个领域。
以下是一些常用的Busybox命令:- `ls`: 列出目录或文件的内容。
- `cd`: 切换当前工作目录。
- `mkdir`: 创建新的目录。
- `rm`: 删除目录或文件。
- `cp`: 复制目录或文件。
- `mv`: 移动目录或文件。
- `grep`: 在文件中查找匹配的文本。
- `cat`: 查看文件的内容。
- `ifconfig`: 配置网络接口。
- `ping`: 测试网络连接。
- `top`: 监视系统进程和资源占用。
- `kill`: 终止正在运行的进程。
3. Busybox的扩展功能虽然Busybox已经提供了许多常用的命令和工具,但有时候仍然需要更多的功能。
对于这种情况,Busybox还支持模块化扩展,用户可以选择性地添加额外的功能模块。
这些功能模块可以通过Busybox的配置文件进行设置和编译,以满足特定的需求。
4. Busybox的使用案例Busybox的应用非常广泛,特别适用于资源有限的嵌入式系统。
一些常见的Busybox使用案例包括以下几个方面:- 嵌入式设备的基础命令工具集。
- Linux发行版的文件系统工具。
- Docker等容器技术的核心组件。
总结:以上是关于Busybox用法的简要介绍。
Busybox是一个非常实用的工具集,可以帮助用户进行文件操作、系统管理和网络通信等各种任务。
busybox用法
busybox用法(最新版)目录1.概述 Busybox2.Busybox 的基本用法3.Busybox 的高级用法4.Busybox 的常见问题与解答正文【概述 Busybox】Busybox 是一款 Linux 工具箱,它包含了许多常用的 Linux 命令和工具。
Busybox 通常用于嵌入式系统或者 Linux 系统中,为用户提供了一个强大的命令行环境。
Busybox 的优点在于它体积小、功能强大,且可定制性强。
【Busybox 的基本用法】1.安装 Busybox在嵌入式系统或者 Linux 系统中,可以通过包管理器或者源代码编译的方式安装 Busybox。
安装完成后,在命令行中输入“busybox”即可进入 Busybox 界面。
2.浏览 Busybox 的目录结构在 Busybox 中,可以使用“cd”命令切换目录,使用“ls”命令查看目录内容。
Busybox 的目录结构类似于 Linux 系统,包括/bin、/sbin、/etc、/usr 等常用目录。
3.执行命令“mkdir”“pwd”、在 Busybox 中,可以使用常见的 Linux 命令,如“ls”、等。
还可以通过“busybox <command>”的方式执行特定的命令,例如“busybox cat”用于查看文件内容。
【Busybox 的高级用法】1.组合命令在 Busybox 中,可以通过组合多个命令实现复杂的操作。
例如,可以使用“ls | grep <pattern>”的方式筛选出符合条件的文件。
2.管道命令Busybox 支持管道命令,可以将一个命令的输出作为另一个命令的输入。
例如,可以使用“cat <file> | busybox more”的方式分屏查看文件内容。
3.重定向命令Busybox 支持命令重定向,可以将命令的输入或输出重定向到文件或其他命令。
例如,可以使用“cat <file> > <output_file”将文件内容复制到输出文件。
busybox linuxrc 参数
busybox linuxrc 参数Busybox是一个开源工具集,它提供了用于管理嵌入式Linux系统的各种实用工具。
其中的一个工具是linuxrc,它是一个初始化脚本,负责在Linux系统启动过程中进行一些必要的初始化操作。
linuxrc脚本可以接受一些参数,这些参数可以用来自定义系统的启动行为。
下面是一些常用的busybox linuxrc参数及其功能:1. root:这个参数用来指定系统的根文件系统所在的设备。
例如,可以使用root=/dev/sda1来指定根文件系统在第一个SATA硬盘上的第一个分区。
2. init:这个参数用来指定系统的init程序的路径。
init程序是Linux系统中的第一个进程,它负责启动所有其他进程。
可以使用init=/sbin/init来指定系统的init 程序路径。
3. console:这个参数用来指定系统的控制台设备。
控制台设备是用户与系统进行交互的主要终端。
可以使用console=/dev/ttyS0来指定系统的串口控制台设备。
4. ip:这个参数用来指定系统的IP地址。
可以使用ip=192.168.0.100来指定系统的IP地址为192.168.0.100。
5. netmask:这个参数用来指定系统的子网掩码。
子网掩码用于划分网络中的主机和网络地址。
可以使用netmask=255.255.255.0来指定系统的子网掩码为255.255.255.0。
通过在linuxrc脚本中设置这些参数,可以在系统启动时自定义文件系统、设备和网络配置。
这对于嵌入式系统开发人员来说非常有用,可以根据实际需求来定制系统的启动行为,提高系统的灵活性和适应性。
Busybox的linuxrc参数提供了一种简单而有效的方式来配置嵌入式Linux系统的启动过程。
[实践]busybox1.16.1建立文件系统
[实践]busybox1.16.1建立文件系统[实践]busybox1.16.1建立文件系统(未完成)#1建立根文件系统目录#!/bin/shecho “——Create rootfs_new directons start…”mkdir rootfs_newcd rootfs_newecho “——Create root,dev…”mkdir bin sbin lib dev etc mnt usrmkdir root home sys proc bootmkdir tmp vartouch linuxrcmkdir etc/init.d etc/rc.d etc/sysconfigmkdir usr/bin usr/sbin usr/lib usr/modulesmkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp mkdir var/lib var/lock var/log var/run var/tmpchmod 1777 tmpchmod 1777 var/tmpecho “——Create dir done…”#2创建设备文件echo “——Make node in dev…”mknod -m 600 mem c 1 1mknod -m 600 dev/console c 5 1mknod -m 600 dev/null c 1 3mknod -m 644 dev/random c 1 8mknod -m 644 dev/urandom c 1 9mknod -m 660 dev/mtd0 c 90 0mknod -m 660 dev/mtd1 c 90 2mknod -m 660 dev/mtd2 c 90 4mknod -m 660 dev/mtd3 c 90 6mknod -m 660 dev/mtdblock0 b 31 0mknod -m 660 dev/mtdblock1 b 31 1mknod -m 660 dev/mtdblock2 b 31 2mknod -m 660 dev/mtdblock3 b 31 3mknod -m 660 dev/ttySAC0 c 204 64mknod -m 666 dev/tty c 5 0mknod -m 600 dev/tty0 c 4 0mknod -m 600 dev/tty1 c 4 1mknod -m 600 dev/tty2 c 4 2mknod -m 600 dev/tty3 c 4 3mknod -m 600 dev/ttyS0 c 4 64mknod -m 600 dev/ttyS1 c 4 65mknod -m 600 dev/ttyS2 c 4 66mknod -m 600 dev/ttyS3 c 4 67mknod -m 600 dev/ttyUSB0 c 188 0mknod -m 600 dev/ttyUSB1 c 188 1mknod -m 600 dev/ttyUSB2 c 188 2mknod -m 600 dev/ttyUSB3 c 188 3mknod -m 600 dev/ppp c 108 0echo “——Make node done…”echo “——Cp lib…”#3建立动态链接库cp /usr/local/arm/3.4.1/arm-linux/lib/*.so* ./lib -d echo “——Cp lib done”4、交叉编译BosyboxA.修改Makefile交叉器vim MakefileCROSS_COMPILE =arm-linux- //第164 行ARCH =arm //第189行B.修改交叉编译器路径make menuconfigBusybox Settings —>Build Options —>修改[*] Build BusyBox as a static binary (no shared libs)修改Cross Compiler prefix为/usr/local/arm/3.4.1/bin/arm-linux-C.修改安装地址make TARGET_ARCH=arm PREFIX=/source/tmp1/rootfs_new/错误1:miscutils/flash_eraseall.c:14:26: mtd/mtd-user.h: No such file or directoryfind / -name “mtd-user.h”/opt/linuxcore/linux-2.6.33.3/include/mtd/mtd-user.h/usr/include/mtd/mtd-user.h/usr/src/linux-headers-2.6.32-21/include/mtd/mtd-user.h原因:找不到mtd-user.h解决:cp /usr/include/mtd/ ./include/mtd/ -a错误2:miscutils/inotifyd.c:31:25: sys/inotify.h: No such file or directoryfind / -name “inotify.h”/opt/linuxcore/linux-2.6.33.3/include/config/inotify.h/opt/linuxcore/linux-2.6.33.3/include/linux/inotify.h/opt/linuxcore/linux-2.6.33.3/fs/notify/inotify/inotify.h/usr/include/linux/inotify.h/usr/include/sys/inotify.h/usr/src/linux-headers-2.6.32-21/include/linux/inotify.h/usr/src/linux-headers-2.6.32-21-generic/include/config/inotify.h/usr/src/linux-headers-2.6.32-21-generic/include/linux/inotify.h原因:据说是busybox中ionice的bug解决:Miscellaneous Utilities->关闭ionice关闭inotifyd关闭taskset错误3:networking/interface.c:818: error: `ARPHRD_INFINIBAND’ undeclared here (not in a function)修改networking/interface.cvim networking/interface.c添加define ARPHRD_INFINIBAND 32 /* InfiniBand */错误4:util-linux/acpid.c: In function `acpid_main’:util-linux/acpid.c:146: error: `EV_SW’ undeclared (first use in this function)util-linux/acpid.c:146: error: (Each undeclared identifier is reported only onceutil-linux/acpid.c:146: error: for each function it appears in.) util-lin ux/acpid.c:147: error: `SW_LID’ undeclared (first use in this function)原因:可能input.h太陈旧,没有EV_SW的定义解决:cp /opt/linuxcore/linux-2.6.33.3/include/linux/ ./include/ -a5.在Linux内核中把module安装到文件系统目录,[疑问:是否是必须的?]make modules_installINSTALL_MOD_PATH=/source/tmp1/rootfs_new/5、建立etc目录下的配置文件A/etc/inittab #重要#指定初始化文件::sysinit:/etc/init.d/rcS#启动时执行的shell::respawn:/bin/shttyS0::askfirst:-/bin/sh#重启时动作::restart:/sbin/init::ctrlaltdel:/sbin/reboot#关机时动作,卸载所有文件系统::shutdown:/bin/umount -a –rB/etc/init.d/rcS #重要C/etc/fstab #重要proc /proc proc defaults 1 1none /dev/pts devpts gid=5,mode=620 0 0proc /proc proc defaults 0 0none /tmp ramfs defaults 0 0mdev /dev ramfs defaults 0 0sysfs /sys sysfs defaults 0 0D/etc/profile #重要#例子1#!/bin/shecho “profile processing”export LD_LIBRARY_PATH=/lib:/usr/libHOSTNAME=’bin/hostname’export HOSTNAMEPATH=/bin:/sbin:/usr/bin:/usr/sbinexport PATH#例子2# Set search library path# 这条语句设置动态库的搜索路径,极其重要echo “Set search library path int /etc/profile”export LD_LIBRARY_PATH=/lib:/usr/lib# Set user pathecho “Set user path in /etc/profile”PATH=/bin:/sbin:/usr/bin:/usr/sbinexport PATH6、制作根文件系统映像文件参考资料:<<制作嵌入式根文件系统常见问题详解>>使用Busybox制作Cramfs根文件系统.pdf天嵌Linux移植.pdf。
如何用busybox构建一个最小根文件系统
用busybox构建一个最小根文件系统busybox是所有命令的集合体,是一个工具集,包括了我们常用的工具。
一、一个最小根文件系统包括:(1) /dev/console/dev/null(2) init => busybox(3) /etc/inittab(4) 配置文件指定的应用程序(5) C库二、执行步骤:(一)配置编译busybox(1)下载源码:busybox-1.7.0.tar.bz2a.创建一个文件firstfs,将该文件保存其中b.解压cd firstfstar xjf busybox-1.7.0.tar.bz2执行上述命令后,解压出来busybox-1.7.0文件夹,c.配置在busybox-1.7.0目录下执行“make menuconfig”命令即可进入配置界面。
一般选择默认配置就行,现添加一个TAB补全功能:Busybox Settings------>Busybox Library Turning------>[*]Tab completion用“+/-”选好选项,输入y ,然后按tab选exit(2)编译busyboxa.修改busybox目录下的Makefile执行命令:vi Makefile ,然后输入“/CROSS”找到(“+/-”选择行)CROSS_COMPILE ?=arm-linux-输入“:wq”保存退出b.执行“make”命令编译busybox编译完成,出现如下界面:(3)安装busybox在交叉编译环境,千万不要直接执行make install,这样会破坏我们的操系统。
创建一个新文件夹first_fsmake CONFIG_PREFIX=first_fs install就会在这个文件夹下面生成bin,sbin,usr,linuxrc四个文件目录。
(二) 创建设备文件:/dev/console 和/dev/null(查看ls /dev/console /dev/null –l)mkdir devcd dev/sudo mknod console c 5 1 (创建终端字符设备主为5 次为1)sudo mknod null c 1 3(可以查看:ls –l)(三) 创建配置文件/etc/inittab (最简单基本的配置文件:标准输入、输出和错误信息定义到console)init进程根据/etc/inittab文件来创建其他子进程,etc目录下的内容取决与要运行的程序,本次只需要创建3个文件:etc/inittab, etc/init.d/rcS, etc/fstab。
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、从/下载busybox-1.7.0.tar.bz22、tar xjvf busybox-1.7.0.tar.bz2解包3、修改Makefile文件175 ARCH ?= arm176 CROSS_COMPILE ?= arm-linux-4、make menuconfig配置busyboxbusybox配置主要分两部分。
第一部分是Busybox Settings,主要编译和安装busybox的一些选项。
这里主要需要配置:1)、Build Options -- Build BusyBox as a static binary (no shared libs),表示编译busybox时,是否静态链接C库。
移植busybox构建最小根文件系统的步骤详解
移植busybox构建最⼩根⽂件系统的步骤详解Busybox:瑞⼠军⼑,⾥⾯装有很多⼩命令。
STEP 1:构建⽬录结构创建根⽂件系统⽬录,主要包括以下⽬录/dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin /sbin /sys#mkdir /home/rootfs#cd /home/rootfs#mkdir dev etc lib usr var proc tmp home root mnt sysSTEP 2: 使⽤busybox构建/bin /sbin linuxrc进⼊busybox-1.16.1⽬录,执⾏#make defconfig#make menuconfigBusybox Setting ----->Build Options ----->//1选择将busybox进⾏静态编译[*]Build BusyBox as a static binary (no shared libs)//2.指定交叉编译器为(/usr/local/arm/4.3.2/bin/arm-linux-)Cross Compiler prefixInstallation Options -----> (选择⽣成的⽂件存放⽬录,也可以直接放在rootfs下就不⽤拷贝了)//3.选择上 Don't use /usrBusybox Library Tuning--->[*]Username completion[*]Fancy shell prompts[*]Query cursor position from terminal//4.编译出的busybox的shell命令解释器⽀持显⽰当前路径及主机信息保存退出#make #make install在busybox⽬录下会看见 _install⽬录,⾥⾯有/bin /sbin linuxrc三个⽂件将这三个⽬录或⽂件拷到第⼀步所建的rootfs⽂件夹下。
BUSYBOX命令行使用
BUSYBOX命令行使用BusyBox是一个开源项目,它是一个集成了一系列Unix工具和命令的单个可执行文件。
作为一个独立的小型工具箱,BusyBox具有轻巧、高效的特点,可以运行在各种嵌入式设备和嵌入式操作系统上。
BusyBox的设计使得它可以被用作Linux系统的系统工具。
BusyBox的命令行使用方式与传统的Unix系统类似,它支持大部分常用的命令和选项,并且有一些特殊的命令和选项可以用来操作和配置BusyBox本身。
下面将介绍一些常用的BusyBox命令。
1. cd命令:用于改变当前工作目录。
如`cd /usr/bin`将当前目录切换到/usr/bin目录。
2. ls命令:用于列出当前目录下的文件和子目录。
如`ls -l`将以长格式显示文件和目录列表。
3. cp命令:用于拷贝文件或目录。
如`cp file1.txt file2.txt`将文件file1.txt拷贝到file2.txt。
4. mv命令:用于移动或重命名文件或目录。
如`mv file1.txtfile2.txt`将文件file1.txt重命名为file2.txt。
5. rm命令:用于删除文件或目录。
如`rm file.txt`将删除名为file.txt的文件。
6. mkdir命令:用于创建新目录。
如`mkdir dir1`将在当前目录下创建名为dir1的目录。
7. rmdir命令:用于删除空目录。
如`rmdir dir1`将删除名为dir1的目录。
8. cat命令:用于连接文件并输出到标准输出。
如`cat file1.txt file2.txt`将文件file1.txt和file2.txt的内容输出到屏幕上。
9. touch命令:用于创建或更新文件的访问时间和修改时间。
如`touch file.txt`将创建一个名为file.txt的空文件。
10. find命令:用于在文件系统中查找文件或目录。
如`find /usr-name "*.txt"`将在/usr目录及其子目录中所有以.txt结尾的文件。
busybox原理
busybox原理
BusyBox是一个开源的软件工具集,它包含了许多精简的Unix工具和命令,可以运行在嵌入式系统或者小型的Linux
发行版上。
BusyBox的原理主要包括以下几个方面:
1. 单一可执行文件:BusyBox将许多常用的Unix工具和命令整合在一个单一的可执行文件中,通过使用命令行参数的方式来选择具体要执行的工具或命令。
这样做可以节省存储空间和系统资源,并且简化软件包的管理和部署。
2. 软链接和命令别名:为了提供更好的用户体验和兼容性,BusyBox会创建许多软链接来模拟传统Unix系统中的命令和工具。
例如,可以创建名为"ls"的软链接,指向BusyBox可执行文件,当用户输入"ls"命令时,实际上是执行了BusyBox中的相应功能。
3. 模块化设计:BusyBox通过使用模块化的设计,允许用户根据需要选择要包含在BusyBox中的特定工具和命令,以适应不同的应用场景和需求。
这种设计使得BusyBox能够在各种不同的系统和平台上运行,并提供了灵活性和可定制性。
4. 嵌入式系统支持:BusyBox被广泛应用于嵌入式系统,它可以在资源受限的环境中运行,并且具有很高的兼容性。
BusyBox的设计目标之一是尽可能减小可执行文件的大小和内存占用,以满足嵌入式系统对资源的限制。
同时,BusyBox还提供了一些特定于嵌入式系统的功能,如交叉编译支持和针对特定硬件平台的优化。
总之,BusyBox是一个将许多Unix工具和命令整合在一个单一可执行文件中的开源工具集,通过模块化设计和软链接实现对特定工具和命令的选择和模拟,适用于嵌入式系统和小型Linux发行版。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux 2.6.30内核开发
目录
实验内容: (1)
实验目的: (1)
实验材料: (1)
实验工具: (1)
实验步骤 (2)
1.准备工作 (2)
具体步骤: (2)
2.配置常用命令 (2)
具体步骤: (2)
3.编译文件系统 (3)
具体步骤: (3)
4.制作文件系统 (4)
具体步骤: (4)
5.移植 (5)
实验内容:
•基于Linux 2.6的文件系统制作
实验目的:
•掌握TQ2440开发板使用
•掌握Linux文件系统制作,理解Linux服务加载过程
实验材料:
•Busybox-1.16.1.tar.gz
实验工具:
•Linux操作系统
•arm交叉编译套件 (arm-2007)
实验步骤
1.准备工作
具体步骤:
创建文件系统的路径(假定为/home/briup/fs)
确认自己当前工作目录
%> pwd
/home/briup
创建/home/briup/fs目录
%> mkdir /home/briup/fs
解压缩busybox-1.16.1.tar.gz开发包
%> tar -zxvf ../busybox-1.16.1.tar.gz
进入解压后软件所在目录
%> cd busybox-1.16.1
通过环境变量配置使用的交叉编译器
%> export PATH=/opt/arm-2007/usr/bin:$PATH
使用which确认能够找到交叉编译器(显示出arm-linux-gcc的绝对 路径即为正确)%>which arm-linux-gcc
2.配置常用命令
具体步骤:
启动配置界面
%>make menuconfig
设置交叉编译器(Busybox Settings ---> Build Options ---> Cross Compile Prefix),填入arm-linux-
其他根据需要自行选择
退出配置界面
3.编译文件系统
具体步骤:
删除不必要的中间文件
%>make clean
编译文件系统
%>make
安装文件系统(在当前目录下形成一个_install的目录即为正确)
%>make install
安装完成,即在_install目录下形成4个文件或文件夹bin, sbin, usr, linuxrc
4.制作文件系统
具体步骤:
进入安装以后的目录
%> cd _install
确认目录正确
%> pwd
/home/briup/fs/busybox-1.16.1/_install
创建Linux文件系统必须的目录
%>mkdir etc etc/init.d dev proc mnt tmp sys root lib proc/sys/kernel root/bin 添加动态库和加载器
%>cp -af /opt/arm-2007/arm/lib/libc* lib/
%>cp -af /opt/arm-2007/arm/lib/libm* lib/
%>cp -af /opt/arm-2007/arm/lib/ld-* lib/
创建初始化配置文件
%> vi etc/inittab
输入如下内容
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
创建内核加载的文件系统
%> vi etc/fstab
输入如下内容
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
创建启动的脚本
%> vi etc/init.d/rcS
输入如下内容:
#!/bin/sh
mount -a
echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s
设置执行权限
%>chmod +x etc/init.d/rcS
创建全局环境变量文件
%> vi etc/profile
输入如下内容
#!/bin/sh
PS1="briup> "
PATH=/root/bin:$PATH
export PS1 PATH
加入用户程序(例如mp3播放器文件)到root/bin目录下%>cp /home/briup/madplayer/bin/madplay root/bin 以下步骤以超级用户身份执行
构建设备文件
#> mknod dev/console c 5 1
#> mknod dev/null c 1 3
切换到上一级目录
#> cd ..
将_install目录做成yaffs2的镜像文件
#> mkyaffs2image _install rootfs.image
5.移植
将rootfs.image烧录到开发板上运行。