CentOS系列开机启动流程

在我们使用Linux操作系统的时候,只要按下电源键,就会出现一些乱七八糟的代码,过一会就会出现登陆界面,那么在这期间系统自己都做了什么?现在就说一下在这这段时间系统做了些什么。

系统初始化流程:                                        POST-->Bootsequence(BIOS)-->Bootloader(MBR)-->Kernel(ramdisk)-->rootfs(readonly)-->/sbin/init()/sbin/init

第一步:加电自检(POST·)

系统通电之后,进行硬件自检,是在电脑CPU的控制下,将RAM芯片中的某个程序映射到ROM地址空间,并完成其中的指令检查硬件是否健康。例如CPU设备,网卡,声卡等设备是否完好。当检查完成后,硬件和基本硬件都没有问题,则开始启动BIOS。

第二步:引导启动 Bootsequence(BIOS)

系统加电自检过程结束后,系统的控制权就转交Bootloader。Bootloader存储于硬盘上,这个时候机器不能获取外部的存储或者网络信息,譬如日期,时间等一些重要的参数都是从CMOS中获取的。说到了CMOS,那么什么是CMOS呢?CMOS全称是Complementary Metal-Oxide
Semiconductor(本意是指互补金属氧化物半导体存储嚣,是一种大规模应用于集成电路芯片制造的原料)是微机主板上的一块可读写的RAM芯片,
主要用来保存当前系统的硬件配置和操作人员对某些参数的设定。硬盘也必须格式成某种格式的文件系统才能在操作系统下存储东西,那么,引导程序想要加载硬盘上的操作系统就必须有支持这个文件系统格式的驱动才行,遗憾的是区区446K的空间并不能做到,因此在MBR随后的扇区中
会有这个驱动程序,就会去第二段64位字节中去寻找这个驱动,而剩下的两个字节就是校验字节,若返回值为55AA,则有效。在Linux中通常在/boot/vmlinuz-版本-发型号,然后内核就被解压加载到内存中了。

第三步:加载kernel

将内核导入后,系统进入自身初始化的环节,首先会探测可识别的所有硬件设备,然后就要加载硬件驱动程序(可能会借助randisk),接下来会以只读的方式挂载根文件系统,最后会运行用户空间的第一个程序(/sbin/init)

init程序在目前centos各发行版的类别又不一样。

在centos5上:Sysv init

配置文件:/etc/initab

在centos6上:Upstart

