-
busybox
简介及使用
:
2006-11-27
作者:
acsbor
来自:
cublog
1,busybox
简介
busybox
< br>是一个集成了一百多个最常用
linux
命令和工具的软
件
,
他甚至还集成了一个
http
p>
服务器和一个
telnet
服务器
,
而所有这一切功能却只有区区
1M
左右的大小
.
我们平时
用
的那些
linux
命令就好比是分立式的电子元件
,
而
busybox
就好比
是一个集成电路
,
把常
用的工具和命令
集成压缩在一个可执行文件里
,
功能基本不变
< br>,
而大小却小很多倍
,
在嵌入式
linux
应用中
,busybox<
/p>
有非常广的应用
,
另外
< br>,
大多数
linux
发行版的安
装程序中都有
busybox
的身影
,
安装
linux
的时候案
ctrl+alt+F2
就能得到一个控制台
,
p>
而这个控制台中
的所有命令都是指向
bus
ybox
的链接
.
Busybox
的小身材大作用的特
性
,
给制作一张软盘的
linux
p>
带来了及大方便
.
2,busybox
的用法
可以这样用
busybox
#busybox ls
他的功能就相当运行
ls
命令
最常用的用法是建立指向
busybox
的链接
p>
,
不同的链接名完成不同的功能
.
#ln -s busybox
ls
#ln -s
busybox rm
#ln
-s busybox mkdir
然后分别运行这三个链接
:
#./ls
#./rm
#./mkdir
就可以分别完成了
ls rm
p>
和
mkdir
命令的功能
< br>.
虽然他们都指向同一个可执行程序
busybox
但是只要链接名不同
,
完成的功能就不同
,busybox
就是这么的神奇
.
<
/p>
很多
linux
网站都提供
busybox
的源代码下载
.
目前版本是
busybox1.0
正式版
< br>.
3,
配置
busybox
busybox
< br>的配置程序和
linux
内核菜单配置方式简直一模一样
.
熟悉用
make
< br>menuconfig
方式配置
linux
内核的朋友很容易上手
.
#cp /babylinux
#cd /babylinux
#tar xvfz
#cd busybox-1.00
#make
menuconfig
下面是需
要编译进
busybox
的功能选项
,
其他的可以根据需要自选
,
但是同样不
要太贪
心
.
General
Configuration
应该选的选项
Show verbose
applet usage messages
Runtime SUID/SGID configuration via
/etc/
Build
Options
Build
BusyBox as a static binary (no shared libs)
这个选项是一定要选择的
,
这样才能把
busybox
< br>编译成静态链接的可执行文件
,
运行时
< br>才独立于其他函数库
.
否则必需要其他库文件才能运行<
/p>
,
在单一个
linux
< br>内核不能使他正常工
作
.
Installation Options
Don't use /usr
这个选项也一定要选
,
否则
make install
后
busybox
将安装在原系统的
< br>/usr
下
,
这将
覆盖掉系统原有的命令
.
选择这个选项后
,make install
后会在
busybo
x
目录下生成一个叫
_install
的目录
,
里面有
busybox
和指向他的链接
.
其他选项都是一些
linux
基本命令选项
,
自己需要哪些命令就编译进去
,
一般用默认的就
可以了
.
配置好后退出并保存
.
4,
编译并安装
busybox
#make
#make install
编译好后在
busybox
目录下生成子目录
_install,
里面的内容
:
drwxr-xr-x 2 root root 4096
11
月
24 15:28 bin
lrwxrwxrwx 1
root root 11 11
月
24 15:28 linuxrc -> bin/busybox
drwxr-xr-x 2
root root 4096 11
月
24 15:28 sbin
<
/p>
其中可执行文件
busybox
在
bin
目录下
,
其他
的都是指向他的符号链接
.
p>
我编译出来的
busybox
可执行文件是
935K,
加上符号链接
,
整个
_install
目录是
952K.
加上
845K
的内核不
是已经超过
1440K
了吗
?
别担心
,
我们将对整个根文件系统做大幅度的<
/p>
压缩
.
busybox
制作
tiny
linux
日期:
2006-11-27
作者:
xoxo
来自:
cublog
我省去了制作启动盘的过程,这个网上可以大把大把的抓!
更多
...
我通过在硬盘上安装
linux
p>
得到
linux
的分区
:
/dev/hda1
/boot
/dev/hda2
/
/dev/hda3
swap
好了,现在开始用
p>
busybox
来制作了。。。
实际操作过程相当简单:
下载好
busybox
的源文件,大家最好到
busybox
的官方网站上
面去下,这样还可以
看到很多文档
:
)
<
/p>
我下载的是
busybox-1.00-rc3
< br>版本,也是它的最新版
tar zxvf
cd busybox-1.00-rc3
make menuconfig
(
这个过程类似编译
linux
内核,
如果你还不会编译内核的话,
那先看看我的
blog
里面
< br>的另一篇文档好了
)
做好自己的选项后,
make dep
make
make install
默认情况下,
busybox
会在当前目录下生成一个
_INSTALL
的
目录,编译后生成的文
件都在这个目录下,一会儿我们也要用这个目录下的文件来制作我
们的
tiny linux
我们先看一看这个目录下的结构
:
/usr
/etc
/....
因为我是在编译好后才写这篇文档的,
所以目录列不全了,
反正这个也不重要,
大家在
尝试中自己观察吧
<
/p>
然后就是替换工作了,关于
busybox
的工作原理大家可以参考
busybox
的资料,网
上一大把一大把的抓!!
主要的操作目录有
etc usr bin sbin
将这几个目录用刚才编译过的目录替换,然后将原
etc
目录下的
passwd passwd-
shadow
shadow-
几个文件放到
bu
sybox
的目录下
(
你得登陆吧,哈
哈,登陆就得用
这几个文件了
)
其实这个时候系统的大小就已经不到
200M
了,
下面是进一步的裁减工作,这个工作主要集中在
lib
目录下
lib
目录的结构:
根目录下是一些常用的
so
库
modules
是
linux
的模块
modules
目录里面还有
EL
结尾的文件夹目录,如果你是多
cpu
的话,有一个<
/p>
smp
结尾的目录,如果你已经编译了内核的话,还有一个
ELcustom
结尾的目录
决定你用那个内核,如你用
smp
的话,那就删掉其他的两个,如果你用自己编译的内
核的话,那就删掉另外的两个,同样的道理
其他在
lib
目录下的
so
文件大家自己决定吧,不过有这样一个问题,如
果你裁减完登
陆时出现
“Login
incorrect
:
User 'unknown'
failed on 'tty2'”
提示的话,很可能就是你
这里面的库删错了,补回来吧。。
裁减过程,除了删除文件外,我觉得还有一个问题,就是完善功能,实现
linux
的常用
功能:如网络,文件系统的
rw
属性等
这个也是我在裁减过程中遇到的问题,
1
,恢复网络功能
网络功能需要这样几个必要的条件:
1)
内核支持
inet4
2)
有网卡驱动
好了,假设上面的都成立,我们开
始给这个
tinylinux
设定网络:
我的网卡是
< br>8139
的所以,我需要的网卡驱动在
/lib/mod
ules/om/kernel/drivers/net/
当然,
pci
的网卡还需要这个东东:
/lib/modules/om/kernel/driv
ers/net/mii.o (
为什么要这个我也说不
清楚,
反正要一定要有,
freebsd
在编
译内核的时候,也是一定要加上
mii
这个东西的,
编
译过
bsd
内核的朋友
一定有印象
)
< br>ok
,还有一个
so
是要加上的
,那就是
/lib/modules/om/kernel/lib/crc32.o<
/p>
,这个东东,是什么作用,高手
来解答吧,我也不清楚,或者大家
去
google
搜索一下好了
总结一下加入网络的步骤:
/sbin/insmod
/lib/modules/om/kernel/lib/crc32.o
/sbin/insmod
/lib/modules/om/kernel/drivers/net/mii.o
/sbin/insmod
/lib/modules/om/kernel/drivers/net/
看到什么了吗?
你的网卡已经起来了。。。不过这样还不可以
在
/et
c/
文件中要增加这样的一句:
alias eth0
8139too
(
为啥呢?我
也不懂,向大家请教,
)
现在应该可以了,控制台里面输入:
ifconfig
eth0 inet 192.168.0.2 netmask
255.255.255.0
结果呢?应该就是大家期望的了。。
还可以添加路由的
:
/sbin/route add
default gw 192.168.0.1
不管别的了,先
ping
一下网关再说:
p>
#ping
192.168.0.1
.........................
登陆到
192
。
168
。
0
。
1
上面去:
192
。
168
。
0
。
1
#
ping
192.168.0.2
。。。。。。。。。。。。。
网络功能基本上没有问题了,我试过
ping 202.102
.88.*
这个外网
ip
的。
2
。文件系统的读写功能。
busybox
< br>的启动过程跟
linux
是不一样的,它在内核启动后,
运行
/etc/init.d/rcS
这
个脚本的,而且只有这一个启动脚本,所以,如果有什么在启动时候运行或初始化的程序,
只能写在这个脚本里了。
<
/p>
在我的观察来看,
linux
启动过程中
,与文件系统
(
我指的是
mount<
/p>
或
umount
这样
的操作
)
相关的操作是有这样的步骤的
:
第一个步骤是内核以
ro (read-only,
p>
只读
)
的形式来
m
ount /
,这个在
grub
。<
/p>
conf(grub
的配置文件,在
/b
oot/grub/
目录下
)
有这样的
描
述:
”kernel /boot/x ro
root=/dev/hdb1“
,看到那个
“ro”
了吗?
第二个步骤是系统在
fsck(
磁盘扫描,<
/p>
检查文件系统上一次关机时是否正常
umount)
,
然后进行
“umount
-
a”
第三个步骤是这样的,在检查完文件系统没有问题后,运行<
/p>
rw /
这样的语句,注意到
“rw”
了吗?就是这个标志,决定我们的
tin
y linux
的文件系统
是否能够写入的,或许你这样考虑,
我直接在
里面把
“ro”
改成
“rw”
不可以吗?
自
己试试就知道了:
)
3
。
login
关于
lo
gin
我不想多说了,关键在于
/lib
里面的库文件,不可多删,当然,为了系统尽
可能的小,也一定不要少删啊。。
多用户登陆的
话,需要更改
/etc/inittab
,详细的参考
busybox
的文档吧
最后总结一下
rcS
这个文件吧:
rcS
:
/bin/fsck
????(
参数自己找找吧,不懂的话看看
t)
/sbin/umount -a
/sbin/mount -a
/sbin/mount -t
ext3 remount rw /
/sbin/insmod
/lib/modules/om/kernel/lib/crc32.o
/sbin/insmod
/lib/modules/om/kernel/drivers/net/mii.o
/sbin/insmod
/lib/modules/om/kernel/drivers/net/
/sbin/ifconfig
eth0 192.168.0.253 netmask 255.255.255.0
/sbin/route
default gw 192.168.0.1
参考资料:
/?sid=4335
/?sid=4395
/?sid=4528
QUOTE:
1. Code maturity level options
代码成熟等级。此处只有一项:
prompt for
development and/or incomplete
code/driv
ers
,如果你要试验现在仍处于实验阶段的功能,比如
kht
tpd
、
IPv6
等,就必
须把该项选择为
Y
了;否则可以把它选择为
N
。
2. Loadable module support
对模块的支持。这里面有三项:
Enable loadable module supp
ort
:除非你准备把所有需要的内容都编译到内核里
面,否则
该项应该是必选的。
Set version information on all module
symbols
:可以不选它。
Kernel module loader
:让内核在启动时有自己装入必需模块的能力,建议选上。
3. Processor
type and features
< br>CPU
类型。内容蛮多的,不一一介绍了,有关的几个如下:
Processor fa
mily
:根据你自己的情况选择
CPU
类型。
High Memory Support
:大容量内存的支持
。
可以支持到
4G
、
< br>64G
,
一般可以不选。
Math emulation<
/p>
:协处理器仿真。协处理器是在
386
时
代的宠儿,现在早已不用了。
MTTR support
:
MTTR
支持。可不选。
Symmetric multi-processing
support
:
对称多处理支持。
除
非你富到有多个
CPU
,
否则就不用选
了。
4. General setup
这里是对最普通的一些属性进行设置。
这部分内容非常多,
一般使用缺省设置就可以了。
下面介绍一
下经常使用的一些选项:
Networking
support
:网络支持。必须,没有网卡也建议你选上。
PCI support
:
PCI
支持。如果使用了
PCI
的卡,当然必选。
PCI access mode
:
PCI
存取模式。可供选择的有
BIO
S
、
Direct
和
< br>Any
,选
Any
吧。
Support
for hot-pluggabel
devices
:热插拔设备支持。支持的不是太好,可不选。
PCMCIA/CardBus
support
:
PCMCIA/CardBus
支持。有
PCMCIA
就必选了。
< br>
System V
IPC
BSD Process
Accounting
Sysctl support
:
以上
三项是有关进程处理
/IPC
调用的,
主要就是
System V
和
BSD<
/p>
两种风格。如果你不是使用
BSD
,就按
照缺省吧。
Power Management
support
:电源管理支持。
Advanced Power Management
BIOS support
:高级电源管理
BIOD
支持。
5. Memory Technology Device(MTD)
MTD
设备支持。可不选。
6. Parallel
port support
串口支持。如果不打算使用串口,就别选了。
7. Plug and
Play configuration
即插即用支持。虽然
Linux
对即插即用目前支持的
不如
Windows
好,但是还是选上
吧,这样你可以拔下鼠标之类的体验一下
Linux
下即插即用
的感觉。
8. Block devices
块设备支持。这个就得针对自己的情况来选了,简单说明一下
吧:
Normal PC floppy disk support
:普通
PC
软盘支持。这个应该必选。
XT hard disk
support
:
Compaq SMART2
support
:
Mulex DAC960/DAC1100 PCI
RAID Controller support
:
RAID
镜像用的。
Loopback device
support
:
Network block device suppor
t
:网络块设备支持。如果想访问网上邻居的东西,就
选上。<
/p>
Logical volume
manager(LVM)support
:逻辑卷管理支持。
Multiple
devices driver
support
:多设备驱动支持。
RAM disk support
:
RAM
盘支持。
9. Networking
options
网络选项。这里
配置的是网络协议。内容太多了,不一一介绍了,自己看吧,如果你对
网络协议有所了解
的话,
应该可以看懂的。
如果懒得看,
使用缺省选项
(
肯定要选中
TCP/I
P
networking
哦
)
就可以了。让我们看看,
TCP/IP
、
p>
ATM
、
IPX
、
DECnet
、
Appletalk…
…
支持的协议好多哦,
IPv6
也支持
了,
Qos and/or fair queueing(
服
务质量公平调度
)
也支
持了,还有
p>
kHTTPd
,不过这些都还在实验阶段。
10. Telephony
Support
电话支持。这个
是什么东东?让我查查帮助,原来是
Linux
下可以支持电话
卡,这样
你就可以在
IP
上使用普通的
电话提供语音服务了。
记住,
电话卡可和
modem
没有任何关
系哦。
11.
ATA/IDE/MFM/RLL support
p>
这个是有关各种接口的硬盘
/
光驱
/
磁带
/
软盘支持的,
内容太多了,
使用缺省的选项吧,
如果
你使用了比较特殊的设备,比如
PCMCIA
等,就到里面自己
找相应的选项吧。
12. SCSI support
SCSI
设备的支持。我没有
SCSI
的设备,所以根本就不用选,如果你用了
SCSI
的硬
盘
/
光驱
/
磁带等设备,自己找好了。
13. IEEE
1394(FireWire)support
这个是什么?低版本的没有见过,
看看帮助再说。
原来是要
Fireware
硬件来提高串行
< br>总线的性能,我没有,不选了。
14. I2O device support
这个也不清楚,帮助里说是这个需
要
I2O
接口适配器才能支持的,在智能
Input/Output(I2O)
体系接口中使用,又是要硬件,不选了。
15.
Network device support
网络设备支持。上面选好协议了,现在该选设备了,可想而知,内容肯定多得很。还好
还好,里面大概分类了,有
ARCnet
设备、
Ethernet(10 or 100 Mbit)
、
Ethernet(1000Mbit)
、
W
ireless LAN(non-
hamradio)
、
Token Ring
device
、
Wan
interfaces
、
PCMCIA
network device support
几大类。我用的是
10/100M
的以太网,
看来只需要选则这个了。
还是
10/100M
的以太网设备熟悉,
p>
内容虽然多,
一眼就可以看到
我所用的
p>
RealTeck RTL-8139 PCI Fast Ethernet
Adapter support
,为了免得麻烦,
编译到内核
里面好了,不选
M
了,选
Y
。耐心点,一般说来你都能找到自己用的网卡。如
果没有,你只好自己到厂
商那里去要驱动了。
16. Amateur Radio support
又一个不懂的,应该是配置业余无线广播的吧,没有,不要了。
17.
IrDA(infrared)support
这个要红外支持,免了。
18. ISDN subsystem
如果你使用
ISDN
上网,这个就必不可少了。自己看着办好了。
19. Old CD-ROM
drivers(not SCSI
、
not IDE)
做的可真周到,原来那些非
SCSI/IDE
口的光驱谁还在用啊,自己选吧,反正我是用
的
IDE
的
CD-
ROM
,不选这个。
20. Character devices
字符设备。
这个内容又太多了,
先使用缺省设置,需要的话自己就修改。把大类介绍一
下吧:
I2C support
:
I2C
p>
是
Philips
极力推动的微控制应用中
使用的低速串行总线协议。如
果你要选择下面的
Video
For Linux
,该项必选。
Mice
:鼠标。现在可以支持总线
、串口、
PS/2
、
C&T
82C710 mouse port
、
PC110
digitizer
pad
,自己根据需要选择。
Joysticks
:手柄。即使在
Linux
下把手柄驱动起来意义也不是太大,游戏太少了。<
/p>
Watchdog Cards
:虽然称为
Cards
,这个可以用纯软件来实现,当然也有硬件的。
如果你把这个选中,
那么就会在你的
/dev
< br>下创建一个名为
watchdog
的文件,
它可以记录
你的系统的运行情况,一直到系统重新启动的
1
分钟左右。有了这个文件,你就可以恢复
系统到重启前的
状态了。
Video For Linux
:支持有关的音频
/
视频卡。
Ftape, the floppy tape
device driver
:
PCMCIA character device
support
:
21. File systems
文件系统。内容又太多了,老法子
,在缺省选项的基础上进行修改。介绍以下几项:
Quota support
:
p>
Quota
可以限制每个用户可以使用的硬盘空间的上限,在多用户
共
同使用一台主机的情况中十分有效。
DOS FAT fs
support
:
DOS FAT
文件
格式的支持,可以支持
FAT16
、
F
AT32
。
ISO 9660 CD-ROM file system
support
:光盘使用的就是
ISO
9660
的文件格式。
NTFS file system support
:
ntfs
是
NT<
/p>
使用的文件格式。
/proc file system support
p>
:
/proc
文件系统是
< br>Linux
提供给用户和系统进行交互的
通道,建议选上
,否则有些功能没法正确执行。
还有另外三个大类都规到这儿了:
Network File
Systems(
网络文件系统
)
、<
/p>
Partition
Types(
分区
类型
)
、
Native
Language Support(
本地语言支持
)
。值得一提的是
Network
File S
ystems
里面的两种:
NFS
和<
/p>
SMB
分别是
Linux
和
Windows
相互以网络邻居的形
式访问对方所使用的文件系统,根据需要加以选择。
22. Console drivers
控制台驱动。一般使用
VGA text console
p>
就可以了,标准的
80*25
的文本控制台
。
23. Sound
声卡驱动。如果你能在列表中找到声卡驱动那自然最好,否则就试试
OSS
了。
24. USB supprot
USB
支持。很多
USB
设备,比如鼠标、调制解调器、打印机、扫描仪等,在
Linux
都可以得到支持,根据需要自行选择。
25. Kernel hacking
配置了这个,
即使在系统崩溃时,
你也可以进行一定的工作了。
普通用户
是用不着这个
功能的。
对了,
你还是把
“
我省去了制作启动盘的过程,
这个网上可以大把大把的抓
!
”
也加上的
好,这样更有利于其他人
的学习
制作启动盘的过成实际上是在一个空空的硬盘或软盘上加上启动信息的过程
,
针对
linux
或
uni
x
来讲
,
也就是增加
< br>lilo
启动信息的过程
,
从而
使得我们转移到本硬盘的内核能够
启动
,
进一步能够执行
linux
其他的一些必要的系统初始程序<
/p>
...
启
动盘的制作过程可以搜索关键字
:
制作软盘
linux
或
-
-
-
-
-
-
-
-
-
上一篇:2020年地理中考试题及参考答案
下一篇:颜色对照表