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
下一篇 2017-04-12

相关推荐

  • 为你的网络传输加把锁(OpenSSL)

    互联网形成的初期,更多关注的是设备之间通过网络相互访问功能的实现,我们都知道,两个设备之间要想相互通信,就必需遵循某种协议,于是早期的互联网也出现来众多的协议,比如传输层最著名的协议就是tcp和udp,而应用层比较著名的协议有:http、ftp、pop、smtp、dns、telnet等等,而这些协议这开发初期,更多是关注功能的实现,数据这网络上传输是明文方式…

    Linux干货 2015-12-06
  • DNS高级应用之ACL和View

    一、环境准备:     1、准备三台主机,要求如下      (1) DNS服务器双网卡:eth0:192.168.10.203  eth1: 172.16.2.10       (2)测试机1双网卡: eth0: 172.16.…

    Linux干货 2015-06-01
  • 用户和组相关的配置文件总结

    包括:/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow,/etc/login.defs,/etc/dufaults/useradd,/etc/skel/.*,/etc/gdm/custom.conf,   /etc/passwd 用户信息库文件;用于保存用户账号信息; 各字段含义依次为: 用户名:用户密…

    Linux干货 2016-10-25
  • 利用varnish构建httpd缓存服务器

    varnish如何存储缓存对象:     file: 单个文件;不支持持久机制;     malloc: 缓存在内存中;     persistent:基于文件的持久存储;(此方式不建议使用) vcl:配置缓存系统的缓存机制;【线程中缓存功…

    Linux干货 2016-06-20
  • varnish学习总结

    什么是web cache?   Web缓存是指一个Web资源(如html页面,图片,js,数据等)存在与Web服务器和客户端(浏览器)直接的副本。缓存会根据进来的请求保存输出内容的副本;当下一个请求到来的时候,如果是相同的URL,缓存会根据缓存机制决定是直接使用副本响应访问请求还是向源服务器再次发送请求。       …

    Linux干货 2015-07-15
  • 20160804课堂作业

    grep正则表达式课堂作业 1、用正则表达式表示IP地址 #grep -E "(\<[1-9]|[1-9][[:digit:]]|1[[:digit:]][[:digit:]]|2[0-4][[:digit:]]|25[0-5]\>)\.(\<[[:digit:]]|[1-9][[:digit:]]|1[[:digit:]] [[…

    Linux干货 2016-08-05