BusyBox Init

嵌入式系统内核启动后的第一个程序就是init,一般位于/sbin/init(一般是符号链接到/bin/busybox), 但有些也会直接放在根目录下如linuxrc,busybox的init不支持多级别启动(multiple runlevels),init也就是1号进程。

Init启动流程:

1、为init程序设置信号处理

2、初始化控制台console,它会首先读取kernel的启动参数,如果没有指定console,它会尝                     试/dev/consloe

3、解析inittab文件 /etc/inittab

4、运行系统初始化脚本 /etc/init.d/rcS

5、运行所有inittab下action为wait的任务

6、运行所有inittab(只运行一次)下action为one的任务

执行完这些任务后,init程序会循环启动下列任务:

1、运行所有inittab下action为respawn的任务

2、运行所有inittab下action为askfirst的任务

3、等待子进程退出

/etc/inittab文件格式:

id:runlevel:action:process

Id表示从哪个console启动,对busybox无意义

runlevel,启动级别,忽略字段

action是非常重要的一个字段,有8个:

Sysinit  提供初始化脚本路径

Respawn  重启退出的子进程

Askfirst  询问用户,像“Please press Enter to activate this console.”

Wait  告诉init在继续运行前先等待子进程完成

Once  只执行一次,且不等待进程结束

CtrlAtlDel   按下组合键后执行的程序

Shutdown  关闭系统后执行的程序

Restart   当init重启后需要重启的程序

::sysinit:/etc/init.d/rcS S boot

::shutdown:/etc/init.d/rcS K shutdown

ttyS1::askfirst:/bin/ash --login

时间: 2024-07-31 20:57:12

BusyBox Init的相关文章

BusyBox init工作流程

linux启动完成后,运行由Busybox产生的init进程. init代码在BusyBox中init/init.c中,主要进行以下工作: >为init进程设置信号处理进程. >对控制台进行初始化. >解析inittab文件即/etc/inittab. >若无/etc/inittab,采用默认的inittab,运行初始化脚本/etc/init.d/rcS. >运行inittab中其他命令. -------------------------------------------

Linux根文件系统分析之init和busybox

Hi,大家好!我是CrazyCatJack.今天给大家讲解Linux根文件系统的init进程和busybox的配置及编译. 先简单介绍一下,作为一个嵌入式系统,要想在硬件上正常使用的话.它的软件组成大概有这三部分:1)bootloader  2)嵌入式系统kernel  3)根文件系统 .这其实非常好理解,类比于PC上的操作系统,首先我们需要类似BIOS的东东,来控制系统的启动项,决定从哪里启动,怎样启动,启动什么.在嵌入式系统里bootloader就起着这样的作用.再者,我们需要一个已经配置.

构建根文件系统之init进程分析

busybox是ls.cp等命令的集合. 执行ls时,实际上是执行了busybox ls 执行cp时,实际上是执行了busybox cp 分析init程序之前,再让我们回想一下我们的目标:u-boot启动内核,内核启动应用程序,内核是怎样启动应用程序呢,内核启动了init进程,位于/sbin/init中.我们最终的目的是启动客户程序,也就是说假如你是做手机的,希望启动一个手机的程序,假如是做监控的,那么就启动一个监控的程序的.客户各有不同,但都使用了linux系统,那么怎样加以区分呢? init

Linux busybox mount -a fstab

/*********************************************************************** * Linux busybox mount -a fstab * 声明: * 本文主要是为了验证mount -a命令涉及的fstab文件中提到的设备节点不存 * 在的情况下,是否还能正常的挂载(设备已经被内核识别了,只是没有经过mdev * 那一步),没有找到有文章提到这一点,于是自己验证一下想法. * * 2016-1-15 深圳 南山平山村 曾剑锋

Linux系统裁剪笔记之四busybox

Linux系统裁剪笔记之四busybox 1.什么裁剪? 本篇文章的主要目的是让笔者和读者更深的认识Linux系统的运作方式,大致内容就是把Linux拆开自己一个个组件来组装,然后完成一个微型的Linux系统.下面,让我们来实现吧..写的不好的地方请指教. 2.原理 大家都知道,操作系统的启动流程是(主要是Linux):POST->BIOS->MBR-kernel-->initrd-->sbin/init, POST,BIOS都不是我们管的,所以这里我们从MBR开始,Linux的系

BusyBox inittab

# /etc/inittab init(8) configuration for BusyBox## Copyright (C) 1999-2004 by Erik Andersen <[email protected]>### Note, BusyBox init doesn't support runlevels.  The runlevels field is# completely ignored by BusyBox init. If you want runlevels, use

busybox(一)浅析

目录 busybox(一)浅析 引入 读取inittab 创建执行脚本链表 执行脚本 小结 title: busybox(一)浅析 tag: arm date: 2018-11-13 23:02:33 --- busybox(一)浅析 源码包在busybox-1.7.0.tar.bz2,一个命令对应着一个c文件,执行init命令,则是有init.c,有函数init_main int init_main(int argc, char **argv); 最终的目的是启动客户的应用程序,需要指定具体的

以Qemu模拟Linux,学习Linux内核

文章名称:以Qemu模拟Linux,学习Linux内核作      者:five_cent文章地址:http://www.cnblogs.com/senix/archive/2013/02/21/2921221.html维护日志:2013-02-21 建立文档(注:文章参考自http://www.linuxidc.com/Linux/2011-07/39373.htm, 是对该篇文章的一些补充和说明.文章内所使用的环境是Ubuntu 12.04,如果其中遇到编译问题,请自行参考错误说明,配置依赖

从ramdisk根文件系统启动Linux成功,及使用initramfs启动linux

下面两篇文章是ARM9论坛上的讲解ramdisk文件系统的很不错的文章 今天做了个试验,让Linux2.6.29.4从ramdisk根文件系统启动成功,总结一下. 其中涉及的内容较多,很多东西不再详述,如需深入研究请查阅相关资料(百度或谷歌一下一大堆).开发环境:Fedora 9交叉编译工具链:arm-linux-gcc 4.3.2 with EABI嵌入式Linux内核版本:2.6.29.4-FriendlyARM.昨天写贴子的时候具体记不清了,今天起来启动开发板用uname -r查一下,就是