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.
相关推荐
在Linux内核启动的过程...在不同类型的Linux发行版中,可能使用不同的init程序,如BSD init或System V init,但嵌入式系统通常采用BusyBox的init。理解这一流程对于调试和定制Linux内核以及理解系统启动行为至关重要。
6. **自启动程序**:在Init启动后,可以设置自启动的脚本或程序,这些通常位于/etc/rc.local(System V Init)或通过systemd的启动单元。此外,服务可以通过`systemctl enable <service>`命令设置为开机启动。 7. *...
修改Makefilez中的ARCH和CROSS_COMPILE与本机的路径一致: CROSS_COMPILE ?= /opt/crosstool/bin/arm-s3c2410-linux-gnu- ... ARCH ?= arm 2、编译busybox。先make menuconfig,修改以下: Busybox Settings -...
为了确保BusyBox在系统启动时就能被使用,还需要对`init.rc`文件进行修改: 1. **定位`init.rc`文件**:通过`busybox find -name init.rc`找到所有`init.rc`文件的位置。 2. **编辑`init.rc`文件**:在`init.rc`文件...
为了使BusyBox能够被正确地调用,需要修改Android设备上的`init.rc`文件,让系统在启动时加载BusyBox。具体做法是在`init.rc`文件中添加如下内容: ```bash # service console /system/bin/sh service console /bin...
1. ** init.rc文件**:在Android系统启动时,`/system/core/rootdir/init.rc`是一个非常关键的配置文件,它定义了系统启动时需要运行的服务和脚本。为了让编译后的Busybox在系统启动时可用,我们需要在这个文件中...
3. 运行安装程序,将 Busybox 二进制文件复制到 `/system/xbin` 或 `/system/bin` 目录下,并设置适当的权限(通常为 755)。 4. 对于非root设备,可以使用第三方应用(如 Terminal Emulator)来运行 Busybox 命令。...
接下来,为了使`BusyBox`的shell成为默认shell,需要编辑目标文件系统中的`init.rc`文件。找到`console`服务的相关行,通常形式如下: ```bash service console /system/bin/sh class main user system group ...
在Busybox中,init进程尤为重要,因为它决定了系统启动时的行为。 init进程的功能主要包括: - **服务管理**:根据配置文件启动必要的服务和进程。 - **用户界面**:提供交互式shell供用户输入命令。 - **异常处理...
### Linux Busybox 构建与配置详解 #### 一、Busybox简介与系统构建 Busybox 是一个为嵌入式设备设计的软件包,它集成了大量的标准 Unix 工具到一个单一的小型可执行文件中。这使得Busybox成为了一个理想的工具...
本文将详细介绍如何使用Busybox工具来创建一个压缩只读文件系统(Compressed Read-Only File System,简称CRAMFS)。CRAMFS是一种专门用于嵌入式系统的文件系统格式,其特点在于占用空间小、启动速度快。Busybox则是...
有时还需要更新系统的`init`脚本来确保在启动时加载`busybox`。 6. **安全与风险**:虽然`busybox`为开发者带来了便利,但安装未经信任的`busybox`可能会带来安全风险,因为它包含了大量系统级别的命令,可能会被...
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`目录下的文件。这些脚本通常以`init`进程为起点,负责加载必要的服务和配置,使系统达到可交互的状态。 2. **可执行文件格式**: 在...
通过以上步骤,我们就可以成功地制作出一个基于BusyBox和Linux 2.6内核的启动盘,该启动盘可用于多种虚拟机环境或物理机器。这不仅有助于学习Linux系统的内部机制,同时也为故障排除提供了便利。
在嵌入式Linux系统中,inittab文件是系统启动配置文件的核心组件之一, plays a crucial role in defining the system's initialization process and specifying the commands and scripts to be executed during ...
首先,Linux内核在启动时会执行一个名为初始化系统的程序,例如早期的System V Init或现代的Systemd。这些初始化系统负责按特定顺序启动各种服务和程序。手册可能会涵盖如何配置这些初始化系统来添加自启动程序,...
然后,需要配置 Busybox,包括设置 General Configuration、Build Options、Init Utilities、Shells、Coreutils、Linux System Utilities、Networking Utilities 等配置项。最后,需要编译并安装 Busybox。 4. 准备...
在Linux嵌入式系统开发中,根文件系统(Root File System)扮演着至关重要的角色,它是系统启动后能够运行的基本环境。本实验旨在利用Busybox 1.15.2定制一个精简版的文件系统,以适应资源有限的嵌入式设备。Busybox...