linux内核及系统启动流程

Linux内核

内核概述

GUN/Linux操作系统的基本体系结构

如图,最上面是用户空间(User Space),是用户程序执行的地方;用户空间之下是内核空间(Kernel Space),内核位于此。基于此,GUN C Library(glibc)提供了连接内核的系统调用接口,还提供了在用户空间应用程序和内核之间进行转换的机制,因为内核空间和用户空间的应用程序使用的是不同的保护地址空间。用户空间的进程使用的是自己的虚拟地址空间,而内核则占用单独的地址空间。

内核的核心功能:

  • 系统调用接口(System call interface)

  • 程序管理(Process control)

  • 内存管理(Memory management)

  • 文件系统管理(Filesystem management)

  • 设备的驱动(Device drivers)

linux内核及系统启动流程

Linux内核的特点

  • 支持模块化

  • 支持模块的动态装载和卸载

linux内核的设计原则

单内核体系设计、但充分借鉴了微内核设计体系的优点,为内核引入模块化机制。

内核的组成部分

核心文件:

/boot/vmlinuz-VERSION-release
ramdisk:
    CentOS 5:/boot/initrd-VERSION-release.img
    CentOS 6:/boot/initramfs-VERSION-release.img

模块文件:/lib/modules/VERSION-release/


CentOS 系统启动流程

POST(Power On Self Test):

检测系统外围关键设备(如:CPU、内存、显卡、I/O、键盘鼠标等)是否正常。

加载BIOS(Basic Input and Output System):

根据在BIOS中设置的系统启动顺序来搜索用于启动系统的驱动器(硬盘、光盘、U盘等)。在平时的启动过程中,大多为硬盘启动,基于此,BIOS会读取硬盘的第0磁道的第1扇区(MBR)的内容来引导启动。

BOOT Sequence:

按次序查找各引导设备,第一个有引导程序的设备即为本次启动用到设备

MBR(Master Boot Record):

linux内核及系统启动流程

三部分组成,分别是主引导程序(Bootloader)、硬盘分区表DPT(Disk Partition Table)和magic number。

Bootloader:提供一个菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核。

在Linux中常用的主引导程序有LILO(LInux LOader)和GRUB(GRand Uniform Bootloader),此处以GRUB引导为例。

启动引导程序GRUB:

stage1:stage1的代码直接存在于MBR,是后续引导的入口,无识别文件系统的能力。
stage1.5: MBR之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统,具有识别文件系统的能力。
stage2:加载磁盘分区(/boot/grub/)

启动内核:

当stage2被载入内存执行时,首先会解析grub的配置文件/boot/grub/grub.conf,然后加载内核镜像到内存中,并将控制权转交给内核。而内核会立即作自身初始化。
  • 探测可识别的所有硬件设备

  • 加载硬件驱动程序(可能会借助于ramdisk加载驱动)

  • 以只读方式挂载rootfs

  • 运行用户空间的第一个应用程序:/sbin/init

运行init程序

  • CentOS 5:SysV

  • CentOS 6:Upstart

  • CentOS 7:Systemd

设置默认运行级别

  • CentOS 5:/etc/inittab

  • CentOS 6:/etc/inittab,/etc/init/*.conf

  • CentOS 7:default.target–>/usr/lib/systemd/system/*.target

运行系统初始脚本,完成系统初始化

/etc/rc.d/rc.sysinit

启动内核模块

/etc/modules.conf /etc/modules.d/*

关闭对应级别下应关闭的服务,启动需要启动的服务

/etc/rc.d/rc#.d/*

执行自定义引导程序

/etc/rc.d/rc.local

设置登陆终端

/sbin/mingetty

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

(0)
JeasonJeason
上一篇 2016-08-08 16:15
下一篇 2016-08-08 16:15

相关推荐

  • 洞悉find中的德摩根定律和条件权限perm

    1.德摩根定律 (1)初悉德摩根定律儿 在命题逻辑和逻辑代数中,德·摩根定律(或称德·摩根定理)是关于命题逻辑规律的一对法则。 奥古斯塔斯·德·摩根首先发现了在命题逻辑中存在着下面这些关系: 非(A 且 B) = (非 A) 或 (非 B)非(A 或 B)&n…

    Linux干货 2016-08-16
  • sed简介

    sed是什么 sed是linux文本处理工具三剑客(grep,sed,awk)之一,用来处理文本的流编辑工具。主要用来编辑一个或多个文件,简化重复操作文件。 sed的工作原理和相关概念 sed是行处理的模式,针对文件内容从上往下一行一行地读取。每行的操作步骤如下示意图: sed的语法格式 sed [OPTION]… 'script' …

    Linux干货 2016-10-09
  • 文件的查找与压缩归档

    文件的查找与压缩归档 locate find 压缩与归档 locate 主要用途 查询系统上预建的文件索引数据库 locate – find files by namelocate [OPTION]… PATTERN… locate查询文件时,会去搜索/var/lib/mlocat…

    Linux干货 2016-08-21
  • 没有自动ip解决办法

    用虚拟机下载好centos6.9后,本来想查看ip地址,结果发现没有自动获取ip地址,在网上找了很多方法都不行,问题如下: 用命令ifconfig查看ip地址,发现没有,如下 查看eth0如下 解决办法如下: 1、关闭NetworkManager服务 2、关闭NetworkManager开机启动 3、添加 /etc/sysconfig/network-scr…

    2017-07-16
  • Linux的基本介绍

    1、Linux的发行版分为:Debin,Slackware,Rhel,Redora,CentOS,Gentoo等,其中Rhel(Red Hat Enterprise Linux)使用的是版本比较老的内核,但它的系统比较稳定,一个发行周期是36个月,Fedora使用最新的应用和华丽的节目,但系统比较不稳定,一个发行周期是6个月。 2、Linux的哲学思想是一切…

    Linux干货 2016-02-14
  • PXE批量部署linux操作系统

       前言    在实际生产环境中,有时候我们会碰到为几十上百甚至上千台服务器安装Linux操作系统的需求,如果我们还是常规的去使用移动介质逐台安装,显然是一件低效又令人抓狂的事情,那要安装到何年何月啊?这对于我们追求高逼格形象的技术人员来讲当然是不可以接受的,为此,pxe模式批量部署系统应运而生。   &n…

    Linux干货 2015-05-23