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)
上一篇 2017-04-11 17:22
下一篇 2017-04-12 10:28

相关推荐

  • JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解

    摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。     现实企业级Java开发中,有时候我们会碰到下面这些问题: Out…

    2017-08-17
  • linux网络配置

    主要内容: ip地址以及子网划分 路由基本概念 网络配置工具:ifconfig,ip,netstat使用 网卡配置文件及修改 IP地址: 它们可唯一标识 IP 网络中的每台设备 v  每台主机(计算机、网络设备、外围设备)必须具有唯 一的地址 v IP地址由两部分组成:   &n…

    Linux干货 2016-09-07
  • N25-第一周 总结

    一、描述计算机的组成及其功能     CPU:包括运算器、控制器、寄存器、缓存,计算枢纽,网络的包处理、磁盘读写、数学计算等。     内存:加载数据,提高计算速度,程序被加载到内存成为进程运行。     输入:键盘、鼠标     输出:打印机、显示器 二、按系列罗列linux的…

    Linux干货 2016-12-05
  • 姗姗来迟的第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。     [root@www /]# cp -r /etc/skel /home/tuser1 &&&nbsp…

    Linux干货 2016-11-30
  • 一个PHP程序员学习运维的转型

         我是一位PHP开发工程师,平时负责前端、后端以及服务器端的工作,但是称不上是个牛逼的程序员。网上热烈讨论一则传闻,“全栈工程师”(Full Stack Engineer),要求应征者对开发堆栈的每个方面都有所掌握。那究竟何为 “全栈工程师”呢?从字面上来理解,全栈工程师必须熟悉开发堆栈的每一个层次,或者至少熟悉绝大多数…

    Linux干货 2017-04-02
  • N22-第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。      2、编辑/etc/group文件,添加组hadoop。 3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为…

    Linux干货 2016-09-05