系统启动流程
以debian6为例
1 加载BIOS的硬件信息与进行自我测试,并取得启动设备(如硬盘、光盘、闪存)
2 读取并执行启动设备内MBR的boot loader(如grub等)
3 依据boot loader的设定加载kernel,kernel开始侦测硬件并加在驱动程序
4 硬件驱动成功后,kernel会主动呼叫init程序,而init会取得run-level信息
5 init执行/etc/init.d/rc脚本来准备软件执行的工作环境(如网络、时区等)
6 init执行run-level的各个服务之启动(scipt方式)
7 init执行/etc/rc.d/rc.local文件
8 init执行终端机启动login程序,等待用户登录
boot loader
1 每个硬盘的MBR只有一个
2 每个文件系统(filesystem,或者是partition)都会保留一块启动扇区(boot sector)
3 每个操作系统默认会安装boot loader到他自己的文件系统的boot sector中
4 boot loader可以安装在MBR中,boot loader也可以安装在boot sector中
5 boot loader可以将管理权转交给其他的boot loader
init初始程序及其配置文件/etc/inittab
/sbin/init最主要的功能就是准备软件执行的环境,包括系统主机名、网络设定、语系处理、文件系统格式即其他服务的启动
/etc/inittab是/sbin/init的配置文件,此配置文件类似script,需要一步一步执行
init处理流程,也就是/etc/inittab执行步骤
1 | 设置默认的runlevel | id:2:initdefault: |
2 | 系统启动初始化脚本 | si::sysinit:/etc/init.d/rcS |
3 | 运行runlevel为2的脚本 | l2:2:wait:/etc/init.d/rc 2 |
4 | 设置ctrl+alt+del组合进行重启 | ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now |
5 | 设置电源管理 | pf::powerwait:/etc/init.d/powerfail start |
6 | 启动终端tty1 | 1:2345:respawn:/sbin/getty 38400 tty1 |
步骤详细分析
1 上表第2步调用rsS其实是调用/etc/init.d/rc S,
上表第3步也是同样调用/etc/init.d/rc 2
2 查看/etc/init.d/rc脚本,此脚本根据参数runlevel调用相应runlevel的脚本
相应runlevel的脚本的路径为/etc/rc$runlevel.d/
3 /etc/rc$runlevel.d/路径下脚本被依次执行,启动或关闭相应的服务
/etc/rc$runlevel.d/S* 需要开启的服务
/etc/rc$runlevel.d/K* 需要关闭的服务
4 /etc/init.d/rc.local脚本在/etc/rc$runlevel.d/路径下最后执行
/etc/init.d/rc.local脚本为用户自定义系统启动脚本
/etc/inittab主要语法
/etc/inittab由:(冒号)来分隔成4部分
1 id。最多4个字符,代表init的主要工作,只是简单说明
2 runlevel。代表该初始化动作在哪些runlevel下运行
3 action。代表初始化的特别动作
4 process。代表需要进行的命令,通常是一些script
更详细的可参考man inittab
action初始化特别动作
initdefault | 代表预设的runlevel设定值 |
sysinit | 代表系统初始化的动作 |
ctrlaltdel | 代表按下这3个按键是否可以重启 |
wait | 代表后面的process命令必须执行完毕才能继续 |
respawn |
代表后面的process命令可以无限制的再生。 例如getty启动login,注销后,此动作还会启动login |
runlevel执行等级
runlevel作用就是规定系统使用不同的服务来启动,根据目的设置相应的工作环境
不同版本的linux还需要查看/etc/inittab
0 | halt | 系统直接关机 |
1 | single-user | 单人维护模式,用在系统出问题时的维护 |
2 | multi-user without NFS | 多用户文本模式,无NFS服务 |
3 | full multi-user | 完整含有网络功能的多用户纯文本模式 |
4 | unused | 系统保留 |
5 | X11 | 多用户图形界面,加载使用X Window |
6 | reboot | 重启 |
相关文件
/boot/vmlinuz-$(uname -r) | linux核心文件 |
/boot/initrd-$(uname -r) | 启动时虚拟文件系统 |
/boot/grub/* | boot loader程序 |
/etc/inittab | init配置文件 |
/etc/init.d/rc | 初始化系统启动脚本 |
/etc/rc$runlevel.d/* | 相应runlevel系统启动脚本 |
/etc/init.d/rc.local | 用户自定义系统启动脚本 |
相关推荐
本文将详细介绍U-Boot在Linux系统中的启动流程,特别是针对ARM920T处理器的启动过程。 #### 二、U-Boot启动流程概览 U-Boot的启动流程可以大致分为以下几个阶段: 1. **上电初始化** 2. **设置CPU工作模式** 3. **...
Linux 开机启动流程详解 Linux 系统的启动过程是一个复杂而有序的序列,涉及到多个组件和步骤。这里我们将深入探讨这一流程,了解从按下电源键到用户登录的每一个环节。 1. BIOS(Basic Input Output System)加载...
总的来说,Linux的启动流程是计算机从硬件级自检到操作系统全面启动的一系列步骤,涉及到硬件初始化、引导加载器、内核启动和用户空间服务的启动。理解这一流程有助于系统故障排查和优化系统性能。
Linux 系统的启动流程是一个复杂而有序的过程,涉及多个步骤,从硬件初始化到操作系统核心的加载,再到用户空间服务的启动。以下是对这个过程的详细解析: 1. BIOS 初始化: - BIOS(基本输入输出系统)首先进行...
Linux 操作系统的启动过程可以分为五个阶段:BIOS 阶段、Boot Loader 阶段、Kernel 阶段、Init 阶段和系统初始化阶段。 在 BIOS 阶段,计算机从加电开始,BIOS 将执行自检程序(POST),检查硬件是否正常,加载 ...
- 对于多操作系统环境,Boot Loader如GRUB和LILO允许用户在启动时选择要运行的操作系统。设置多重引导通常需要先安装Windows(主引导记录MBR由其控制),再安装Linux(Boot Loader会更新MBR)。 9. **Problem ...
Linux系统初始化和启动系统服务的过程 Linux系统的初始化和启动系统服务的过程是一个复杂的过程,涉及到多个步骤和组件。下面我们将详细介绍这个过程。 一、简单介绍RHEL开机时的先后顺序 1. BIOS:电脑一打开...
在嵌入式 Linux 系统中,引导加载程序(boot loader)扮演着非常重要的角色。boot loader 负责将内核从 Flash 等固态存储设备加载到 RAM 中,然后跳转到内核的第一条指令处执行。常见的引导加载程序包括 U-Boot、...
整个启动流程结束后,U-Boot会将控制权交给Linux内核,由内核接管系统并继续执行初始化过程,如驱动加载、文件系统挂载等。这个过程对于理解嵌入式系统的启动过程至关重要,因为每个阶段都直接影响到系统的稳定性和...
在Linux系统的世界里,了解操作系统从开机到运行的启动流程是至关重要的,特别是对于嵌入式开发人员来说,深入理解这一过程能帮助他们优化系统性能,解决启动问题,以及更好地控制硬件资源。本文将详细探讨“Linux...
MBR中包含了引导加载程序,对于Linux系统,常见的引导加载器有LILO(Linux Loader)和GRUB(Grand Unified Boot Loader)。GRUB是Red Hat Enterprise Linux 4.0及以后版本的默认引导器。GRUB有以下几个显著特点:它...
Linux操作系统自启动过程是一个复杂而有序的序列,它涉及到计算机硬件初始化、引导...整个启动流程涉及到硬件、BIOS、MBR、Boot Loader、内核、初始化脚本等多个环节,每个环节都是保证系统正常运行不可或缺的一部分。
Red Hat Linux 启动流程是操作系统启动的关键环节,它涉及一系列复杂的步骤,确保系统能够从关闭状态成功地加载内核并进入用户界面。这个过程分为多个阶段,包括BIOS自检、MBR加载、内核初始化、系统服务启动以及...
在Linux系统中,这个引导程序通常是GRUB(Grand Unified Boot Loader)或LILO。 GRUB是Red Hat Enterprise Linux 4.0及后续版本的默认引导装载程序,它具有强大的功能,如支持大硬盘和提供命令行交互界面。GRUB的...
首先,启动流程的第一阶段是从POST(Power-On Self Test)开始,即上电自检。当计算机电源开启,硬件会进行一系列自我检测,确保所有部件正常工作。然后,BIOS(基本输入输出系统)加载到内存,并设置中断向量,其中...
对于Linux系统,这个过程同样遵循特定的流程。本文将深入解析Linux的启动步骤,帮助你理解从按下电源键到看到登录界面的每一个细节。 1. **处理器执行初始化代码** - 在启动过程中,处理器会从一个已知位置执行...
Linux系统启动过程是一个复杂而有序的系列步骤,它涉及到硬件初始化、加载启动加载器、内核启动以及初始化系统服务等多个环节。以下是对每个阶段的详细解释: 1. BIOS 初始化: 当计算机上电或重启时,基本输入/...
3. **操作系统内核加载:** Boot Loader负责加载Linux内核到内存中,并传递必要的参数给内核。 4. **内核初始化:** 内核被加载后,开始进行初始化操作,包括内存管理、设备驱动的加载等。 5. **运行初始化进程:** ...
这个区域通常包含一个小的引导程序,称为GRUB(Grand Unified Bootloader)或者LILO(LInux LOader),它们是多系统启动管理器,可以引导不同的操作系统。 2. **GRUB或LILO**:GRUB是红旗Linux常用的引导装载程序,...