大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-基础篇的第59篇文章

文章目录

  • 前言
  • centos 6的启动过程
    • 1. 加载BIOS硬件信息
      • a) 通电自检
      • b) MBR引导
    • 2. grub引导
    • 3. 加载(内核)kernel
    • 4. 加载init进程
    • 5. 读取/etc/inittab配置文件
    • 6. 执行 /etc/rc.d/rc.sysinit脚本
    • 7. 执行/etc/rc.d/rc脚本
    • 8. 启动mingetty进程,等待用户登录系统
    • 9. 登录系统,启动完成
  • 启动相关的配置文件
    • 1. boot目录
    • 2. 运行级别
  • 总结

前言

七月新秋风露早,今天我们一起聊聊Linux启动过程及相关的配置文件。 我们以centos6为例,一起来研究一下它的启动过程

centos 6的启动过程

centos6的启动过程,包含以下几个部分

  1. 加载BIOS硬件信息
  2. grub引导
  3. 加载kernel
  4. 加载init进程
  5. 读取/etc/inittab配置文件
  6. 执行 /etc/rc.d/rc.sysinit脚本
  7. 执行/etc/rc.d/rc脚本
  8. 启动mingetty进程,等待用户登录系统
1. 加载BIOS硬件信息
a) 通电自检

系统通电之后,主板的BOIS 运行POST(Power on self test)代码,检测系统外围的一些设备,比如: cpu,内存,显卡,IO,键盘鼠标等。

b) MBR引导

检测通过后,根据BIOS里boot设置的(光驱,硬盘,网盘)启动顺序,搜索相应的启动驱动器,并获取第一个启动设备的代号。读取第一个启动设备的MBR的引导加载程序(lilo,grub,spfdisk)启动信息,从MBR中加载启动引导管理器(grub),并运行该启动引导管理,进入grub启动引导阶段。

注意: MBR引导记录: 用于引导磁盘空间小于2T的空间
GPT引导记录: 用于引导磁盘空间大于2T的空间

2. grub引导

所谓的grub引导,就是读取MBR的boot Loader

MBR的硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPT(Disk Partition table)和硬盘有效标志(55AA)

备注: 为什么MBR分区表,只能分四个主分区?

注:磁盘默认一个扇区大小为:512字节。MBR由以下3部分组成:

第一部分是:主引导程序(boot loader)占446个字节。主引导程序,它负责从活动分区中装载,并运行系统引导程序。

第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。每个分区表项长16个字节,164=64字节。为分区项1、分区项2、分区项3、分区项4。64字节只存4个分区表。
第三部分是MBR有效标识位,占2个字节,固定为55AA。如果这个标志位0xAA55,就认为这个是MBR。
所以:16
4+446+2=512

3. 加载(内核)kernel

依据 boot loader 的设定,到引导分区加载 Kernel ,Kernel 会开始侦测硬件并加载驱劢程序;

4. 加载init进程

在硬件驱动成功后,Kernel 会主动执行 init 程序,而 init 会取得 run-level 信息;
init是执行的第一个程序,所以他的进程编号pid =1 ,其他的进程都是从它衍生出来的,都是它的子进程。
前面我们有提到过,对于孤儿进程,一般是送到init进程来处理。

5. 读取/etc/inittab配置文件

init 执行 /etc/rc.d/rc.sysinit 文件来准备软件执行的作业环境 (如网络、时区主机名,selinux等);

6. 执行 /etc/rc.d/rc.sysinit脚本

init 执行 run-level 下各个服务并启动 (script 方式);

脚本的内容是:

  • 获取网络环境和主机类型
  • 测试挂载/proc /sys /usb 等装置
  • 决定是否启动selinux
  • 周边设备的侦测
  • 读取.etc.sysctl.conf 档案中的设定值
  • 设定系统时间
  • 设定终端字形
  • 设定RAID,LVM功能
  • 使用fsck检测文件系统
  • 清除开机中的暂存档案 将开机相关信息载入/var/log/dmesg档案中
7. 执行/etc/rc.d/rc脚本

