总结:Linux系统启动流程

知识储备:Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行

在专用的嵌入式板子运行GNU/Linux系统已经变得越来越流行。一个嵌入式Linux系统从软件的角度看通常可以分为四个层次:
1、 引导加载程序。包括固化在固件(firmware)中的boot代码(可选),和BootLoader两大部分。
2、Linux内核。特定于嵌入式板子的定制内核以及内核的启动参数。
3、 文件系统。包括根文件系统和建立于Flash内存设备之上文件系统。通常用ramdisk来作为rootfs。
4、 用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式GUI有:MicroWindows和MiniGUI等。

注意:1 cpu找到了bootloader,启动运行bootloader,在bootloader里面定义了linux内核等参数,bootloader会根据这些地址和参数去执行相应的东西,就这样

2 Linux内核来引导挂载相应的文件系统

流程图:

流程简介:

Linux的系统启动流程,boot loader,init

系统启动流程

以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 用户自定义系统启动脚本

时间: 2024-12-11 09:26:56

总结:Linux系统启动流程的相关文章

Linux系统启动流程分析与关机流程

Linux 系统启动流程分析 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立终端. 用户登录系统. init程序的类型: SysV: init, CentOS 5之前, 配置文件: /etc/inittab. Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf. Systemd: systemd, CentOS 7,配置文件: /usr/lib/

Linux系统启动流程与内管管理(上)

在讲linux系统启动流程之前,来讲讲linux的组成,这样能能帮助我们深入了解系统的启动流程,废话不多说直接上系统启动流程图 linux组成 linux:kernel+rootfs kenrel的作用:进程管理.内存管理.网络管理.驱动程序.文件系统.安全管理等 rootfs:程序和glibc 库:函数结合,function,调用接口(头文件负责传输) 过程调用:procedure,无返回值 函数调用:function 程序:二进制执行文件 内核设计流派 单内核:把所有功能集成与一个程序 如:

Linux系统管理(二):Linux系统启动流程

Linux系统启动流程 从11月底报名马哥的Linux培训班,12月初真正开始学习,已经过去一个多月的时间了,从学习Linux的发展史开始.跟着学习命令行.文件系统挂载与管理.目录.Bash Shell的基本特性等等,Linux真的是博大精深,今天以CentOS 5,CentOS 6的启动过程进行一下简单的总结.由于才疏学浅,知识所限,有些地方分析不妥之处还请各位高手不吝赐教. 系统启动过程主要经过以下几个流程: POST>BootSequence(BIOS)>Bootloader(MBR)&

linux系统启动流程一览

加载BIOS的硬件信息并进行自检,然后根据设置取得第一个可启动的设备: 读取并执行第一个启动设备内MBR(master boot record,主引导分区)的boot loader: 依据bootloader的设置加载kernel,kernel开始检测硬件和加载驱动程序: 在硬件驱动成功后,kernel会调用init进程,init进程会取得run-level信息: init执行/etc/rc.d/sysinit文件来准备软件执行的操作环境: init执行run-level的各个服务: init执

【转载】Linux系统启动流程

原文:Linux系统启动流程 POST(Power On Self Test/上电自检)-->BootLoader(MBR)-->Kernel(硬件探测.加载驱动.挂载根文件系统./sbin/init) -->init(/etc/inittab:设定默认级别.系统初始化脚本.启动及关闭对应级别的服务.启动终端) 第1步 计算机电源接通后,CPU默认执行 0ffffh:0000h 处的指令(8086是这样,386应该类似),而此内存地址应该存放的就是 BIOS ROM .系统将有一个对内部

Linux系统启动流程、内核及模块管理

Linux系统启动流程.内核及模块管理 Linux系统的组成部分组成:内核+根文件系统(kernel+rootfs)内核(kernel): 进程管理(创建.调度.销毁等).内存管理.网络管理(网络协议栈).驱动程序.文件系统.安全功能IPC:Inter Process Communication机制本地进程间通信机制:消息队列.semerphor.shm(共享内存)跨主机进程间通信机制:socket等运行中的系统环境可分为两层:内核空间.用户空间内核空间(模式):内核代码(特权级操作-->系统调

linux基础-附件1 linux系统启动流程

附件1 linux系统启动流程 最初始阶段当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序.这一程序通常知道一些直接连接在主板上的硬件(硬盘,网络接口,键盘,串口,并口).现在大部分的BIOS允许你从软盘.光盘或者硬盘中选择一个来启动计算机.下一步,计算机将从你所选择的存储设备中读取起始的512 bytes(比如光盘一开是的512 bytes,如果我们从光盘启动的话).这512 bytes叫做主引导记录MBR (mast

Linux系统启动流程及grub重建(1)

日志系统 Linux系统启动流程 PC: OS(Linux) POST-->BIOS(Boot Sequence)-->MBR(bootloader,446)-->Kernel-->initrd-->(ROOTFS)/sbin/init(/etc/inittab) 启动的服务不同:    运行级别:0-6        0:halt        1: single user mode, 直接以管理员身份切入, s,S,single        2:multi user m

Linux系统启动流程(4)制作自定义linux之一

Linux系统启动流程(4)制作自定义linux之一 平时使用的服务器类型的linux系统一般都会装载各种软件与服务,而在某些情况下,并不能一直直接使用公司管理的系统,一是可能会出现故障,二是在处理一些小问题下可能无需如此庞大的linux.于是根据前几篇所讲的linux中的Centos6版本的系统启动流程,可以对其仿制一个微型的linux系统,里面只添加以下需要的工具即可. 以CentOS6为模板为例: 1.准备环境:VM的操作 这里以VM虚拟机模拟,所有直接对安装了CentOS的虚拟机添加一个

Linux系统启动流程

一直以来对于电脑的开机过程概念还停留在按下开机键,然后等待自动开启.但是对于开启的这一过程几乎一无所知,包括它如何能够通电后自己启动包括内部的一系列的过程. 目前也只是对Linux系统的启动流程有了一个浅显的认识,但它启动的过程也想以自己的理解来分享一下. 一般Linux系统的开机过程有这么几个步骤: 按下电源键 BIOS自检 系统引导 Linux内核启动 初始化系统 登录系统 其中每个过程中又可细分为很多的子过程.按下电源键这一步自不必多说,我们从BIOS自检说起. BIOS自检 BIOS自检