移植Busybox

1.由前面内核启动流程可知,内核启动的最后一步就是启动init进程,代码在init/main.c中,如下:

 

(1)打开标准输入、标准输出、标准错误设备。

756行尝试打开/dev/console设备文件,如果成功,它就是init进程标准输入设备。

759760将文件描述符0复制给文件描述符1、2,所以标准输入、标准输出、标准错误都对应一个文件。



Busybox init进程的启动过程

。。。

编译/安装Busybox

从网上下载busybox-1.7.0.tar.bz2

使用命令tar xjf busybox-1.7.0.tar.bz2解压

Busybox集合了几百个命令,在一般系统中并不需要全部使用。可以通过配置Busybox来选择这个命令、定制某些命令的功能、指定Busybox的连接方法、指定Busybox的安装路径。

2.配置Busybox

busybox目录下执行”make menuconfig”命令即可进入配置界面。如下:




此处使用默认配置,直接退出即可。

下面讲一些选项,供参考。Busybox的配置过程大多是选择、去除各种命令。

1)设置“TAB”键补全功能。


2)连接/编译选项

 

3)选择tar命令

 

4)Linux Module Utilities选项

 

5)Linux System Utilities选项

 

5)Networking Utilities选项

 

设置完成后,就可以编译和安装Busybox了。

2.编译和安装Busybox




接下来先安装glibc库,再继续构建根文件系统

Glibc库的位置是/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib

库里面的目录、文件可以分为8类:



接下来安装glibc库,假设要构建的根文件系统目录为/work/nfs_roo/fs_mini。执行下面:


把库文件拷贝到/work/nfs_roo/fs_mini里,完成。

上面介绍了如何安装Busyboxglibc库,建立了bin/sbin/usr/bin/usr/sbinlib/等目录,最小根文件系统的大部分目录、文件已经建好。下面介绍剩下的部分,假设开发板的根文件系统在主机上的目录为/work/nfs_root/fs_mini。

1.构建etc目录

init进程根据/etc/inittab文件来创建其他子进程,比如调用脚本文件配置IP地址、挂接其他文件系统,最后启动shell等。

etc目录下的内容取决于要运行的程序,本节只需要创建3个文件:etc/inittab、etc/init.d/rcS、etc/fstab。

1)创建etc/inittab文件


2)创建etc/init.d/rcS文件


3)创建etc/fstab文件


2.构建dev目录

1)静态创建设备文件(由开发者事先创建好,不是内核自动创建的)


2)使用mdev创建设备文件


3.创建其他目录


现在,/work/nfs_root/fs_mini目录下就是一个非常小的根文件系统。开发板可以将它作为网络文件系统直接启动。

如果要烧入开发板,还需要将它制作为一个映像文件。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【ql君】qlexcel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值