linux busybox启动脚本顺序,详解Busybox及如何安装的过程

一、Busybox简介

BusyBox 是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小。BusyBox 包含了一些简单的工具,比如:我们平时用的那些linux命令就好比是分立式的电子元件,而busybox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍,例如ls、 cat 和 echo等等,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及telnet。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android 系统自带的shell。BusyBox 将许多具有共性的小版本的UNIX工具结合到一个单一的可执行文件。这样的集合可以替代大部分常用工具比如:GNU 等工具,BusyBox提供了一个比较完善的环境,可以适用于任何小的或嵌入式系统。在嵌入式linux应用中,busybox有非常广的应用,另外,大多数linux发行版的安装程序中都有busybox的身影,安装linux的时候案ctrl+alt+F2可以切换物理终端,而这个物理终端中的所有命令都是指向busybox的链接.Busybox虽小,但作用确是惊人的,这样就可以基于Busybox制作一张软盘linux。

二、Busybox的用法

最常用的用法是建立指向busybox的链接,不同的链接名完成不同的功能.

#ln -s busybox ls

#ln -s busybox rm

#ln -s busybox mkdir

然后分别运行这三个链接:

#./ls

#./rm

#./mkdir

就可以分别完成了ls rm 和mkdir命令的功能.虽然他们都指向同一个可执行程序busybox

但是只要链接名不同,完成的功能就不同,busybox就是这么的神奇.

三、Busybox安装

1、 这是在红帽5.8的版本上做的,系统上没有ext3的文件系统,因此Busybox要提供ext3系统文件,当然这对于强大的Busybox来说是非常简单的,但是Busybox中没有bash,要想使用直接把它移植过来就可以使用了,还有一点需要注意:Busybox中的init不支持运行级别,要想使用需借助于移植系统自带的init就可以了。

2、 安装前的准备工作

先挂载一个红帽5.8的盘,mount /dev/cdrom /mnt/,接着配置yum库

cd /etc/yum.repos.d/

vim server.repo

5dbf785dc658addad57b072a0972ca9c.png

安装这两个包"Development Tools" "Development Libraries"其中第一个一般都已经装过了,只需要装第二个就可以了:Development Libraries

ed77b12cfebeb7c5e41829d8f87717c8.png

3、 新建分区和目录,并挂载

3.1、创建分区

712c684966082f9486c40f5297c5d938.png

3.2、创建目录mkdir /mnt/{sysroot,boot}

503484823d6d3f6dd18b904b9fe5fd70.png

3.3、格式化并挂载

mke2fs -j /dev/hda1

mke2fs -j /dev/hda2

mount /dev/hda1 /mnt/boot/

mount /dev/hda2 /mnt/sysroot/

9d19171210698114f391bbb62f3ffe57.png

成功挂载

4、 编译内核,这里使用的是2.6.38.5内核版本

把linux-2.6.38.5.tar.bz2解压到/usr/src/目录下:

76da191f0eeeb35505d989b7f017d219.png

配置内核提供./config文件(这里提供了一个样本,名称是kernel-2.6.38.1-i686.cfg)直接将此样本重命名为./config,我们就以它为蓝本来做修改

cd /usr/src/linux

mv kernel-2.6.38.1-i686.cfg ./config

824f840134830b51fe7585e492a4db47.png

5、 make menuconfig:根据自己的需要对驱动,文件系统及网络做选择性的配置,其中我在配置的时候直接把ext3做成了内核模块

如修改版本号

fff64b03e14da3623b532c008898fa34.png

注意要把PCnet32编译成内核模块

4c7c9e14ac19e35910dcf34d880b704d.png

其他的选项可以根据自己的需求改一下就可以了,这里不做演示了

6、 开始我们的编译之旅

6.1、编译

make SUBDIR=arch/

当编译完成后,提供微型系统新内核 (编译需要一段时间,这里的顺序只是为了方便阅读,自己操作时,可先做下面的步骤,等到编译完成后再进行复制内核)

6.2、提供内核

cp /usr/src/linux/arch/x86/boot/bzImage /mnt/boot/vmlinuz

6.3、安装grub:

grub-install --root-directory=/mnt/ /dev/had

c8b3cce11b7363d2c14906b85bc971b2.png

6.4、编辑配置grub.conf

vim /mnt/boot/grub/grub.conf

7cd4660485c70b14b5571f5dc3116505.png

7、提供initrd

7.1、编译前准备操作,这里我们用的是Busybox-1.20.2的版本

d12eb53dfd1feaf237ba65c78194acc5.png

71745b3e6bd85cd2c310aee1a1466d23.png

7.2、编译busybox

2df8f272c8112ff68c79cd51e801c4a1.png

进入Busybox的菜单选项中进行选择自己所需要的东西即可,在这里不需要更改太多,把编译选项改一下即可,编译成一个二进制文件,方便移植。过程如下

4c8b79824c2c5b8beddfb0899a98f742.png

eb4b01125333302adea2e573fb84af89.png

4c25e517e5bc383b8ef7a8ba098ca8be.png

