Linux启动流程描述

news2024/10/6 4:05:32

目录

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.coloradmin.cn/o/1117866.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】基本操作指令汇总(不完全)

文章目录 操作系统概念补充lspwdsuechocdtouchmkdirrmdir指令 && rm 指令(重要)man指令cpmvcatmorelessheadtailstat时间相关的指令calfindgrepwcsortuniqwhichziptar:打包/解包,不打开它,直接看内容bcunamectrl cctrl rctrl d\ls cpulsmemdf-hw…

base64是什么?怎么用的?

Base64是一种将二进制数据转换为ASCII字符的编码方式。 它可以用于在文本协议中传输二进制数据,例如在电子邮件中传输图片或在网页中嵌入图像等。Base64编码使用64个字符集(A-Z、a-z、0-9和"+“、”/")来表示二进制数据。 Base64编码的原理是将3个字节的二进制数…

澳洲谷揽GRANAR谷物分析仪维修GR-1800蛋白检测仪

澳洲GRANAR谷揽GR-1800谷物分析仪应用领域:大豆、油菜籽、亚麻籽 常用分析指标:蛋白质、芥酸、水分、灰分 、油脂等 分析时间:<3min 使用场景:谷物收购、生产加工、实验室 GR-1800i型号特点 1.检测时间由3分钟缩短…

keil中报警告comparison of constant 100 with boolean expression is always true

keil中变量Wave_Fre为变值 需要更改为 if( (0<Wave_Fre)&&(Wave_Fre<100)) 因为在C中运算符计算从左到右&#xff0c;((0<Wave_Fre) < 100 )

修改工单状态BAPI

业务需求&#xff1a;创建内部订单后&#xff0c;自动审批内部订单订单&#xff08;状态改为REL&#xff09; 函数&#xff1a;I_CHANGE_STATUS 单据状态表&#xff1a;JEST 单据状态描述表&#xff1a;TJ02T DATA lv_object TYPE char22 .lv_object OR && p_lv_au…

【LeetCode】63. 不同路径 II

1 问题 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑网格中有障碍物。那么从左上角…

Jmeter(八):jmeter接口自动化测试操作流程、计数器、定时器详解

Jmeter&#xff1a;jmeter接口自动化测试操作流程 在企业使用jmeter开展实际的接口自动化测试工具&#xff0c;建议按如下操作流程&#xff0c; 可以使整个接口测试过程更规范&#xff0c;更有效。 接口自动化的流程&#xff1a; 1、获取到接口文档&#xff1a;swagger、wor…

广州华锐视点:VR3D技术在中学物理实验中的应用

随着科技的飞速发展&#xff0c;VR(虚拟现实)技术已经成为当今教育领域的一股重要力量。它为传统教学带来了前所未有的变革&#xff0c;特别是在初中物理实验教学中&#xff0c;VR技术的应用为学生们开启了全新的学习之旅。下面&#xff0c;让我们一起来探讨VR/3D虚拟仿真中学物…

uboot 启动流程详细分析参考

1 基本概念 1.1 uboot 是什么&#xff1f; 当我们厌倦了裸机程序&#xff0c;而想要采用操作系统的时候&#xff0c;uboot就是不得不引入的一段程序。所以&#xff0c;uboot就是一段引导程序&#xff0c;在加载系统内核之前&#xff0c;完成硬件初始化&#xff0c;内存映射&a…

2016-2023全国MEM国家A类线趋势图:浙大MEM要高多少?

2024年全国MEM联考已经到了关键的冲刺阶段&#xff0c;以目前全国非全日制mem项目的招生录取情况来看&#xff0c;大多数都是以国家A类线作为其录取的基本参考依据。而mem项目的国家线子啊过去的几年中也是有过比较大的波动&#xff0c;最明显的是2022年的国家线达到了历史最高…

【fiddler+loadrunner 两兄弟制霸脚本开发】

