Linux启动过程详细介绍

启动第一步--加载BIOS

当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。

启动第二步--读取MBR

众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。

系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0×7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。

启动第三步--Boot Loader

Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。
Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。
我们以Grub为例来讲解吧,毕竟用lilo和spfdisk的人并不多。
系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。

启动第四步--加载内核

根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。
系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。

启动第五步--用户层init依据inittab文件来设定运行等级

内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。
其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式
4:保留,未使用
5:有网络支持有X-Window支持的多用户模式
6:重新引导系统,即重启
关于/etc/inittab文件的学问,其实还有很多

启动第六步--init进程执行rc.sysinit

在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。如果你有兴趣,可以到/etc/rc.d中查看一下rc.sysinit文件,里面的脚本够你看几天的

启动第七步--启动内核模块

具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。

启动第八步--执行不同运行级别的脚本程序

根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

启动第九步--执行/etc/rc.d/rc.local

你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。

启动第十步--执行/bin/login程序,进入登录状态

此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。:)
===
漫长的启动过程结束了,一切都清静了…
其实在这背后,还有着更加复杂的底层函数调用,等待着你去研究…本文就算抛砖引玉了:)

Linux启动过程详细介绍相关推荐

  1. 计算机启动过程详细介绍

    全面认识计算机启动过程 首先让我们来了解一些基本概念.第一个是大家非常熟悉的BIOS(基本输入输出系统),BIOS是直接与硬件打交道的底层代码,它为操作系统提供了控制硬件设备的基本功能.BIOS包括有 ...

  2. Linux 启动过程详解

    随着Linux的应用日益广泛,特别是在网络应用方面,有大量的网络服务器使用Linux操作系统.由于Linux的桌面应用和Windows相比还有一定的差距,所以在企业应用中往往是Linux和Window ...

  3. Dockerfile 文件结构、docker镜像构建过程详细介绍

    [Docker那些事]系列文章 Dockerfile 文件结构.docker镜像构建过程详细介绍 Dockerfile文件中CMD指令与ENTRYPOINT指令的区别 构建Docker镜像指南,含实战 ...

  4. linux 启动过程

    Linux 启动过程详解 下面来详细了解一下 Linux 的启动过程.     Linux 的启动 过程包含了 Linux 工作原理的精髓,      而且在嵌入式的开发过程也非常需要这方面知识的积累 ...

  5. Linux系统用户详细介绍

    Linux系统用户详细介绍 linux 用户(user)管理 . linux有哪些用户?作用 用户组(grop) 用户相关配置 linux 用户(user)管理 人 名字 身份证 linux 名字 0 ...

  6. uClinux 启动过程详细分析

    uclinux启动的详细过程有着诸多的信息可以给我们巨大的启发,我们在这里讨论的就是要对这些信息做一个具体细致的分析,通过我们的讨论,大家会对uclinux启动过程中出现的.以前感觉熟悉的.但却又似是 ...

  7. Linux启动过程学习

    该学习过程是一个Linux从主引导记录到第一个用户空间程序的指导. 启动一个Linux系统的过程包含一系列步骤.但是无论你是启动一个标准的X86桌面或嵌入式PowerPC,大部分流程是相似的.该文章探 ...

  8. linux路由介绍,Linux的路由表详细介绍

    Linux的路由表详细介绍 一 在Linux下执行route命令[root@localhost backup]# route -nKernel IP routing tableDestination ...

  9. shell编程入门 linux解释器原理,Shell编程入门Linux解释器原理详细介绍 使用Shell进行工作的人们对.doc...

    Shell编程入门Linux解释器原理详细介绍 使用Shell进行工作的人们对 Shell编程入门:Linux解释器原理详细介绍使用Shell进行工作的人们对Unix/Linux下的Shell编程都很 ...

最新文章

  1. How good software makes us stupid?
  2. 菜鸟学PureMVC记
  3. 左右躲避障碍-神手ts版本
  4. 信息系统项目管理师-范围管理知识点
  5. Dubbo 3.0 前瞻:重塑 Spring Cloud 服务治理
  6. mybatis plus条件拼接
  7. 【Redis】4.Redis数据存储listsetsorted_set
  8. Microsoft SQL Server学习(二)
  9. 1.[数据结构和算法分析笔记]数组
  10. flask cache
  11. Spring-IOC之BeanDefinitionHolder
  12. 高斯消元(求解n元一次方程组)
  13. 美团面试-2016校园招聘
  14. 星巴克 销售数据分析_星巴克大数据科学家纳米级推广战略顶峰项目
  15. 宝塔面板建立站点无法打开网页解决办法
  16. 并行多核体系结构基础 Yan Solihin 第4章 针对链式数据结构的并行 摘录
  17. Fortran 文件操作
  18. Java简单的GUI考试系统
  19. windows系统开机自动进行NTP时间同步和系统时间修正
  20. Docker是什么?有什么用?

热门文章

  1. Bootstrap从入门到实战---巨幕和旋转图标
  2. 51单片机中断的使用方法
  3. 【华为OD机试真题 C语言】23、按身高和体重排队 | 机试真题+思路参考+代码解析
  4. QT 操作 excel 教程
  5. 原来单词还能这样背.......
  6. 微信支付银行卡限额是多少?
  7. Tabula Rasa中的延迟着色技术
  8. 修复img文件挂载错误
  9. Element UI for Vue 3.0 来了!
  10. 台式计算机设置常亮,电脑常亮不灭怎么设置