7.3、编译安装(编译的东西自动保存在了_install目录下)

dbc45d2340529bef94f6ac22ab6bf0f8.png

删除自动为我们创建的链接文件

17faf75661ca8e28886c25d295a65c49.png

自行创建一个目录,把_install文件复制到这里,一切配置在这里更改

3651b7f1deeda58ffa25887e8015c27e.png

创建设备文件(5和3是主设备号,1是次设备号)

369f0ad56725c6a6c23f67166e76dfd2.png

7.4、创建init脚本,此脚本完成的任务:

1、挂载proc文件系统,proc文件系统是用来输出内核映像的

2、挂载sys文件系统(输出硬件信息)

3、导入内核模块,导入ext3内核模块,否则无法访问真正的文件系统(这里的/dev/hda2格式化为了ext3,如果是格式化成ext2就不要安装这个模块)

vim /tmp/initrd/init

20b8ee99017564328683ba946cdeaa0e.png

给脚本执行权限:chmod +x init

归档压缩生成initrd文件

c885280a562464bb282041851b11034c.png

8、/mnt/sysroot目录下的文件准备(即根文件的准备)

8.1、复制busybox-1.20.2_install目录下的所有文件,把这些文件当做真正的根

cp busybox-1.20.2/_install/* /mnt/sysroot/ -a

8.2、创建所需的目录(在/mnt/sysboot目录下)

mkdir boot root etc/rc.d/init.d var/{log,lock,run} proc sys dev lib/modules tmp home mnt media usr/lib –pv

8.3、创建设备文件

99c356f153bdf47f86ed5a5cbbc04956.png

8.4、编辑inittab配置文件

vim /mnt/sysroot/etc/inittab

ade0b159eb2a222926159e14d98e5c31.png

8.5、编辑rc.sysinit文件

vim /mnt/sysroot/etc/rc.d/rc.sysinit

319020bcfb2a640fad7be90fa70f95b1.png

chmod +x /mnt/sysroot/etc/rc.d/rc.sysinit #给一个执行权限

8.6、编辑配置/mnt/sysroot/etc/fstab

43fb0f587576522f7e22ce0d33675870.png

sync #多同步几次

到此基本的微linux就完成了,注意/tmp/initrd/init 脚本中使用的是bash,而Busybox不支持这样shell,此时该如何实现bash的使用呐?下面我们就来演示一下Busybox的扩展功能

四、Busybox的扩展功能:

1、 使用bash命令

这里首先需要复制一下bash命令即可,复制相关命令的脚本内容如下:

vim bincp.sh

#!/bin/bash

#

dest=/mnt/sysroot

libcp() {

libpath=${1%/*}

[ ! -d $dest$libpath ] && mkdir -p $dest$libpath

[ ! -e $dest${1} ] && cp $1 $dest$libpath && echo " copy lib $1 finished"

}

bincp() {

cmdpath=${1%/*}

[ ! -d $dest$cmdpath ] && mkdir -p $dest$cmdpath

[ ! -e $dest${1} ] && cp $1 $dest$cmdpath

for lib in `ldd $1 | grep -o "/.*lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`; do

libcp $lib

done

}

read -p " your command:" cmd

until [ $cmd = 'q' ]; do

! which $cmd && echo "wrong command" && read -p "input again:" cmd && continue

command=`which $cmd | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"`

bincp $command

echo "copy $command finished."

read -p "continue:" cmd

done

给脚本一个执行权限:chmod +x bincp.sh

2a723ca8501af368b7e555b578b70275.png

怎么样这个脚本好用吧!

更改inittab配置文件

vim /mnt/sysroot/etc/inittab

8d61ded9e9e0447f719dce99d0542eec.png

到这里bash就能够启动成功了

2、 实现用户登陆功能

2.1、首先要提供终端即编辑inittab文件内容,直接修改成以下即可

7de36c60750568ad313569686ed121e9.png

2.2、建立账号(我们可以直接复制本机的root账号的相关信息)

60c26a16bd5f6d387972a560f71dd843.png

现在我们就可以使用用户来登陆了

3、 添加一个主机名

vim /mnt/sysroot/etc/hostname 自行创建一个hostname文件,添加一行代码即可;如下:

HOSTNAME=MyBusyboxlinux

而加载HOSTNAME这变量需要编辑rc.sysinit脚本文件

vim /mnt/sysroot/etc/rc.d/rc.sysinit 添加一下代码即可:

f33d91b0754b2a9680686d8473a23ad6.png

4、提供用户登陆界面的显示信息

vim mnt/sysroot/etc/issue

My Busybox Linux

Kernel \r on an \m

5、为微型系统提供IP地址

首先复制网卡模块

cp /usr/src/linux/drivers/net/pcnet32.ko /mnt/sysroot/lib/modules/

然后设置开机装载网卡驱动

vim /mnt/sysroot/etc/rc.d/rc.sysinit 编辑这个配置文件添加以下代码

echo "load ethernet card modules.."

insmod /lib/modules/pcnet32.ko

到这里微型小系统的IP地址就能成功添加了

这就是Busybox的制作过程,你会了吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值