CentOS系统启动流程

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

目录

一、启动流程

1.内核设计流派

2.Linux内核特点

3.CentOS 系统启动流程

二、CentOS 5和CentOS 6的启动流程

1.CentOS 5

总结

2.CentOS 6

回顾

参考资料

一、启动流程

      Linux:kernel+rootfs

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

rootfs:根文件系统

            glibc:系统调用的再封装

            库:函数集合, function, 调用接口

                  过程调用:procedure,没返回值

                  函数调用:function,有返回值

P.S. 库也是二进制文件,但没有独立的执行入口

            程序

1.内核设计流派

单内核设计:Linux

                  把所有功能集成于同一个程序

微内核设计:Windows, Solaris

                  每种功能使用一个单独子系统实现

2.Linux内核特点

            支持模块化:.ko  内核对象

            支持模块的动态装载和卸载,e.g.由硬件厂商自行设计的驱动、文件系统模块化、TCP/IP协议栈

 

            组成部分:

                  核心文件:/boot/vmlinuz-VERSION-release

                       ramdisk:

                             CentOS 5:/boot/initrd-VERSION-release.img

                             CentOS 6:/boot/initramfs-VERSION-release.img

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

3.CentOS 系统启动流程

BIOS:Basic Input and Output System基本输入输出系统 固化在ROM或NvRAM里的程序,(P.S. 计算机整个地址空间由ROM+RAM组成)其执行的功能有

      ①加载并读取位于主板南桥芯片组里的CMOS里的电脑配置信息

②接着进行POST(Power-On Self Test):加电自检

③然后根据BOOT Sequence:系统引导加载次序(按次序查找各引导设备,第一个有引导程序的设备即为本次启动用到设备)从启动设备中读取MBR(主引导记录)

在MBR中存储了bootloader、分区表、BRID

bootloader:引导加载器,程序,占用446个字节

                       windows:ntloader

                       Linux:

                             LILO:LInux LOader

                             GRUB:GRand Uniform Bootloader  统一引导加载器

                                   GRUB 0.X:GRUB Legacy

                                   GRUB 1.x:GRUB2

分区表:占用64个字节,每个主分区或扩展分区占用16个字节,如果16个字节中的第一个字节为0x80,则表示该分区为激活的分区(活动分区),且只允许有一个激活的分区

BRID(boot record ID):MBR最后的2个字节,它固定为0x55AA,用于标识该存储设备的MBR是否是合理有效的MBR,如果bios读取MBR发现最后两个字节不是0x55AA,就会读取下一个启动设备

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

MBR:

            446:bootloader

            64:fat  磁盘分区表

            2:55AA    有效标志

GRUB:

            bootloader:1st stage

1.5阶段的代码位于MBR随后的一段空间,这样就可以找到所在分区所需的驱动

                        disk:2nd stage