init 执行开机后自动运行脚本 /etc/rc.d/rc.local 文件;
这个脚本主要是一些自动以的开机启动程序,如果你想开启时启动什么内容,可以在里面写

可以看到这里创建了一个 /var/lock/subsys/local 这个文件的创建只是为了证明rc.local 这个脚本已经执行过了,目的在于避免这个脚本重复执行。

在系统里会有一个star()的函数来判断文件是否已经创建,如果已经创建,后面读取的时候就不会在去重建,避免系统重复启动。

8. 启动mingetty进程,等待用户登录系统

所有的服务都运行成功后,接下来进入登录用户系统的操作, 返回init , 这时候初始环境都已经配好了, init 打开虚拟终端机控制程序 mingetty 来启动 login 程序,最后就等待用户登入

虚拟终端由 mingetty程序产生的:
语法:
mingetty [–long-hostname][–noclear][tty]

9. 登录系统,启动完成

当我们看到mingetty的登录界面的时候,就可以输入用户名和密码了。
login会接收mingetty传来的用户名作为用户名的参数,先判断用户名不是root,且存在/etc/nologin文件,然后输出nologin的文件内容并退出,这样做一般是为了防止非root用户登录。
之后就可以根据passwd ,和shadow来验证账号的信息。

启动相关的配置文件

1. boot目录
[root@ecs-c13b ~]# ls /boot
config-2.6.32-696.el6.x86_64
config-2.6.32-754.27.1.el6.x86_64
efi
grub
initramfs-2.6.32-696.el6.x86_64.img
initramfs-2.6.32-754.27.1.el6.x86_64.img
initrd-2.6.32-754.27.1.el6.x86_64kdump.img
symvers-2.6.32-696.el6.x86_64.gz
symvers-2.6.32-754.27.1.el6.x86_64.gz
System.map-2.6.32-696.el6.x86_64
System.map-2.6.32-754.27.1.el6.x86_64
vmlinuz-2.6.32-696.el6.x86_64
vmlinuz-2.6.32-754.27.1.el6.x86_64

查看grub的配置文件

(图片有注释)

2. 运行级别

运行级别一共有6个:
 # 0 - 停机(千万别把initdefault设置为0,否则系统永远无法启动)
  # 1 - 单用户模式
  # 2 - 多用户,没有 NFS
  # 3 - 完全多用户模式(标准的运行级)
  # 4 – 系统保留的
  # 5 - X11 (x window)
  # 6 - 重新启动 (千万不要把initdefault 设置为6,否则将一直在重启 )

总结

centos6的启动和centos7有点区别,但大同小异,下一篇文章我们来讨论centos7的启动过程。

如果是面试问到启动过程:

加点自检-内核引导-运行init-系统初始化-建立终端-用户登录系统

我是高胜寒,一个在教培行业,不忘初心的人,欢迎点赞收藏,我们下篇文章再见!

