busybox的init初始化进程

转自: http://www.itqun.net/content-detail/237959.html


busybox的init

   除了基本的命令之外,BusyBox还支持init功能,如同其它的init一样,busybox的init也是完成系统的初始化工作,关机前的工作等等,我们知道在LINUX的内核被载入之后,机器就把控制权转交给内核,linux的内核启动之后,做了一些工作,然后找到根文件系统里面的init程序,并执行它,BusyBox的init进程会依次进行以下工作:(参考> p201)
1.       为init设置信号处理过程
2.       初始化控制台
3.       剖析/etc/inittab文件
4.       执行系统初始化命令行,缺省情况下会使用/etc/init.d/rcS
5.       执行所有导致init暂停的inittab命令(动作类型:wait)
6.       执行所有仅执行一次的inittab(动作类型:once)
一旦完成以上工作,init进程便会循环执行以下进程:
       1.  执行所有终止时必须重新启动的inittab命令(动作类型:once)
       2.  执行所有终止时必须重新启动但启动前必须询问用户的inittab命令(动作类型:askfirst)
       初始化控制台之后,BusyBox会检查/etc/inittab文件是否存在,如果此文件不存在,BusyBox会使用缺省的inittab配置,它主要为系统重引导,系统挂起以及init重启动设置缺省的动作,此外它还会为四个虚拟控制台(tty1到tty4)设置启动shell的动作。如果未建立这些设备文件,BusyBox会报错。
       inittab文件中每一行的格式如下所示:(busybox的根目录下的example文件夹下有详尽的inittab文件范例)      
       id:runlevel:action:process
尽管此格式与传统的Sytem V init类似,但是,id在BusyBox的init中具有不同的意义。对BusyBox而言,id用来指定启动进程的控制tty。如果所启动的进程并不是可以交互的shell,例如BusyBox的sh(ash),应该会有个控制tty,如果控制tty不存在,Busybox的sh会报错。BusyBox将会完全忽略runlevel字段,所以空着它就行了,你也许会问既然没用保留着它干吗,我想大概是为了和传统的Sytem V init保持一致的格式吧。process字段用来指定所执行程式的路径,包括命令行选项。action字段用来指定下面表中8个可应用到process的动作之一。
动作
结果
sysinit
为init提供初始化命令行的路径
respawn
每当相应的进程终止执行便会重新启动
askfirst
类似respawn,不过它的主要用途是减少系统上执行的终端应用程序的数量。它将会促使init在控制台上显示“Please press Enter to active this console”的信息,并在重新启动之前等待用户按下enter键
wait
告诉init必须等到相应的进程完成之后才能继续执行
once
仅执行相应的进程一次,而且不会等待它完成
ctratldel
当按下Ctrl+Alt+Delete组合键时,执行相应的进程
shutdown
当系统关机时,执行相应的进程
restart
当init重新启动时,执行相应的进程,通常此处所执行的进程就是init本身

以下是我的usblinux的inittab文件
::sysinit:/etc/init.d/rcS
::respawn:/sbin/get

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Buildroot 相对于 BusyBox 最显著的自动化构建特点是它提供了一套完整的自动化构建系统,可以自动化地构建整个嵌入式 Linux 系统,包括内核、文件系统、库和应用程序等。它可以通过配置文件自动化地生成整个目标系统,而不需要开发人员手动编写 Makefile 或脚本等繁琐的构建过程。 举例来说,如果我们需要构建一个带有 BusyBox 的嵌入式 Linux 系统,我们需要手动编写 Makefile 或脚本来构建 BusyBox,然后再将 BusyBox 与内核、文件系统、库和应用程序等组合在一起,这需要开发人员花费大量时间和精力。 而使用 Buildroot,我们只需要在配置文件中指定需要构建的组件和所需的配置选项,然后运行构建命令即可自动化地构建整个系统。Buildroot 可以自动下载和安装所需的软件包、编译内核和应用程序、生成文件系统和镜像等。这使得构建整个嵌入式 Linux 系统变得更加简单、快速和可靠。 ### 回答2: Buildroot是一个流行的自动化构建系统,用于从源代码构建嵌入式Linux系统。相较于BusyBox,Buildroot的自动化构建特点主要表现在以下几个方面: 1. 配置菜单:Buildroot提供了一个配置菜单界面,可以通过该界面选择需要构建的软件包、库和功能,以及调整配置选项。通过菜单界面,用户可以方便地自定义构建树中的各个组件,而不需要手动编辑配置文件。 2. 自动依赖管理:Buildroot通过解析软件包的依赖关系,自动管理和解决构建过程中的依赖问题。用户只需要选择需要的软件包和功能,Buildroot会自动处理依赖关系并进行构建。 3. 自动下载和解压:Buildroot可以自动从指定的源地址下载软件包,并自动解压缩到指定的位置。用户只需要在配置文件中指定软件包的URL和相关信息,Buildroot会自动完成下载和解压的过程。 举例来说,如果用户想要在嵌入式Linux系统中添加一个网络文件系统(NFS)功能,使用Buildroot进行自动化构建的步骤如下: 1. 打开Buildroot的配置菜单界面,找到网络相关的软件包选项。 2. 在菜单界面中选择NFS软件包,并启用该功能。 3. Buildroot会自动解析NFS软件包的依赖关系,并下载和安装所需的依赖软件包,例如RPCBIND等。 4. Buildroot会自动下载NFS软件包的源码,并将其解压到指定的目录中。 5. 根据用户的配置选项,Buildroot会自动进行编译、构建和安装NFS功能模块以及相关的工具和库。 通过上述自动化的步骤,用户无需手动配置和编译NFS功能模块,Buildroot会完成所有的构建过程。这样,用户可以轻松地扩展和自定义嵌入式Linux系统,提高了开发效率和便捷性。 ### 回答3: Buildroot是一个用于嵌入式系统的工具链,可以自动化构建嵌入式Linux系统。它包括了许多组件,例如交叉编译工具链、根文件系统以及内核映像。 相比之下,Busybox是一个集成了许多基本工具的软件包,可以在嵌入式系统中执行多个常用命令。Busybox可以通过手动配置和编译来集成到系统中,但这个过程相对繁琐,需要手动选择需要的工具及其对应的配置选项。 而Buildroot具有自动化构建的特点,它提供了一个配置文件(.config),通过这个配置文件可以轻松地自动选择和配置需要的组件,而无需手动一个个选取。举例来说,我们在配置Buildroot时可以通过简单地编辑.config文件,指定我们需要的工具及其相关选项。例如,可以通过设置配置文件中的选项来决定是否添加网络工具、文件系统类型、驱动支持等。 此外,Buildroot还提供了预配置的目标(target)供选择,这些目标包括了一系列预先配置好的选项,如支持不同的硬件平台、处理器架构等。用户可以选择适合自己的目标,然后通过Buildroot进行自动构建,从而生成定制化的嵌入式Linux系统。 总而言之,相对于Busybox,Buildroot具有自动化构建的特点,通过编辑配置文件来选择所需组件及其选项,并提供目标供选择,以便用户快速而准确地定制嵌入式Linux系统。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值