kernel:

                  自身初始化:

                       探测可识别到的所有硬件设备

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

                       以只读方式挂载根文件系统

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

 

                       init程序的类型:

                             SysVinit, CentOS 5

                                   配置文件:/etc/inittab

                             Upstartinit, CentOS 6

                                   配置文件:/etc/inittab, /etc/init/*.conf

                             Systemdsystemd, CentOS 7

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

                       ramdisk:

      内核要装载根文件系统,内核本身可能无法驱动根文件系统所要用到的设备(因为驱动程序在根文件系统/lib/modules之上),借助ramdisk,可完成对所需要的驱动程序的加载,加载完驱动程序后即可装载真正的根文件系统,之后做根切换

内核中的特性之一:使用缓冲和缓存来回事对磁盘上的文件访问

                                   ramdisk --> ramfs

                       CentOS 5:initrd,  由工具程序:mkinitrd生成

                       CentOS 6:initramfs,由工具程序:mkinitrd, dracut生成

系统初始化:

POST --> BootSequence (BIOS) --> Bootloader(MBR) --> kernel(ramdisk) --> rootfs(只读) --> init

二、CentOS 5和CentOS 6的启动流程

      /sbin/init

1.CentOS 5

运行级别:为了系统的运行或维护等应用目的而设定

            0-6:7个级别

                  0:关机

                  1:单用户模式(root, 无须登录), single, 维护模式

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

                  3:多用户模式,正常模式;文本界面

                  4:预留级别;可同3级别

                  5:多用户模式,正常模式;图形界面

                  6:重启

默认级别:

                  3或5

切换级别:

                  init #

查看级别:

                  runlevel

                  who -r

      配置文件:/etc/inittab

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

            id:runlevel:action:process

                  action:

                       wait:切换至此级别运行一次;

                       respawn:此process终止,就重新启动之;

                       initdefault:设定默认运行级别;process省略;

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

                       ...

id:3:initdefault:

si::sysinit:/etc/rc.d/rc.sysinit

            l0:0:wait:/etc/rc.d/rc 0

            l1:1:wait:/etc/rc.d/rc 1

            ...

            l6:6:wait:/etc/rc.d/rc 6

P.S. rc 0 --> 意味着读取/etc/rc.d/rc0.d/

K*:K##*:##运行次序;数字越小,越先运行;数字越小的服务,通常为依赖到别的服务

S*:S##*:##运行次序;数字越小,越先运行;数字越小的服务,通常为被依赖到的服务

 

            for srv in /etc/rc.d/rc0.d/K*; do

                  $srv stop

            done

 

            for srv in /etc/rc.d/rc0.d/S*; do

                  $srv start

            done

chkconfig命令

查看服务在所有级别的启动或关闭设定情形:

chkconfig [--list] [name]

            添加:chkconfig --add name

SysV的服务脚本放置于/etc/rc.d/init.d (/etc/init.d)

#!/bin/bash

#

                  # chkconfig:LLLL nn nn

删除:chkconfig --del name

            修改指定的链接类型:chkconfig [--level levels] name <on|off|reset>

                             --level LLLL:指定要设置的级别;省略时表示2345

P.S. 正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d一个服务脚本,而是指向了/etc/rc.d/rc.local脚本;因此,不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local文件中

            tty1:2345:respawn:/usr/sbin/mingetty tty1

            tty2:2345:respawn:/usr/sbin/mingetty tty2

            ...

            tty6:2345:respawn:/usr/sbin/mingetty tty6

mingetty会调用login程序

/etc/rc.d/rc.sysinit:系统初始化脚本

            ①设置主机名

            ②设置欢迎信息

            ③激活udev和selinux

            ④挂载/etc/fstab文件中定义的文件系统

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

            ⑥设置系统时钟

            ⑦激活swap设备

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

            ⑨激活lvm及software raid设备

            ⑩加载额外设备的驱动程序

             清理操作

总结

/sbin/init --> (/etc/inittab) --> 设置默认运行级别 --> 运行系统初始脚本、完成系统初始化 --> 关闭对应级别下需要关闭的服务,启动需要启动服务 --> 设置登录终端

2.CentOS 6

      init程序为:upstart, 其配置文件:

            /etc/inittab, /etc/init/*.conf

注意:/etc/init/*.conf文件语法 遵循 upstart配置文件语法格式;

            启动系统时,设置其运行级别1:

博客作业:系统启动流程

回顾

CentOS 6启动流程

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

 

参考资料:

①马哥随堂笔记

②《鸟哥的Linux私房菜-基础篇》

注:诚恳欢迎读者对本文提出批评意见,若发现存在错误,我定第一时间修改。如果读者觉得文章对您有帮助,欢迎点赞鼓励一下哟٩(๑❛ᴗ❛๑)۶。

CentOS 7 系统启动流程和服务控制systemd 系统启动和服务控制一、启动过程与CentOS6的区别1、引导方式2、初始化程序3、运行级别二、服务控制1、概述2、配置文件3、systemd单元4、systemd服务管理1、服务管理命令2、服务的配置文件解析3、其他命令 一、启动过程 开机自检:开机以后,根据bios的设置对cpu、内存、显卡、键盘等设备进行初步检测,并初始化硬件,根据启动顺序移交控制权,一般为硬盘 MBR引导:硬盘根据MBR的设置,和引导信息调用启动菜单grub2 GRUB2菜单:引导装在程序,显示启动菜单给用户选择,并根据所选项加载l 阅读详情

相关推荐

CentOS系统启动流程详解

引导程序是一个特殊的软件,它负责加载操作系统内核并将控制权转交给它。在CentOS中,常用的引导程序是GRUB(GRand Unified Bootloader)。CentOS是一种基于Linux内核的操作系统,它采用了一系列的启动过程来初始化系统并准备用户交互环境。下面我们将逐步介绍CentOS系统的启动过程,并提供相应的源代码示例。至此,CentOS系统的启动过程已经完成。在这个阶段,系统会执行一系列的初始化脚本和服务,以准备用户交互环境。内核是操作系统的核心部分,它负责管理系统的资源并提供各种服务。

LogicODER的博客 323

linux第一个用户进程init--upstart

大家在使用ubuntu时,会发现系统中没有文件 /etc/inittab,而这个文件 对于通过sysvinit来启动的系统是非常重要的文件,如果不存在可能会导致系统启动不起来,从这一点来看ubuntu应该是通过另外一种方式启动的系统了,这就是本文所要介绍的主题upstartupstart是一种基于事件通知机制启动相应服务的init进程。主要是为了解决sysvinit机制不能并行启动服务的问题

ITsenlin的专栏 2607

OpenStack服务开机自启动

1 浅析 Linux 初始化 init 系统 第1部分sysvinit: https://www.ibm.com/developerworks/cn/linux/1407_liuming_init1/ 第2部分UpStart: https://www.ibm.com/developerworks/cn/linux/1407_liuming_init2/ 第3部分Systemd: https:

翟海飞 5505

centos中service命令与/etc/init.d的关系以及centos7的变化

centos中service命令与/etc/init.d的关系 service httpd start 其实是启动了存放在/etc/init.d目录下的脚本。 但是centos7的服务管理改规则了。CentOS 7继承了RHEL 7的新的特性,例如强大的systemctl,而systemctl的使用也使得以往系统服务的/etc/init.d的启动脚本的方式就此改变,也大幅提高了系统服务的运行效...

weixin_30872157的博客 482

Centos 7 源码编译安装 mysql

参考地址:https://dev.mysql.com/doc/refman/5.7/en/binary-installation.htmlhttps://blog.csdn.net/weixin_52850476/article/details/122800696 安装方式 优点 缺点 yum rpm 简单、方便 (平时测试可以简单使用) 可定制性查对环境依赖很大,要满足依赖关系,要和rpm编译完成时的环境要一致 glibc MySQL 使用的 glibc 进行开发、glibc 库是一个

D的博客 2932

init系统sysvinitUpStart 简介及chkconfig和service

在liunx下自动启动一些服务需要配置一些参数 chkconfig 在liunx下自动启动一些服务需要配置一些参数。在/etc/rc.d/–有下列目录rc.0, rc.1, rc.2, rc.3, rc.4, rc.5, and rc.6或者rc0.d, rc1.d, rc2.d, rc3.d, rc4.d, rc5.d, and rc6.d.; 还有下列三个文件rc rc.local rc.sys

SunnyDay的专栏 1960

centos系统启动流程及相关

一、 基本概念 库 库就是函数(function)的集合,可以把函数理解为一种功能,它内部是由很多代码段组成的,因此任何一个程序调用函数其实就是调用功能,为了方便调用会给每个函数都起个名字,通常都是通过函数名完成调用的。站在运行的角度看库,其实它也是二进制程序,唯一跟/bin目录下的程序不同的就在于库文件没有自我独立的执行入口,也就是说库要想运行起来必须要别的程序调用才行,因此无法单独执行,但可以作为有单独执行入口程序的代码片段,与别的程序一块存活,用户空间的库以.so结尾,shared object 头

个人博客:busyops.com 2352

centos7 启动流程图_CentOS系统启动流程

虽然知识很基础,但是对于我们理解linux的工作机制是有帮助的。因为在CentOS 5、CentOS 6以及CentOS 7使用的初始化程序init各不相同,虽然CentOS 6和CentOS 7也都有向后兼容,但在工作机制上还是存在一些差异,所以以下主要介绍CentOS 5/6系统启动流程。启动流程图:1.加电自检POS当主板加电后主板会检测CPU是否存在,而后CPU将唤醒并找到位于主板bios...

weixin_39821874的博客 219

由浅入深_CentOS系统启动流程

CentOS系统启动流程 先来说说开机流程,为了方便大家理解,这里由浅入深分为3个部分:简述流程、启动流程思维导图、启动流程详解 简述流程 boot sequenceboot loaderKERNELramdiskrootfsinit/system配置文件/etc/inittab,设置运行级别配置文件/etc/rc.d/rc.sysinit,初始化脚本对应运行级别下的服务POST启动终端 ...

Not Found 404 1154

CentOS系統啟動流程

CentOS系統啟動流程CentOS 5、6系統啟動流程是差不多的,只是用到的init程序不同和配置文件的表現形式不同,但是為了保證兼容性,CentOS 6在組織上盡可能的向後兼容了CentOS 5。CentOS 6啟動流程:POST(加電自檢) --> Boot Sequence(BIOS) --> Bootloader(MBR) --> Kernel(r...

weixin_34283445的博客 79

centos7 启动流程图_centos7系统启动流程

centos7系统启动流程:1.uefi或BIOS初始化,开始post(power on self test)开机自检开机前硬件检查这个过程是开机后,BIOS或UEFI进行硬件检查的阶段,检查内存,硬盘,CPU等硬件信息。2. 加载MBR到内存加载磁盘主引导记录到内存自检硬件没有问题时候,这里以BIOS为例,BIOS将会直接找硬盘的第一个扇区,找到前446字节,将MBR加载到内存中,MBR将告诉程...

weixin_39793105的博客 976

centos7系统启动流程

centos7系统启动流程: 1.uefi或BIOS初始化,开始post(power on self test)开机自检 开机前硬件检查 这个过程是开机后,BIOS或UEFI进行硬件检查的阶段,检查内存,硬盘,CPU等硬件信息。 2. 加载MBR到内存 加载磁盘主引导记录到内存 自检硬件没有问题时候,这里以BIOS为例,BIOS将会直接找硬盘的第一个扇区,找到前446字节,将MBR加载到内存...

weixin_30627381的博客 207

CentOS7系统启动流程:

1.uefi或BIOS初始化,开始post(power on self test)开机自检 2.加载MBR到内存 3.GRUB阶段 4.加载内核和initramfs模块 5.内核开始初始化,使用systemd来代替centos6以前的init程序 (1)执行initrd.target 包括挂载/etc/fstab文件中的系统,此时挂载后,就可以切换到根目录了 (2)从initramf...

weixin_30786657的博客 1124

Centos系统启动流程

一.内核空间启动流程 1.Linux系统的组成部分 1.Linux系统组成 1)内核 1.内核功能:进程管理,内存管理,网络协议栈,文件系统,驱动程序,安全功能 2.进程间通信IPC(Inter process communication)分类 1)消息队列,semerphor,shm共享内存等 2)socket,不同主机间通信 2)根文件件系统 2.运行中的系统环境分类: 1)内核...

Kasumi_yuki的博客 844

CentOS7系统启动流程

CentOS7系统启动流程

weixin_55978191的博客 442

CentOS系统启动流程及GRUB文件说明

转自:http://www.centoscn.com/CentOS/Intermediate/2013/1024/1964.html CentOS系统启动流程 POST(加电自检):检测硬件 在CPU的控制下,将RAM芯片中的某个程序映射到ROM地址空间,并执行其中的指令完成系统硬件健康状况检查,例如存储设备、网卡、CPU、声卡等硬件设备是否完好。当检查完成后,所有硬件或

勇往直前 1134
上一篇: Linux任务计划、周期性任务执行
下一篇: GRUB
Linux-Web
博客等级 码龄9年 28粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值