配置文件:/etc/initab    /etc/init/*.conf

在centos7上:systemd

配置文件:/usr/lib/systemd/system/,    /etc/systemd/system

randisk又是什么呢

其是linux内核的特性之一:使用缓存来加速对磁盘上的文件访问

centos5:initrd    工具程序:mkinitrd

centos6、7:initramfs    工程程序:dracut,mkinitrd

第四步:引导加载器(GRUB加载)

对于grub,它包含了文件系统的知识。他能从ext2或ext3文件系统中加载linux内核。一旦bootloader完成启动加载器阶段,并能找到引导程序的位置,第一段启动加载引导程序到内存中开始第二段。GRUB引导加载器阶段通过将本来两段的bootloader转换成三个阶段的bootloader。

stage1:BIOS加载mbr里面的GRUB,因为只有446个字节,不能实现太多的功能,所以就要加载滴1.5个阶段的文件。

stage1.5:加载识别文件系统的程序,来识别文件系统,不加载就无法识别文件系统,找不到boot,就不能把boot分区设置成LVM。

stage2:开始寻找内核并启动内核

第四步:加载kernel

geub把内核加载到内存后运行,内核一般都是压缩的,首先就要解压。内核加载到内存的时候,文件系统还不能使用,他使用的是Bootloader加载进内存时的initramfs。系统将解压后的内核放置在内存中,调用函数来启动一系列的初始化以及各种设备。

第五步:读取initrd/etc/inittab配置文件

配置文件/etc/inittab

每一行定义一种action以及与之对象的process

id:一个任务的标识符

runlevel:在那些级别启动此服务

action:在什么条件下启动此任务

process:任务

action:

wait:等待切换至此任务所在的级别时执行一次

respawn:一旦此任务终止,就自动重新启动之

initdefault:设定默认运行级别,此时,process省略

sysinit:设定系统初始化方式,此处一般指定/etc/rc.d/rc.sysinit脚本

K*:要停止的服务:K##,优先级,数字越小,越是优先关闭;依赖的服务先关闭,而后关闭被依赖的

S*:要启动的服务:S##,优先级,数字越小,越是优先启动;被依赖的服务先启动,而依赖的服务后启动

chkconfig:管控/etc/init.d/每个服务脚本在各个级别下的启动或关闭状态

查看:chkconfig --list name

添加:chkconfig --add name

删除:chkconfig --del name

修改指定的连接类型:

chkconfig [--level levels] name <on|off|restat>

--level levels:指要控制的级别:默认为2345

在内核加载完后,启动的第一个进程是/sbin/init,init进程会读取/etc/initab,这个进程最主要的功能是准备软件环境,所有的动作都在/etc/initab中配置,执行initab来设定系统的运行默认级别,并用init #来改变系统默认级别。

系统的级别:0--7

0:关机,shutdown

1:单用户模式。root用户,无需认证,维护模式

2:多用户模式:会启动网络功能,但不会启动NFS,维护模式

3:多用户模式:完全功能模式,文本界面

4:预留级别:目前无特别使用目的,但习惯以三级别使用

5:多用户模式:完全功能模式,图形界面

6:重启:reboot

第六步:启动系统服务/etc/rc.d/rc/sysinit

执行/etc/rc.d/rc/sysinit的初始化会做很多的设置:

1:设置主机名

2:设置欢迎信息

3:激活udev和selinux

4:挂载/etc/fstab文件中定义的所有文件系统

5:检测根文件系统,并以读写方式重新挂载根文件系统

6:设置系统时钟

7:根据/etc/sysctl.conf文件设置内核参数

8:激活LVM和软RAID设备

9:激活swap设备

10:加载额外设备的驱动程序

11:清理操作

OST --> Boot Sequence(BIOS) --> Boot Loader (MBR) --> Kernel(ramdisk) --> rootfs --> switchroot --> /sbin/init -->(/etc/inittab, /etc/init/*.conf) --> 设定默认运行级别 --> 系统初始化脚本 --> 关闭或启动对应级别下的服务 --> 启动终端

时间: 2025-01-02 00:04:26

CentOS系列开机启动流程的相关文章

centos系列的启动流程及基础知识点

下面介绍的是基于Intel x86架构的CentOS系列操作系统的启动流程. 1.Linux系统基础简介 (1).Linux[系统组成]:内核+应用程序 或 内核+rootfs (2).Linux的[运行环境]:内核空间 --------内核进程占用CPU和内存资源总和 用户空间 --------应用程序占用CPU和内存资源总和 (3).[内核]主要具有6个[功能]:进程管理.文件系统管理.内存管理.网络协议管理.驱动管理.内存功能. 对于内核,有两种设计:单内核.微内核.单内核,是所有功能聚集

CentOS 6开机启动流程实验篇

CentOS 6开机启动流程实验篇 centos 系统的启动流程 grub 破坏Linux的核心文件再修复体验系统启动流程 CentOS 6开机启动的具体详情请参见理论篇! 了解了系统启动的基本流程,以下我们通过"破坏式实验",即破坏系统启动过程中的一些关键环节,使系统无法启动,然后我们再通过修复这些文件使得系统正常重启,进而体验Linux系统的启动流程,这些关键环节包括破坏grub三个stage(stage1.stage1-5.stage2) 中的任何一个阶段,甚至是整个grub;

CentOS 6开机启动流程理论篇

CentOS 6开机启动流程理论篇 centos 系统的启动流程 grub 破坏Linux的核心文件再修复体验系统启动流程 概述 任何系统启动的第一步必然是加电,然后计算机硬件会主动地读取BIOS来加载硬件设备信息并检测,之后系统会主动地读取第一个有引导程序的设备,该引导程序(grub)可以指定使用哪个内核来启动,并将其加载至内存当中运行,同时内核还要加载其他硬件设备以及对应的驱动程序,来例主机各个组件开始运行,等所有硬件设备加载完后,系统就真正地启动了,稍后系统会操作一些外部程序开始准备软件的

#23 centos5(RHEL)系列操作系统的启动流程、与命令mkinitrd、dracut的使用

centos(RHEL)系列操作系统的启动流程:Intel x86兼容架构: Linux的系统组成:内核 + 应用程序  GUN/Linux:单纯的指Linux内核: 从硬盘存储和启动操作系统的角度: Linux的系统组成:内核 + 根文件系统(rootfs) 内核功能:进程管理,文件系统管理,内存管理,网络协议,驱动程序,安全功能,... Linux系统的系统运行环境可以分为两部分: 内和空间:内核代码(系统调用) 就是内核进程占用的CPU和内存资源的总和: 用户空间:应用程序(进程或线程)

CentOS开机启动流程简介

我们都知道按下电脑电源键后,屏幕上会一闪而过很多信息,然后显示登录界面,然后输入用户名,密码就可以畅享网络世界了.那么这中间到底发生了什么呢,今天就让我们来简单探讨一下CentOS的简易版开机启动流程吧. 第一阶段:通电自检过程 我们都知道电脑所有数据指令都是在内存上才能被cpu处理的吧,我们还知道内存在断电后其上面的所有数据都会丢失吧,那么开机的时候内存应该是没有东西的吧,那上面都不能干了,更别说启动一个操作系统了,其实啊,我们内存并不只是我们常见的那个内存卡,很多硬件都会映射一段内存到cpu

(转)CentOS 7系统详细开机启动流程和关机流程

CentOS 7系统详细开机启动流程和关机流程 原文:http://blog.csdn.net/yuesichiu/article/details/51350654 名称 bootup - 系统启动流程 描述 在系统启动过程中要涉及多个不同的组件.按下开机按钮后,首先BIOS/UEFI做最基本的硬件自检与初始化, 然后加载预设/手动选择的磁盘/网络上的引导加载器(例如GRUB2),引导加载器进一步从磁盘/网络上加载操作系统内核(例如Linux). 对于Linux来说,内核将会(可选的)解压一个i

Linux之Centos系统的启动流程

概述 了解系统的启动流程,有助于我们了解Linux系统上的一些工作原理,有助于我们深入的理解一个系统的运作方式,那么本篇就以CentOS6系统为例,介绍一下有关Linux系统启动相关的内容,分为一下几个部分 1.Linux系统的一些基础概念 2.CentOS6上的启动流程概述 第一章 Linux系统的一些基础概念 Linux系统的组成部分:内核(kernel)+根文件系统(rootfs) rootfs:程序和glibc(GNU发布的libc库)   库:   函数集合,function,调用接口

Linux CentOS 5/6启动流程

CentOS 5/6启动流程 1.加电自检(post) 按开机电源后通过CMOS芯片的BIOS系统检测系统硬件是否正常 2.查找系统引导2.1 通过BIOS中的引导设置BOOT Sequence按次序查找引导程序,通过第一个有引导程序的设备启动: 2.2 加载bootloader,通过bootloader选择需要加载的内核版本,将用户选择的内核版本加载到内存中特定的位置,解压展开,然后将控制全转交给内核 (1)MBR引导程序   446字节:bootloader  64字节:分区表  2:结束标

CentOS 6.X启动流程

CentOS 6.X启动流程 /boot分区 启动引导程序是默认可以识别boot分区的.因此在系统还无法加载硬盘的时候,boot分区是可以识别的! initramfs内存文件系统 CentOS 6.x中使用initramfs内存文件系统取代了CentOS 5.x中的initrd RAM Disk.他们的作用类似,可以通过启动引导程序加载到内存中,然后加载启动过程中所需要的内核模块[用来模拟真正的Linux文件系统结构,详细信息如下],比如USB.SATA.SCSI硬盘的驱动和LVM.RAID文件