前言 一、fiddler工具 1、运行fiddler工具 2、运行需要抓包的网站 这里以loadrunner自带的网站为例 点击“Start web Server” 再点击如下 会看到如下的页面 &#xff08;备注&#xff1a;这里把127.0.0.1改成本机的ip地址&#xff0c;有时fiddler工具会监控不到127.0.0.1的请…

基于人工智能的图像分类算法研究与实现 - 深度学习卷积神经网络图像分类 计算机竞赛

文章目录 0 简介1 常用的分类网络介绍1.1 CNN1.2 VGG1.3 GoogleNet 2 图像分类部分代码实现2.1 环境依赖2.2 需要导入的包2.3 参数设置(路径&#xff0c;图像尺寸&#xff0c;数据集分割比例)2.4 从preprocessedFolder读取图片并返回numpy格式(便于在神经网络中训练)2.5 数据预…

安卓富文本部分高亮及点击事件

安卓富文本部分高亮及点击事件 前言一、富文本是什么&#xff1f;二、实现方法1.使用html2.使用SpannableString 总结 前言 富文本其实不是很常用&#xff0c;但有遇到了过后使用很方便的场景&#xff0c;例如免责声明。这时候就很重要了&#xff0c;前段时间遇到了&#xff0…

轻松实现文件按大小归类保存,高效管理你的文件库!

如果你像管理自己的财产一样管理你的文件&#xff0c;那么你一定需要一个能够轻松实现文件按大小归类保存的工具。今天&#xff0c;我要向大家介绍一款全新的文件管理软件&#xff0c;它能够将你的文件按照大小进行归类保存&#xff0c;让你的文件管理更加高效和有序&#xff0…

安装jdk1.6

安装jdk1.6 背景安装修改 参考 背景 看资料的时候&#xff0c;涉及到jdk1.6&#xff0c;我看了一下本地的jdk,有1.7、1.8、20的&#xff0c;就是没1.6的。然后就琢磨装一个 安装 我看了一下oracle官网&#xff0c;现成的好像不好用。后面google了一下&#xff0c;好像苹果提供了…

d3dx9_43.dll丢失怎么解决,四个解决方法帮你解决d3dx9_43.dll丢失

随着科技的不断发展&#xff0c;我们越来越依赖各种软件和硬件设备来提高生活和工作效率。然而&#xff0c;有时候我们可能会遇到一些技术问题&#xff0c;如“d3dx9_43.dll丢失”的问题。这个问题可能导致某些程序无法正常运行&#xff0c;给我们的生活带来诸多不便。因此&…

如何编写有效的接口测试

在所有的开发测试中&#xff0c;接口测试是必不可少的一项。有效且覆盖完整的接口测试&#xff0c;不仅能保障新功能的开发质量&#xff0c;还能让开发在修改功能逻辑的时候有回归的能力&#xff0c;同时也是能优雅地进行重构的前提。编写接口测试要遵守哪些原则&#xff1f;测…

发现一款非常好用的学术GPT,可形成知识库,并分析论文,根据观点生成文字

发现一款非常好用的学术GPT&#xff0c;支持CHATGPT3.5交互、论文分析与生成&#xff0c;目前作者并未全面推广&#xff0c;仅在小圈子里使用&#xff0c;可以保证后端api的使用稳定性&#xff0c;不会出现大量用户共享gpt 服务&#xff0c;导致gpt调用超时的情况。 使用方法&a…

unittest自动化测试框架,全网独一份

一、单元测试的定义 1、什么是单元测试&#xff1f; 单元测试是指&#xff0c;对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作&#xff0c;这里的最小可测试单元通常是指函数或者类&#xff0c;一般是开发来做的&#xff0c;按照测试阶段来分&…

笔记:绘图进阶

主要功能&#xff1a; 双坐标轴多子图共用一个横坐标横坐标时间刻度设置&#xff08;方便&#xff09; # -*- coding: utf-8 -*- import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as mdatesif __name__ __main__:# 风速da…