【linux】循序渐进学运维-基础篇-Linux系统启动原理相关推荐

  1. 【linux】循序渐进学运维-基础篇-linux运维级别

    本文是循序渐进学运维-基础篇系列的第43篇文章 文章目录 Linux的运行级别 运行级别的启动原理 1. 在目录/etc/rc.d/init.d下有许多服务器脚本程序,一般称为服务(service) ...

  2. 【linux】循序渐进学运维-基础篇-Linux系统目录

    我们都知道,windows下要查看文件需要进入到相应的盘符,比如C盘,D盘,E盘,然后进去进入文件目录. Linux里面也一样,也有自己的目录结构,只不过在windows是将分区映射成一个盘符,而Li ...

  3. 【linux】循序渐进学运维-基础篇-Linux文件管理命令

    文章目录 前言 绝对路径和相对路径 常用文件管理命令 1. 创建文件和文件夹 2. 创建目录命令: mkdir 3. 删除文件 rm 4. 复制和移动:cp和mv 总结: 前言 本文我们主要来聊聊文件 ...

  4. 【linux】循序渐进学运维-基础篇-进程管理

    文章目录 Linux进程 1. 进程的概念 2. 进程的属性 3. 关于僵尸进程 Linux管理的基本命令 1. ps命令 1) 常用参数: 2)常用组合 a) ps -aux b) ps-uax输出 ...

  5. fdisk 分区_【linux】循序渐进学运维-基础篇-分区命令fdisk

    大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-基础篇的第47篇文章. 本文我们来讨论一下fdisk命令的使用,使用fdisk可以做分区管理. 1. 命令概述: fdisk 作用: 磁盘分区 ...

  6. 【linux】循序渐进学运维-基础篇-文件的软硬链接

    文章目录 前言 软硬链接的介绍 1. 硬链接 2. 软连接 案例实战 1) 硬链接原文件删除不会影响链接文件的正常使用 2) 硬链接不能跨分区进行创建 3) 创建软连接,测试删除原文件后,软连接是否还 ...

  7. 【linux】循序渐进学运维-基础篇-修复文件系统实战

    文章目录 前言: 实验环境 解决方案 1) 系统出现只读的情况的解决方案 2) 系统文件受损,可以使用fsck命令 a. 创建一个1G的分区 b. 对分区进行格式化 c. 破坏文件系统并重新挂载 d. ...

  8. 【linux】循序渐进学运维-基础篇-netstat命令详解

    大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-基础篇的第62篇文章 文章目录 前言 一. netstat命令详解 作用 1. 常用参数 2. 命令使用 1) 参数作用详解 2) 网络连接状 ...

  9. 【linux】循序渐进学运维-基础篇-mount

    文章目录 1. mount 命令的讲解 1)作用: 用来挂载文件系统的命令 2)基本格式为: 3)常见的文件系统类型有: 4)查看当前系统都支持哪些操作系统 5)挂载选项详解 6)与mount相关的文 ...

最新文章

  1. python导入模块报错syntaxerror_SyntaxError: invalid syntax python错误解决方法
  2. 选修课计算机网络技术,2020智慧职教网络选修课计算机网络技术基础答案完整满分章节测试答案...
  3. Jmeter+ForEach控制器+BeanShell取样器+BeanShell PostProcessor爬取网站信息储存csv
  4. python做定时任务的方式及优缺点_Python3-定时任务四种实现方式
  5. mysql mybatis list循环_mybatis框架,使用foreach实现复杂结果的查询--循环List集合方式...
  6. 3月第1周网络安全报告:发现放马站点域名仍为162个
  7. delete操作字符串会报错吗?
  8. Hive文件数创建过多的问题
  9. swift(不同设备适配详解)
  10. 读《企业应用架框模式》
  11. 扬州大学广陵学院c语言试卷,扬州大学广陵学院交直流调速复习题答案(试卷)
  12. matlab 实用快捷键
  13. 电化学稳态阻抗谱(EIS)在等效电路已知的情况下进行拟合,python第三方工具包impedance.py
  14. 一、Fiddler抓包工具 — Fiddler介绍与安装
  15. 产品经理会用到的常用术语大全
  16. 获取U盘 VID,PID
  17. 成都Uber优步司机奖励政策(3月11日)
  18. 写入iCloud在模拟器和真机上失败的解决办法
  19. MapReduce解决乘用车辆和商用车辆的销售数据分析
  20. 改进YOLOv7系列:首发结合最新Centralized Feature Pyramid集中特征金字塔,通过COCO数据集验证强势涨点

热门文章

  1. 论坛头像编辑 html,spu头像编辑.html
  2. centos7查看路由的命令_CentOS7 添加路由命令
  3. IT项目经理手册之成本核算
  4. cocos2dx 字体外发光_亚克力发光字制作流程有哪些,你知道吗?遵义制作厂家
  5. 在线天气预报调用插件
  6. postgresql兴建用户_postgresql – 为什么允许新用户创建表?
  7. Material.io 重磅升级 | 中文字幕视频
  8. 安全加密 - CMAC vs HMAC
  9. 2020年周数和日期对应表_2020年上海注册会计师考试成绩发布日期
  10. 冲裁模弹性元件计算_冲裁模卸料弹性元件的选用和计算