Linux启动流程描述

news/2025/2/11 1:04:25/

目录

Linux的引导过程

启动系统内核

启动init进程


什么是Linux

Linux的内核最初是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的

Linux全称GUN/Linux,是一套开源的类Unix操作系统,是一个基于POSIX的多用户、多任务,支持多线程和多CPU的操作系统,支持32位和64位硬件

常用的Linux的发行版本

Ubuntu Linux        桌面市场方面

Redhat                 服务器稳定版本(服务会收费)

CentOS                社区企业版(免费)

SuSE                     主要用于欧洲等地区(有收费版本,有不收费版本—可以理解为欧洲版的CentOS)

Fedora Core          桌面用户测试专用

Linux与Windows的比较

 

Windows

Linux

使用权限

收费系统

开源的免费系统

多用户/多线程

支持

支持

使用场景

主要用于游戏玩家等个人计算机的操作系统

主要用作服务器的操作系统

系统结构

由一个个独立的软件模块组成

基于文件的操作系统

软件支持

软件数量和种类多
不过软件一般需要收费,由Windows官方进行开发维护

大部分位开源的免费软件,用户修改定制和再发布
不过软件的种类和功能较少

操作习惯

一般使用图形化操作(也支持命令行)

一般使用命令行来操作(也支持图形化)

安全性

Linux相比于Windows更加安全,Linux开源的方式能够更容易发现和修复错误

可定制性

Linux相比于Windows的定制化更高


Linux的引导过程

不同Linux系统的引导过程大体一致,不一样的是管理方式不一样,过程是一样的

以下的介绍是以CentOS6为例子的

启动系统内核

BIOS开机自检

BIOS开机自检也称为加电自检,是计算机BIOS的一个功能,在开机后会运行

针对计算机进行硬件检测,包含CPU、内存、硬盘等

自检过程中发现故障后会通过某些方式来提示硬件问题(告警灯、显示屏、LED等)

MBR引导

自检完成后BIOS中定义的BOOT启动项去寻找具有MBR引导程序的硬盘,启动该系统

如果启动盘有多个,则依次去检查,如果第一个启动盘有MBR引导,则就启动该启动盘,否则依次往下检查;如果检查中遇到启动盘的MBR引导程序有故障,会停留在该错误的界面,需要我们去排查故障

GRUB菜单

MBR引导结束后,进行GRUB菜单选择(如果启动盘有多个系统,选择哪个系统)

GRUB包含三个部分

Stage1           存储于MBR中前446字节,用于实现引导Stage2

Stage1.5        存储于/boot/grub目录中,用于识别内核所在分区的文件类型

Stage2           存储于/boot/grub目录中,结合grub.conf配置文件实现引导操作系统

具体工作

确定设备的MBR后,会将计算机的控制权转交给MBR中位于前446字节的Stage1

然后引导stage1.5,结合stage2实现操作系统的选择

启动Kernel

启动所选系统的内核(Kernel),再次检查硬件设备,并加载设备启动所需要的驱动

硬件设备驱动是在系统内的,我们现在还没有启动系统,如何加载驱动

需要使用内核下或者BOOT根分区下的initramfs.img文件来加载驱动

initramfs.img文件是在内核启动时提供一个基本的,最小的文件系统,以便于内核能够访问系统所需要的驱动程序和工具并启动,以此来进入到真实的系统中

kernel初始化过程

  1. 启动所选系统的内核
  2. 进行设备检查探测
  3. 进行驱动初始化(可能从initrd(initramfs)文件中装载设备驱动模块)
  4. 以只读挂载根文件系统
  5. 装载第一个进程init(PID:1)

启动init进程

进入到真实的操作系统中之后,此时就需要启动相关服务、进程

init进程是系统所有进程的起点(PID为1),其它进程都为此进程的子进程;作用是初始化系统环境

读取/etc/inittab配置文件——定义了系统运行级别

