linux 系统启动流程探讨

linux系统启动流程:

linux系统启动流程,按层次分的话,可以分为内核空间的启动与用户空间的启动。

下面先说说内核空间的启动流程。

一个linux要跑起来,在最简陋的情况下,必须有:kernel , lib ,application

kernel功能:加载驱动程序,内存管理,进程管理,文件系统,网络管理,安全管理,glibc

库: 是一个函数的集合,每个库文件是一个依赖于其他应用程序才能运行起来的代码片段。

库头文件:一个库中有多少函数,不同函数之差接受的参数,类型不同,这些特点需要有一个文件来对其进行描述,这种对库中的函数的描述性文件就称为库文件。

application:就是平时我们用的二进制程序了

要了解linux的启动流程,就要先了解下面的几个概念。

内核的设计流派:
单内核:紧密,效率高,牵一发而动全身。一个小的故障全局崩溃。

微内核:离散设计,效率相对低,子系统故障不会影响全局。

linux为单内核。

虽是单内核,但却充分吸引微内核设计思想,将能选择的功能,统统做成功能模块。即使是内核,自己也被做成模块。一般为.ko结尾的文件。ko即kernel object。 用户空间的功能模块称为share object,以.so结尾

支持模块的在线装卸。
内核组成部分:
1:核心文件:/boot/vmlinuz-version-release
2: 模块文件: /lib/modules/version-release

ramdisk: 基于内存的磁盘。将硬盘中的mbr载入内存,得到文件系统驱动程序,加载grub。进入grub菜单。

内核空间系统启动流程解析:

post –> bios –> bootloader(引导从哪块硬盘加载) –> mbr –> 加载stage2中的grub —> kernel –> init

post: poweron self test  加电自检。自检的过程由主板上的rom芯片自己定义。rom芯片就是传说中的cmos。

bios : base input output system. 也是装在rom中的一个简单的程序,主要作用就是按用户设置的引导顺序,从指定的设备加载写有bootloader的设备。

mbr:加载指定的设备后,根据mbr内容中的stage1的指向,得知stage2的位置,并且加载stage1_5到内存中,得到stage2所在硬件设备的驱动程序,加载驱动后能读到stage2的内容,即grub。

grub: grand uniform bootloader 。统一加载器。grub会提供一个菜单,给用户选择要启动的操作系统的kernel。

kernel: kernel加载到内存中后,自解压,自初始化,探测各硬件后装载硬件的驱动程序,以只读方式挂载根文件系统,并启动init进程。

至此,内核空间的启动完成了。剩下的就是用户空间的启动了。
请看下回分解

原创文章,作者:old_radish,如若转载,请注明出处:http://www.178linux.com/73203

(0)
old_radishold_radish
上一篇 2017-04-11 17:22
下一篇 2017-04-12 10:28

相关推荐

  • centos系统启动流程详解

    centos系统启动流程详解 CentOS启动流程: POST 加电自检 主板上有一个ROM芯片,有只读程序,CPU被设计为一旦通电就会自动去找ROM芯片上的程序并运行,即检查各种硬件设备是否存在。 BootSequence 引导过程 加电自检后按BIOS中设定的次序查找各引导设备,第一个有引导程序的设备即是本次启动用到的设备 MBR(BootLoader)…

    Linux干货 2017-09-04
  • Linux中正则表达式和grep的使用

    正则表达式在Linux经常配合grep,sed和awk等用于搜寻关键字。正则表达式分为正则表达式和扩展正则表达式: 一、正则表达式 1.1 元字符: .:匹配任意字符    []:匹配[]中的任意一个字符 [^]:匹配[]以外的任意字符 [:alpha:]大小写英文字母 [:digit:]:十进制数字 [:xdigit…

    Linux干货 2017-04-08
  • 内核参数修改 内核编译 第14天

    Linux内核:单内核,模块化 内核的某些模块 编译进内核本体 [*] 编译成内核模块 [M] 不选择使用     [ ] 内核的组成部分 /boot/vmlinuz-VERSION /lib/modules/VERSION/ *.ko 模块间有可能有依赖关系 内核模块管理 lsmod:显…

    Linux干货 2016-01-18
  • MAN手册各章节功能及快捷键

    前言: man是manual的简称,中文说法可以是手册。而man手册分为不同的各个章节,每个章节保存这不通类型的手册。 各个章节功能:    Section 名称      说明 1 用户命令 可由任何人启动的 2 系统调用 即由内核提供的函数 3 例程   …

    Linux干货 2016-10-17
  • 基于Redis的开源分布式服务Codis

    Redis在豌豆荚的使用历程——单实例==》多实例,业务代码中做sharding==》单个Twemproxy==》多个Twemproxy==》Codis,豌豆荚自己开发的分布式Redis服务。在大规模的Redis使用过程中,他们发现Redis受限于多个方面:单机内存有限、带宽压力、单点问题、不能动态扩容以及磁盘损坏时的数据抢救。 Redis通常有3个使用途径…

    Linux干货 2015-02-25
  • Samba服务

    一 服务端配置 1 安装所需软件 [root@centos7 ~]# yum install samba samba-common -y samba主要提供SMB服务所需的各项服务程序、相关的文件及其他和Samba相关的设置等 samba-common提供服务端和客户端都会用的的数据,包括主配置文件、语法检查等 2 添加Samba用户 添加smb1、smb2…

    Linux干货 2017-06-13