简述Linux启动过程


1)BIOS开机自检

2)MBR引导

3)启动引导程序菜单(GRUB)

4)加载内核

5)加载虚拟文件系统加载函数模块

6)启动系统进程

/sbin/init

--->/etc/init/rcs.conf--->/etc/rc.d/rc.sysinit--->系统初始化
                                                    --->/etc/inittab--->/etc/init/rc.conf--->/etc/rc.d/rc-->/etc/rc[0-6]--->按照优先级启动和关闭脚本
                     --->/etc/rc.d/local--->登录界面--->输入用户名和密码登录系统

Linux启动过程详解(Centos6.X版本)


一.BIOS开机自检

  • 对基础硬件环境进行开机自检,如:cpu,HDD,Memory,主板等, 根据启动顺序(默认硬盘启动)进行启动,只有自检通过才会进行下一步动作

二.启动引导过程

  • 系统启动后,会从硬盘0柱面0磁头1扇区(MBR主引导程序)读取引导启动程序(Boot loader)用于引导操作系统启动,当MBR加载到内存之后,BIOS讲控制权交给MBR(MBR中最主要的功能就是存储启动引导程序)
  • 名词解释

1)柱面-Cylinders:硬盘有多个盘片(和光盘相似)组成,每个盘面被划分为数目相等的磁道,所以盘片都会从外向内进行磁道编号,最外侧的就是0磁道,具有相同编号的磁道形成一个圆柱,这个圆柱称为磁盘的柱面

2)磁道-track:每个盘片在逻辑上有很多同心圆,最外面的同心圆为0磁道,每个同心圆称为磁道(硬盘的磁道密度非常高,通常盘面上有上千个磁道)

3)扇区-sector:将每个磁道分为若干个孤段,每个孤段就是一个扇区,扇区的大小是固定的512字节,也是磁盘的最小存储单位{1B(byte)=8位(bit)  1024字节=1MB),GB-TB-PB-EB-ZB-YB-BB-NB-DB以此类推},下图是MBR和扇区,磁道,柱面的逻辑抽象图(部分截图来自互联网)

4)MBR(Master Boot Record)主引导程序,占用一个扇区大小共512字节,其中启动引导程序(linux启动引导程序GRUB2)占用446字节,分区表占用64字节(每个分区项占用16字节,这也是为什么硬盘最大只能分四个主分区的原因),最后还有2字节的结束标识

三.加载内核及函数模块(驱动)

  • 如果系统只有一个内核,则单系统直接启动
  • 如果系统有多个内核(比如一个操作系统既安装了Linux系统,又安装了Windows系统,这种情况一般用于测试实验环境或者个人喜好,实际生产环境很少使用),开机界面则有多个选项让用户自行选择哪个内核进行启动
  • linux内核是以压缩的形成保存在启动系统的/boot目录下(被启动引导程序调用加载在内存中),内核会先在内存中进行解压缩,解压缩完成之后,内核会再执行一次自检(linux一般更信任内核自检)内核的自检过程会记录在"/var/log/dmesg"文件中,启动引导程序加载内核之后,就需要内核加载硬件的驱动程序,一般情况下IDE接口的硬盘驱动都保存在内核中,可以直接调用(IDE硬盘基本淘汰)这时候有一个问题,如果内核加载了所有的驱动程序,那么内核会非常大,linux的解决方案是把常用的驱动加载在内核中,把不常用的驱动做成函数模块加载放在/boot/lib/modules文件中,需要的时候进行调用。

四.虚拟文件系统--initramfs

  • 但是这里又有个新的问题,内核还不能识别硬盘如何去识别"/boot/lib/modules"文件呢?(/boot分区通过启动引导程序加载,不是由内核加载)这里引用了“虚拟文件系统-initramfs”通过虚拟文件系统加载基本的驱动加载在内核里,然后解压缩并在内存中仿真成一个根目录,并且这个仿真的文件系统能够提供一个可执行程序,通过该程序加载启动过程中所需要的内核模块,如:USB,sata硬盘驱动,RAID驱动(建立仿真目录,加载真正的硬件驱动),具体参考如下图
  • 虚拟文件系统(initramfs)在/boot分区下,可以查看,它是一个压缩文件,可以使用file命令查看格式,然后进行压缩,查看发现非常类似系统的根目录,以下是详细过程

五.启动系统进程

系统启动的第一个进程/sbin/init,是其他所有进程的父进程,通过父进程调用“/etc/init/rcs.conf”,此进程有两个功能

(1)调用“/etc/rc.d/rc.sysinit”进行系统初始化(初始网络环境,挂着设备,初始硬件等等)则系统的基本功能具备

(2)调用“/etc/inittab”查看系统运行级别-->调用“/etc/init/rc.conf”-->调取--->“/etc/rc.d/rc”目录--->再调取“/etc/rc.d/rc[0-6]”文件执安装优先级启动和关闭脚步--->在登录系统界面之前在启动“/etc/rc.d/local”文件--->登陆界面--->输入用户名和密码登陆系统,以下是各文件详细参数:

  • “/etc/inittab”文件--->启动运行级别
  • “/etc/init/rc.conf”文件
  • “/etc/rc.d/rc”目录及调取“/etc/rc.d/rc[0-6].conf”按照优先级启动和关闭脚步
  • “/etc/rc.d/local”