运行init进程需要读取的/etc/inittab配置文件,该配置文件定义了系统的运行级别、/etc/sysinit脚本、/etc/rc.d/rc脚本以及mingetty进程

系统运行进程

通过该配置文件来识别系统启动到哪个运行级别下;不同的运行级别对应不同的运行模式,不同的运行模式系统所需要提供的服务是不一样的

0级别是关机

1级别           单用户

2级别           多用户,但是没有网络服务

3级别           多用户,全功能(一般为3级别)

4级别           系统保留,不会使用  

5级别           图形化界面 

6级别           重启

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

包含主机名、挂载的磁盘分区、关闭SELinux等初始化工作

etc/rc.d/rc脚本——各种服务的启动/关闭脚本

通过该脚本来需要开启/关闭该运行级别下需要开启/关闭的应用服务,并需要读取开机自启动文件(/etc/rc.d/rc.local文件)下的应用或服务将其开启

K开头表示关闭该服务、L开头表示开启该服务;先关闭服务,再开启服务

mingetty进程

运行mingetty进程打开登录窗口,同时执行/bin/login跳出登录界面,输入用户名密码登录到系统,进行相应的操作


http://www.ppmy.cn/news/1167774.html

相关文章

C++设计模式_10_ Prototype 原型模式(小模式,不太常用)

Prototype 原型模式仍然属于“对象创建模式”模式的一种。前面两篇介绍的工厂方法模式和抽象工厂模式的流行程度要远大于Prototype 原型模式和builder构建器模式,后两种由于较为简单,介绍篇幅也会少一些。 文章目录 1. 动机 (Motivation)2. 代码演示Prot…

【C++】继承和多态常见的问题

一、概念考查 1、下面哪种面向对象的方法可以让你变得富有( A ) A. 继承 B. 封装 C. 多态 D. 抽象 继承机制是面向对象程序设计使代码可以复用的最重要手段,继承是类设计层次的复用。 2、( D )是面向对象程序设计语…

git commit报错:running pre-commit hook: lint-staged

报错截图: 报错信息: running pre-commit hook: lint-staged 解决方式: 在项目(vue)的package.json文件中,查找 “husky” 部分,并确认其下的 “pre-commit” 钩子是否正确地引用了 lint-staged。 其中配置示例如下&a…

在 RN 中构建自适应 UI

移动开发的世界在不断变化,随之而来的是对能够适应任何设备或方向的用户界面的需求。React Native 提供了一套丰富的工具来构建这样的需求。 在本文中,我们将探讨如何在 React Native 中设计响应式和自适应 UI,重点关注不同的设备尺寸、方向…

emqx 启动正常,但是1883端口无法telnet,emqx无法正常工作

emqx一直正常工作,后面突然就不工作了,查找日志,发现报错说设备空间不足,但是我记得华为云SSD从40G扩容到500G,不至于空间不足,于是运行df -Dh确实显示只有40G,运行lsblk确实有500G,…

JavaWeb学生管理系统(详细源码+解析)

​ 很多人大学的第一个小项目就是使用JavaWeb实现了一个学生管理系统或者是图书管理系统。在没有项目经验的情况下,前后端都需要自己去完成,还是要耗费不少时间精力的。本次我就分享一下我在大学期间完成的第一个小项目:学生管理系统。采用的…

JS什么是事件处理

目录 事件处理的基本概念 事件处理的方法 内联事件处理: 外部事件处理 事件对象 常见的事件类型 事件委托 本文将介绍 JavaScript 中的一个知识点:事件处理。事件处理是 JavaScript 中非常重要的一个概念,它允许我们为 HTML 元素添加交互功能&…

SQL sever中的存储过程

在Oracle的专篇中我也有仔细总结了存储过程的相关内容, 文章链接:http://t.csdnimg.cn/Z8AnH 尽管Oracle和SQL sever之间是存在一些区别,但许多基本的概念和原则在Oracle和SQL Server之间是通用的。它们之间有一些常见的区别,如下…