Linux 启动流程学习

Linux 启动流程学习

开机自检(加载BIOS)

无论什么机器,在开机后都要进行通电自检(硬件),如果硬件有问题,则无法继续下去。
(例如当内存条松动时或者损坏,就会发出嘀嘀嘀警报声)。接着开始加载BIOS(Basic Input Output System
BIOS是一个写入到主板上的一个软件程序。BIOS会去分析计算机里面有哪些存储设备,
从默认的第一启动项开始启动。

MBR与boot loader

接下来BIOS将程序启动的下一步交给了MBR,他会去读取第一个扇区的MBR位置。
由于不同的操作系统的文件系统格式不相同,因此我们必须要一个引导装载程序来处理文件加载的问题,
也就是BootLoader,而这个BootLoader就安装在启动设备的第一个扇区,也就是MBR(主引导分区)

step1:boot loader

boot loader 有如下功能:
    提供菜单:用户可以选择不同的启动选项
    加载内核文件:直接指向可启动的程序区段来开始操作系统
    转交其他loader:将引导装载功能转交给其他loader负责

boot loader程序 有多个版本

    在linux中有 早期的LILO 和现在使用较多的 grub
    在windows中有 ntloader

step1.5:/dev/sda1

/dev/sda1 通常是开机后的/boot 操作系统起来之后作用很小 可能我们很少注意到这个分区

但其实这个分区是开机时的根目录 里面存放着很多重要的开机所需要的文件 grub vmlinuz 内核等
根目录会在开机之后再次挂载 也就是开机之后我们能看到的/dev/sda2分区

这个分区有一个比较有意思的情况 这时我们没有加载文件系统加载模块 也就是不能够挂载 那么我们为什么能够访问到 /boot分区呢
hexdump -C -n 5120 /dev/sda 这条命令可以看到里面有grub信息 表明了他的挂载载不需要模块的帮助
(ps:这里说挂载不太准确 ,说成 可以直接访问更贴切)

step2: initramfs-.*.img

包含有各种可执行程序和驱动程序,这些驱动程序中包括 即将加载的真正的文件系统的存储介质的驱动




到了这一步 有了ext4模块就可以加载文件系统了

/boot下有一个grub. conf配置文件

default 0 表示默认启动第一个选项  也就是可以有多个内核可供选择
timeout 表示等待多长时间以后系统自动选择默认选项启动
splashiamge 是定义了一个开机启动时的背景图 可以自定义
title 分隔开了每一个内核:
    root (hd0,0) 表示当前根为 第一个磁盘的第一个分区
    kernel 表示当前内核 rhgb表示系统默认启动以图形化界面开启 quiet  只显示重要信息 安静模式
    initrd 表示启动系统映像文件名称

这里还有一个执行顺序问题需要注意:

    是先执行initrd 有了文件系统加载模块 再去交给kernel的 因为你可以看到在配置文件里有了
    /dev的产生 如果没有文件系统的加载 是无法挂载和有这个名称的

关于 initrd 和 initramfs 的区别

Kernel

关于kernel我了解的较少 ,只是知道他的作用就是加载一些硬件驱动程序,最终释放虚拟文件系统
,并挂载实际的目录文件系统,从而开始后续的正常启动流程。

init

init程序的类型:
    SysV:init CentOS5 之前
        配置文件:/etc/inittab
    Upstart:init, CentOS6
        配置文件:/etc/inittab /etc/init/*.conf
    Systemd: systemd CentOS 7
        配置文件:/usr/lib/systemd/system
            /etc/systemd/system

以CentOS 5为例:

/etc/initab
每一行的定义方式:
    id:runlevel:action:process
        action :
            wait :切换至次级别运行一次
            respawn:此进程终止 就重新启动
            initdefault:设定默认运行级别
            sysinit:设定系统初始化方式 




切换到对应的运行等级时如果为K开头的进程 就关闭掉对应的服务 如果为S开头的 就开启对应的服务

启动流程总结

step1:加载BIOS的硬件信息和自检 根据设置启动所选设备
step2:读取并执行所选设备内MBR里的boot loader
step3:根据boot loader加载kernel kernel 检测硬件预加载驱动程序
step4:kernel调用init init会取得run-level信息
step5:执行/etc/rc.d/rc.sysinit文件来准备软件执行的操作环境
step6:执行run-lebvel的各个服务启动
step7:执行/etc/rc.d/rc.local文件
step8:执行终端机模拟程序来启动login进程 最后等待用户登录

原文地址:http://blog.51cto.com/13572413/2090594

时间: 2024-08-24 09:28:48

Linux 启动流程学习的相关文章

记录Linux启动流程的工具bootchart

/*********************************************************************  * Author  : Samson  * Date    : 04/28/2014  * Test platform:  *              3.11.0-12-generic #19-Ubuntu  *              GNU bash, version 4.2.45  * ****************************

STB 参考Linux启动流程分析

STB启动流程 1. uboot启动(Fastboot启动) 硬件资源检测(如CPU,DDR Size,Nand  flash,mem size,flash size) print Version(如HW Version,Boot Version,Loader Version) boot设置模型的选择(autoboot or stop) 2. Starting kernel 各种接口驱动的启动() Creating 10 MTD partitions on “hinand” 网卡驱动,USB驱动

linux启动流程及自定义gurp

linux 启动流程 POST BIOS(boot sequence) 所选择的启动设备次序的MBR中是否有引导程序, ----> MBR(bootloader) 提供内核列表 ------->加载选定的Kernel,initrd(内存模拟的磁盘设备需要缓存),initramfs(缓存)  ---->获取到根文件系统并挂载,运行init bootloadler开始以后的挂载流程 1.当系统读取bootloader,挂载内核分区的时候,不识别更高级的磁盘分区上,只能放在基本磁盘分区,而且只

Linux启动流程详解【转载】

在BIOS阶段,计算机的行为基本上被写死了,可以做的事情并不多:一般就是通电.BIOS.主引导记录.操作系统这四步.所以我们一般认为加载内核是linux启动流程的第一步. 第一步.加载内核 操作系统接管硬件以后,首先读入 /boot 目录下的内核文件. 我们查看一下,/boot 目录下面大概是这样一些文件: 第二步.启动初始化进程 内核文件加载以后,就开始运行第一个程序 /sbin/init,它的作用是初始化系统环境. 由于init是第一个运行的程序,它的进程编号(pid)就是1.其他所有进程都

Linux启动流程简介以及各启动阶段失败的恢复方法

透彻的了解Linux启动流程是非常关键的知识点,只有了解了这部分内容,才会在Linux出现系统级别的错误时能够非常冷静的面对以及快速的排错. Linux启动流程 第一阶段 BIOS不是操作系统的职责范围 BIOS是硬件的功能,属于firmware BIOS存储于ROM,不需要强电就可以实现数据保存 更改BIOS如启动顺序保存在一种特定的RAM中,为了保证断电后实际更改保存,通过BIOS上加电池来解决 在BIOS可以选择启动顺序(硬盘,光盘,网络等) 如果选择BIOS从硬盘启动,硬盘的必须是MBR

linux启动流程详解、破解root密码、添加服务脚本

1.Linux的组成 kernel+rootfs kernel:进程管理.内存管理.网络管理.安全管理.文件系统管理.驱动程序 rootfs:程序和glibc 库:函数集合,function,调用接口(头文件负责描述) 过程调用:procedure  ,无返回值 结果调用:function 程序:二进制文件 2.内核设计流派 单内核(monolithic kernel):Linux 把所有功能集成于同一个程序 微内核(micro kernel):Windows, Solaris 每种功能使用一个

24、Linux启动流程和grub详解

还记得Windows的启动流程吗?相信大家能说出来个大概,为什么说出个大概呢,因为Windows是图形界面启动的,但是开机过程都做了什么,你知道吗,相反,Linux启动的时候,会把这些加载到屏幕上面显示,那接下来我们来看看Linux启动都发生了些什么把!!! Linux启动流程图 简解开机启动流程 当用户打开电源后,BIOS开机自检,确定启动设备,安装启动设备启动设备上面安装的GRUB开始引导Linux,Linux首先先进行内核引导,通过跟切换,执行init程序,init程序确定启动级别,根据启

Linux启动流程讲解

要了解linux系统的启动流程,先要了解系统的组成 关于系统的组成:        内核+根文件系统组成 内核:由内核核心文件和模块文件组成            1.内核核心文件:一般位于/boot/目录下,命名为vmlinuz-VERSION(版本号)             2.模块文件:位于/lib/modules/VERSION/目录下,存放着内核的众多功能组件(如驱动)            3.initrd:位于/boot下,一般命名为initramfs-VERSION,此文件相当

详解Linux启动流程及需要使用到的配置文件

POST(Power On Self Test)加电自检 --> BIOS(Boot Sequence)--> MBR(bootloader)-->Kernel --> initrd --> rootfs(/sbin/init) 下面对每一个启动流程做详细解释: POST(Power OnSelf Test)加电自检   计算机本身不执行任何程序,所以系统必须要完成自举的过程,在CPU的控制下将RAM芯片中的某个程序映射到ROM的地址空间,并执行其中的指令完成系统硬件健康状况