当我们按开机键后,主机就会执行:

1、POST(Power-On Self Test 加电自检)。

2、读取BIOS中定义的开机设备启动程序,并加载MBR(主引导记录(Master Boot Record))中的bootloader(一般包括:Grub、Lilo和spfdisk等,常用grub)

3、bootloader会执行一段程序,将内核加载进内存,并解压缩。

4、内核检测硬件、加载驱动程序、挂载根文件系统,启动第一个进程/sbin/init。

5、init读取它的配置文件/etc/inittab,获取运行级别

/etc/inittab内容包括:1>预设运行级别,2>指定初始化运行环境要执行的脚本,3>7个不同级别,需要启动的服务脚本放置路径,4>设置[ctrl]+[alt]+[del]组合键功能,5>设置断电,恢复时的应急处理等。

6、init会执行/etc/rc.d/rc.sysinit来初始化软件所运行的系统环境。

/etc/rc.d/rc.sysinit主要功能:

<1>以读写方式重新挂载根文件系统;

<2>获取网络环境,主机类型

<3>启动selinux

<4>加载核心相关设定,读取/etc/sysctl.conf

<5>启动swap分区

<6>设置系统时间,时区

<7>初始化lvm、raid文件系统

<8>清除开机过程中的临时文件等等

7、执行指定级别的服务脚本,在/etc/rc.d/rc*d rc0.d~rc6.d

以K**开头的要执行stop,**数字表示关闭时的次序

以S**开头的要执行start,**数字表示开启时的次序(一般**越小开启越早,会被别的服务依赖,所以关闭晚,chkconfig会负责处理这些脚本)

8、执行最后一个脚本/etc/rc.d/rc.local。

9、启动虚拟终端,图形终端(运行级别为5时)

开机过程中根目录是以只读方式挂载的,一般非必要的功能会编译成模块放在/lib/modules/中(包括一些磁盘的驱动:USB,SATA,SCSI等,除了IDE),以应对不同厂商的硬件设备。假如Linux装在SATA上,所以要加载SATA的驱动,然后挂载根文件系统,但是驱动是放在/lib/modules中的,根文件还没有挂载,所以就找不到驱动,找不到驱动就挂载不了,挂载不了就找不见驱动(先有鸡还是先有蛋)。

这时就会出现一个虚拟文系统(过度文件系统)/boot/initrd,bootloader加载内核的同时将它也加载进内存,在内存中解压缩,模拟成一个根文件系统,在内存中执行一段程序判断并加载所用磁盘(USB、SATA、SCSI)的驱动,内核得到驱动后就会挂载正真的文件系统。

Linux启动过程总结的更多相关文章

  1. Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)

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

  2. Linux启动过程详解

    Linux启动过程详解 附上两张图,加深记忆 图1: 图2: 第一张图比较简洁明了,下面对第一张图的步骤进行详解: 加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的 ...

  3. 嵌入式Linux启动过程中的问题积累

    嵌入式Linux启动过程中的问题积累 Dongas 07-12-19 1.Bad Magic Number ## Booting image at 33000000 ... Bad Magic Num ...

  4. [linux 整理] linux启动过程3

    本文介绍linux启动过程的第三步 busybox--------------------> rc init busybox位置即内容 busybox/init/init.c 1.各种设置信号 ...

  5. 从Linux启动过程到android启动过程

    Linux启动过程: 1.首先开机给系统供电,此时硬件电路会产生一个确定的复位时序,保证cpu是最后一个被复位的器件.为什么cpu要最后被复位呢?因为 如果cpu第一个被复位,则当cpu复位后开始运行 ...

  6. Linux启动过程简述

    Linux启动过程: 图片来自:https://www.cnblogs.com/codecc/p/boot.html 简单来讲: 加载BIOS–>读取MBR–>Boot Loader–&g ...

  7. Linux 启动过程详解

    目录 1. Linux启动过程 2. 启动过程概述 3. 引导加载阶段 4. 内核阶段 4.1 内核加载阶段 4.2 内核启动阶段 5. 早期的用户空间 6. 初始化过程 6.1 SysV init ...

  8. 转-Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)

    http://blog.chinaunix.net/space.php?uid=10167808&do=blog&id=26042   1)BIOS自检2)启动Grub/Lilo3)加 ...

  9. Linux启动过程笔记

    Linux启动过程 1.启动流程(BIOS->MBR:Boot Code->引导GRUB->载入内核->运行init->runlevel) 2./boot/grub/下有 ...

  10. 深入理解Linux启动过程

    深入理解Linux启动过程       本文详细分析了Linux桌面操作系统的启动过程,涉及到BIOS系统.LILO 和GRUB引导装载程序,以及bootsect.setup.vmlinux等映像文件 ...

随机推荐

  1. CF 558A(Lala Land and Apple Trees-暴力)

    A. Lala Land and Apple Trees time limit per test 1 second memory limit per test 256 megabytes input ...

  2. github关联域名,创建个人站点教程终结篇

    1.背景 近期心血来潮,买了一个域名,本来要买fuckgfw的,没想到被抢注了.就拿自己的英文名买了一个.叫做www.garvinli.com.由于知道会有非常多朋友不太清楚整个站点搭建的过程,所以在 ...

  3. .ds_store是什么文件

    .ds_store是什么文件 .DS_Store是Mac OS保存文件夹的自定义属性的隐藏文件,如文件的图标位置或背景色,相当于Windows的desktop.ini. 1,禁止.DS_store生成 ...

  4. Android 使用Retrofit获取JSON数据

    在大家使用网络请求的时候,往往会出现一种情况:需要拿到服务器返回来的JSON字符串,而Retrofit会默认将Json解析,而又没有直接暴露出拿到Json字符串的方法: 今天测接口的时候,发现当数据正 ...

  5. drbd脑裂

    环境: Primary    节点:node1Secondary  节点:node2 DRBD产生脑裂的原因:    (1. 采用HA环境的时候自动切换导致脑裂;    (2. 人为操作或配置失误,导 ...

  6. 紫书 例题 9-10 UVa 1626 (区间dp + 输出技巧)

    当前区间f(i, j)分两种情况,一种是s[i]于s[j]符合要求,那么可以转移到f[i + 1][j - 1] 这样答案只会更小或者相等 第二种是直接分成两个部分, 即f[i][j] = f[i][ ...

  7. 【Henu ACM Round #13 C】 Ebony and Ivory

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 先求出c-bx的所有可能 ->存在map里面 然后枚举y看看ay在不在map里面 在的话就有解. 这样复杂度是\(O(N*lo ...

  8. python编程练习

    python练习之冒泡排序: python代码: #coding=utf-8 if __name__=="__main__": arr=[3,2,1,7,11,4,5,8] pri ...

  9. es68对象的解构赋值

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. MyBatis自动生成代码之generatorConfig配置文件及其详细解读

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE generatorConfiguratio ...