`

System V init启动与Busybox init启动对比

 
阅读更多

System V init启动过程

概括地讲,Linux/Unix系统一般有两种不同的初始化启动方式.

1) BSD system init

2) System V init

大多数发行套件的Linux使用了与System V init相仿的init也就是Sys V init,它比传统的BSD system init更容易且更加灵活, System V init的主要思想是定义了不同的"运行级别(runlevel)". 通过配置文件/etc/inittab定义了系统引导时的运行级别, 进入或者切换到一个运行级别时做什么. 每个运行级别对应于一个子目录/etc/rc.d/rc n.d.

 

以下是一个大致的System V init过程:

(1)init 过程执行的第一个脚本是/etc/rc.d/rc.sysinit , 它主要做在各个运行级别中进行初始化工作,包括: 启动交换分区;检查磁盘;设置主机名;检查并挂载文件系统;加载并初始化硬件模块.

(2)执行缺省的运行级别模式

这一步的内容主要在/etc/inittab中体现, inittab文件会告诉init进程要进入什么运行级别,以及在哪里可以找到该运行级别的配置文件.

(3)执行/etc/rc.d/rc.local脚本文件

这也是init过程中执行的最后一个脚本文件,所以用户可以在这个文件中添加一些需要在登录之前执行的命令.

(4)执行/bin/login程序

 

Busybox init 启动过程分析

它的init进程主要进行以下工作:

<*> 为init进程设置信号处理进程

<*>对控制台进行初始化

<*>解析/etc/inittab

<*>在默认情况下,Busybox会运行初始化脚本/etc/init.d/rcS

当init进程对控制台进行初始化完成之后,Busybox会去检查/etc/inittab文件是否存在,如果存在,就会解析该文件并执行相应的运行级别.

Busybox支持的inittab格式如下所示:

id : runlevel : action : process

这里需要注意的一点是,Busybox所认识的/etc/inittab的格式尽管与Sys V init非常相似,但其中的操作域id具有不同的含义. Busybox中的id用来指定启动的控制台,如果所启动的进程不是可以交互的Shell,就可以空着id的操作域不用去填写.

[需要注意]不论Busybox是否能找到inittab文件, Busybox下的init进行执行的第一个脚本都是/etc/init.d/rcS, 而不是Sys V init结构下执行的脚本文件/etc/rc.d/rc.sysinit.

分享到:
评论

相关推荐

    =5内核启动流程之(init_post())[在rest_init()中被调用][归类].pdf

    在Linux内核启动的过程...在不同类型的Linux发行版中,可能使用不同的init程序,如BSD init或System V init,但嵌入式系统通常采用BusyBox的init。理解这一流程对于调试和定制Linux内核以及理解系统启动行为至关重要。

    linux自启动资料

    6. **自启动程序**:在Init启动后,可以设置自启动的脚本或程序,这些通常位于/etc/rc.local(System V Init)或通过systemd的启动单元。此外,服务可以通过`systemctl enable &lt;service&gt;`命令设置为开机启动。 7. *...

    最新版busybox-1.19.4

    修改Makefilez中的ARCH和CROSS_COMPILE与本机的路径一致: CROSS_COMPILE ?= /opt/crosstool/bin/arm-s3c2410-linux-gnu- ... ARCH ?= arm 2、编译busybox。先make menuconfig,修改以下: Busybox Settings -...

    为Android加入busybox工具

    为了确保BusyBox在系统启动时就能被使用,还需要对`init.rc`文件进行修改: 1. **定位`init.rc`文件**:通过`busybox find -name init.rc`找到所有`init.rc`文件的位置。 2. **编辑`init.rc`文件**:在`init.rc`文件...

    android系统使用busybox工具

    为了使BusyBox能够被正确地调用,需要修改Android设备上的`init.rc`文件,让系统在启动时加载BusyBox。具体做法是在`init.rc`文件中添加如下内容: ```bash # service console /system/bin/sh service console /bin...

    android busybox

    1. ** init.rc文件**:在Android系统启动时,`/system/core/rootdir/init.rc`是一个非常关键的配置文件,它定义了系统启动时需要运行的服务和脚本。为了让编译后的Busybox在系统启动时可用,我们需要在这个文件中...

    Busybox for Android

    3. 运行安装程序,将 Busybox 二进制文件复制到 `/system/xbin` 或 `/system/bin` 目录下,并设置适当的权限(通常为 755)。 4. 对于非root设备,可以使用第三方应用(如 Terminal Emulator)来运行 Busybox 命令。...

    替换android默认的busybox

    接下来,为了使`BusyBox`的shell成为默认shell,需要编辑目标文件系统中的`init.rc`文件。找到`console`服务的相关行,通常形式如下: ```bash service console /system/bin/sh class main user system group ...

    根文件系统busybox

    在Busybox中,init进程尤为重要,因为它决定了系统启动时的行为。 init进程的功能主要包括: - **服务管理**:根据配置文件启动必要的服务和进程。 - **用户界面**:提供交互式shell供用户输入命令。 - **异常处理...

    LInux Busybox

    ### Linux Busybox 构建与配置详解 #### 一、Busybox简介与系统构建 Busybox 是一个为嵌入式设备设计的软件包,它集成了大量的标准 Unix 工具到一个单一的小型可执行文件中。这使得Busybox成为了一个理想的工具...

    使用Busybox制作CRAMFS文件系统

    本文将详细介绍如何使用Busybox工具来创建一个压缩只读文件系统(Compressed Read-Only File System,简称CRAMFS)。CRAMFS是一种专门用于嵌入式系统的文件系统格式,其特点在于占用空间小、启动速度快。Busybox则是...

    busybox.zip

    有时还需要更新系统的`init`脚本来确保在启动时加载`busybox`。 6. **安全与风险**:虽然`busybox`为开发者带来了便利,但安装未经信任的`busybox`可能会带来安全风险,因为它包含了大量系统级别的命令,可能会被...

    busybox创建根文件系统所需的etc文件夹

    4. `inittab`:在早期的System V init系统中,定义了系统启动后的运行级别和服务。 5. `syslog.conf`:配置日志记录程序syslogd的行为。 6. `cron`目录:包含定时任务的crontab文件。 7. `init.d`或`rc.d`:存放服务...

    初级根文件系统的制作

    在嵌入式系统中,init进程通常选择简化版的system V init或busybox init,其中busybox init因其简洁性更受欢迎。login程序可以选择busybox login或tinylogin,tinylogin对嵌入式系统支持更好。shell部分,可以使用...

    Android 系统内 system/xbin 脚本文件

    Android系统启动时,会执行一系列的初始化脚本,其中就包括了`system/xbin`目录下的文件。这些脚本通常以`init`进程为起点,负责加载必要的服务和配置,使系统达到可交互的状态。 2. **可执行文件格式**: 在...

    linux启动盘制作过程

    通过以上步骤,我们就可以成功地制作出一个基于BusyBox和Linux 2.6内核的启动盘,该启动盘可用于多种虚拟机环境或物理机器。这不仅有助于学习Linux系统的内部机制,同时也为故障排除提供了便利。

    嵌入式linux下inittab详解.docx

    在嵌入式Linux系统中,inittab文件是系统启动配置文件的核心组件之一, plays a crucial role in defining the system's initialization process and specifying the commands and scripts to be executed during ...

    ARM-Linux-load-at-startup.rar_linux manual

    首先,Linux内核在启动时会执行一个名为初始化系统的程序,例如早期的System V Init或现代的Systemd。这些初始化系统负责按特定顺序启动各种服务和程序。手册可能会涵盖如何配置这些初始化系统来添加自启动程序,...

    Linux下用Busy Box制作Ramdisk全过程

    然后,需要配置 Busybox,包括设置 General Configuration、Build Options、Init Utilities、Shells、Coreutils、Linux System Utilities、Networking Utilities 等配置项。最后,需要编译并安装 Busybox。 4. 准备...

    LINUX嵌入式系统根文件系统制作(busybox1.15.2).doc

    在Linux嵌入式系统开发中,根文件系统(Root File System)扮演着至关重要的角色,它是系统启动后能够运行的基本环境。本实验旨在利用Busybox 1.15.2定制一个精简版的文件系统,以适应资源有限的嵌入式设备。Busybox...

Global site tag (gtag.js) - Google Analytics