以上是我个人的理解,如有不足,欢迎大家指正修改,相互学习,一起进步!

Linux开机启动过程(个人理解)的更多相关文章

  1. LINUX开机启动过程

    LINUX开机启动过程 启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息 ...

  2. linux 开机启动过程详解

    Linux开机执行内核后会启动init进程,该进程根据runlevel(如x)执行/etc/rcx.d/下的程序,其下的程序是符号链接,真正的程序放在/etc/init.d/下.开机启动的程序(服务等 ...

  3. 001.Linux开机启动过程

    相关Linux启动过程解析,此作为通用启动参考:

  4. Linux入门——开机启动过程浅析

    Linux开机启动过程浅析 Introduction 开机启动过程分为以下6个步骤,分别是BIOS, MBR, GRUB, Kernel, Init, RunLevel, RunDefinition ...

  5. 【转载】简述Linux的启动过程

    原文:简述Linux的启动过程 本文将简单介绍一下Linux的启动过程,希望对那些安装Linux的过程中遇到了问题的朋友有些帮助 声明:本人没用过UEFI模式和GPT分区格式,所有关于这两部分的内容都 ...

  6. 5.Linux的启动过程和系统指令

    1.Linux的启动过程 作为一台计算机,启动它的第一步是加电自检,也就是给电脑用电然后按电源按钮开机.加电之后的运行步骤:(1)加载bios,然后检查硬盘信息 (2)读取MBR的配置(MBR就是硬盘 ...

  7. Linux内核启动过程概述

    版权声明:本文原创,转载需声明作者ID和原文链接地址. Hi!大家好,我是CrazyCatJack.今天给大家带来的是Linux内核启动过程概述.希望能够帮助大家更好的理解Linux内核的启动,并且创 ...

  8. Linux 开机启动

    Linux开机启动(bootstrap)   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 计算机开机是一个神秘的过程.我们只是 ...

  9. (转)Linux的启动过程

    原文链接:http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html 半年前,我写了<计算机是如何启动的?>,探讨BIOS ...

随机推荐

  1. 并发编程(4)——AbstractQueuedSynchronizer

    AQS 内部类Node 等待队列是CLH有锁队列的变体. waitStatus的几种状态: static final int CANCELLED = 1; /** waitStatus value t ...

  2. 阿里P8Java大牛仅用46张图让你弄懂JVM的体系结构与GC调优。

    本PPT从JVM体系结构概述.GC算法.Hotspot内存管理.Hotspot垃圾回收器.调优和监控工具六大方面进行讲述.图文并茂不生枯燥. 此PPT长达46页,全部展示篇幅过长,本文优先分享前十六页 ...

  3. Go中的日志及第三方日志包logrus

    有别的语言使用基础的同学工作中都会接触到日志的使用,Go中自然也有log相关的实现.Go log模块主要提供了3类接口,分别是 "Print .Panic .Fatal ",对每一 ...

  4. Mac安装Homebrew的那些事儿

    Mac安装Homebrew的那些事儿 最近小明刚换置了一个 Mac 本,想搭建一个属于自己的博客网站,需要用到 Node.js 环境,而Node.js 在 MacOS 中是由 Homebrew 进行安 ...

  5. Vsftp服务器配置文件详解

    vsftp软件是我们常见的FTP服务器搭建软件,所有的配置都是基于vsftpd.conf这个配置文件的.vsftpd.conf里面主要包括安全配置,传输,用户还有权限等相关的选项.现在我们讲解下关于V ...

  6. Java Web基础面试题整理

    Tomcat的缺省端口是多少,怎么修改 tomcat默认缺省端口是8080 修改方法: 找到Tomcat目录下的conf文件夹 进入conf文件夹里面找到server.xml文件 打开server.x ...

  7. Java开发包Jedis

    Jedis: http://www.oschina.net/p/jedis (Redis的官方首选Java开发包) <!--Redis --> <dependency> < ...

  8. Windows Server 2008配置系统安全策略

    下面学习Windows Server 2008配置系统安全策略 在工作组中的计算机本地安全策略有 用户策略,密码策略,密码过期默认42天 服务账户设置成永不过期,帐户锁定策略,本地策略,审核策略,计算 ...

  9. spark任务调度模式,动态资源分配

    官网链接: http://spark.apache.org/docs/latest/job-scheduling.html 主要介绍: 1 application级调度方式 2 单个applicati ...

  10. 从零开始搭建前后端分离的NetCore(EF Core CodeFirst+Au)+Vue的项目框架之二autofac解耦

    在 上一篇 中将项目的基本骨架搭起来能正常跑通,这一篇将讲到,如何通过autofac将DbContext和model进行解耦,只用添加model,而不用在DbContext中添加DbSet. 在这里就 ...