云计算【第一阶段(21)】Linux引导过程与服务控制
目录
一、linux操作系统引导过程
1.1、开机自检
1.2、MBR引导
1.3、GRUB菜单
1.4、加载 Linux 内核
1.5、init进程初始化
1.6、简述总结
1.7、初始化进程centos 6和7的区别
二、排除启动类故障
2.1、修复MBR扇区故障
2.1.1、 实验
2.2、修复grub引导故障
2.2.1、实验
2.2.1.1、方法一
2.2.1.2、方法二
2.2.1.3、方法三
2.3、遗忘root用户密码
2.2.3、实验
2.2.3.1、方法一
2.2.3.2、方法二
三、服务控制及切换运行级别
3.1、系统服务控制
3.2、运行级别
3.2.1、运行级别所对应的systemd目标
3.2.2、systemd单元类型
3.2.3、一些命令
3.2.4、扩展一些命令
四、优化启动过程
一、linux操作系统引导过程

1.1、开机自检
服务器主机开机以后,将根据主板 BIOS 中的设置对 CPU(Central Processing Unit,中央处理器)、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。
总结:检测出第一个能够引导系统的设备 比如硬盘或光驱。
1.2、MBR引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR(Master Boot Record,主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR 记录中的引导信息调用启动菜单(如 GRUB)。
总结:运行放在MBR扇区里的启动GRUB引导程序。
补充
-
加载MBR:一旦选择了硬盘作为启动设备,BIOS/UEFI就会读取硬盘的第一个扇区(MBR)。MBR通常包含启动加载器(boot loader)的代码和分区表(partition table)。
-
执行MBR中的代码:MBR中的代码会被加载到内存中并执行。这段代码通常是一个启动加载器(如GRUB、LILO等),也可能是直接指向操作系统引导文件的代码。
- 启动加载器:如果MBR中的代码是启动加载器(如GRUB),那么它会显示一个启动菜单,让用户选择想要启动的操作系统或内核版本。选择后,启动加载器会加载相应的操作系统引导文件。
- 直接引导:在某些情况下,MBR中的代码可能直接指向操作系统引导文件的位置,并将其加载到内存中执行。
- 加载操作系统引导文件:无论通过哪种方式,最终都会加载操作系统的引导文件(如Linux中的
/boot/vmlinuz,Windows中的NTLDR或bootmgr等)。 - 操作系统初始化:操作系统的引导文件会初始化系统,加载内核和其他必要的驱动程序,并最终启动用户空间。
1.3、GRUB菜单
对于 Linux 操作系统来说,GRUB(GRand Unified Bootloader,统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给 GRUB以后,将会显示启动菜单给 用户选择,并根据所选项(或采用默认值)加载 Linux 内核文件,然后将系统控制权转交给内核。需要注意的是,CentOS 7 采用的是 GRUB2 启动引导器。
总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置。
1.4、加载 Linux 内核
Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间, 负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个 Linux 操作系统的运行过 程。在 CentOS 系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。
总结:把内核和镜像文件系统加载到内存中。
1.5、init进程初始化
为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init 进程负责完成一系列的系统初始化过程,最后等待用户进行登录
总结:加载硬件驱动程序,内核把init进程加载到内存中运行
1.6、简述总结
- 开机自检:检测出第一个能够引导系统的设备
- MBR 引导:运行放在MBR扇区里的启动GRUB引导程序
- GRUB 菜单:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置
- 加载 Linux 内核:把内核和镜像文件系统加载到内存中
- init 进程初始化:加载硬件驱动程序,内核把init进程加载到内存中运行

1.7、初始化进程centos 6和7的区别


二、排除启动类故障
2.1、修复MBR扇区故障
故障现象
- 找不到引导程序,启动中断
- 无法加载操作系统,开机后黑屏
故障原因
- 病毒,木马等造成的破坏
- 不正确的分区操作,磁盘读写误操作
解决思路
- 应提前作好备份文件
- 以安装光盘引导进入急救模式
- 从备份文件中恢复
2.1.1、 实验
分区格式化挂载,我这里犯了一个错,没有格式化就会这样

创建backup文件
挂载
![]()
备份MBR
(MBR位于第一块硬盘( /dev/sda) 的第一一个物理扇区处,总共512字节)

模拟损坏

先加载好光盘镜像,重启操作系统


变成这样

故障排除

抢救模式

继续选1

再次按Enter 键后将进入带“sh-4.2#"提示符的Bash Shell环境
这个时候需要重新创建文件夹(之前的文件夹目前用不了),挂载,把之前备份恢复的用上

exit
然后就可以了
2.2、修复grub引导故障
故障现象
- 系统引导停滞,显示"grub>"提示符
故障原因
- mbr中的grub引导程序遭到破坏
- grub.conf文件丢失,引导配置有误
解决思路
- 尝试手动输入引导命令
- 进入急救模式,重写或者从备份中恢复grub.conf
- 向 扇区中重建grub程序
2.2.1、实验
2.2.1.1、方法一
手动输入引导命令(笨拙繁琐,不建议使用)
/boot/grub/目录下的包是用于启动菜单的背景图片及样式
/boot/grub2/grub.cfg
#GRUB配置文件
方法一“: 手动输入引导命令(笨拙繁琐,不建议使用)
grub> insmod xfs #加载指定的模块到内核
grub> linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=UUID=8fd74986-ae66-4ffd-b7d8-a19f2eca7b6f ro rhgb quiet
LANG=zh_CN.UTF-8 #内核的名字及位置等信息
grub> initrd16 /initramfs-3.10.0-693.e17.x86_64.img #镜像系统文件
grub> boot #引导boot
2.2.1.2、方法二
进入急救模式,恢复GRUB引导程序
MBR位于第一 块硬盘( /dev/sda) 的第一个物理扇区处,总共512字节,前446字节是主引导记录,分区表保存在MBR扇区中的第447 -510字节中。
引导界面进入急救模式,从备份文件中恢复GRUB引导程序
基本上和MBR恢复一样不再赘述
grub误成写grup注意


2.2.1.3、方法三
引导界面进入急救模式,重建GRUB菜单配置文件
模拟错误
rm -rf /boot/grub2/grub.cfg
![]()
发现

![]()
然后一样进入急救模式
切换到系统根环境
chroot /mnt/sysimage
重新将GRUB引导程序安装到第一块硬盘(/dev/sda)的MRB扇区,如果有多个分区可省略
grub2-install /dev/sda
重新构建GRUB菜单的配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
退出并且重启

2.3、遗忘root用户密码
故障现象
- 无法进行需要root权限的管理操作
- 若没有其他可用帐号,将无法登录系统
故障原因
- 遗忘root用户的密码
解决思路
- 进入急救模式,重设密码
2.2.3、实验
2.2.3.1、方法一
进入急救模式,加载系统镜像,c切换到系统根环境
先关机,有

按c,然后退出exit


切换到
chroot /mnt/sysimage
重设root用户密码
passwd root

2.2.3.2、方法二
进入单用户模式修改root密码为例。
重启

按e键
在16那边修改ro 为rw init=sysroot/bin/bash 注意有空格

然后按
ctrl+x进入

切换到
用于更改当前进程的根目录(root directory)到 /sysroot。这通常用于系统恢复、调试或特定环境下的程序运行。
chroot /sysroot
修改语言
LANG=en_US.UFT-8
修改密码
passwd root
exit
init 6
三、服务控制及切换运行级别
3.1、系统服务控制
systemctl 控制类型 服务名称
控制类型
- start:启动
- stop:停止
- restart:重新启动
- reload:重新加载
- status:查看服务状态
3.2、运行级别
3.2.1、运行级别所对应的systemd目标
| 运行级别 | Systemd的target | 说明 |
|---|---|---|
| 0 | shutdown.target | 关机状态,使用该级别时将会关闭主机 |
| 1 | rescue.target | 单用户模式,不需要密码验证即可登录系统,多用于系统维护 |
| 2 | multi-user.target(或特定编号) | 用户定义/域特定运行级别。默认等同于3 |
| 3 | multi-user.target | 字符界面的完整多用户模式,大多数服务器主机运行在此级别 |
| 4 | multi-user.target(或特定编号) | 另一个用户定义/域特定运行级别,可能需要特殊配置,默认等同于3 |
| 5 | graphical.target | 图形界面的多用户模式,提供了图形桌面操作环境 |
| 6 | reboot.target | 重新启动,使用该级别时将会重启主机 |
3.2.2、systemd单元类型
| 单元类型 | 扩展名 | 说明 |
|---|---|---|
| Service | .service | 描述一个系统服务 |
| Socket | .socket | 描述一个进程间通信的套接字 |
| Device | .device | 描述一个内核识别的设备文件 |
| Mount | .mount | 描述一个文件系统的挂载点 |
| Automount | .automount | 描述一个文件系统的自动挂载点 |
| Swap | .swap | 描述一个内存交换设备或交换文件 |
| Path | .path | 描述一个文件系统中文件或目录 |
| Timer | .timer | 描述一个定时器(用于实现类似cron的调度任务) |
| Snapshot | .snapshot | 用于保存一个systemd的状态 |
| Scope | .scope | 使用systemd的总线接口以编程的方式创建外部进程 |
| Slice | .slice | 描述居于Cgroup的一组通过层次组织的管理系统进程 |
| Target | .target | 描述一组systemd的单元 |
3.2.3、一些命令
Runlevel可以理解为Linux系统的一个“运行阶段”或“模式”,用于表示系统当前的状态和服务配置。
显示结果中的两个字符分别表示切换前的目标、当前的目标。若之前尚未切换过运行级别,则第 1 列将显示“N”

查看当前默认运行级别

graphical 电脑图形的
设置永久的运行级别
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
![]()
或者

切换为字符模式
systemctl isolate multi-user.target 或 init 3
(怎么简单怎么来)


3.2.4、扩展一些命令
永久修改主机名

查看主机名的状态
hostnamectl status

设置系统语言为中文
localectl set-locale LANG=zh_CN.UTF-8
当你使用 localectl set-locale LANG=en_US.UTF-8 命令时,你实际上是在配置 systemd 的本地化设置,这通常会影响那些由 systemd 启动的服务和守护进程的环境变量。但是,对于你的 shell 会话或者当前用户的环境,这通常不会有直接的影响。
$LANG 是一个环境变量,它通常在你的 shell 配置文件(如 .bashrc、.bash_profile、.zshrc 等,取决于你使用的 shell)中设置,或者通过系统登录时读取的配置文件(如 /etc/profile、/etc/environment 等)设置。

查看当前系统使用的语言
localectl [status ]

四、优化启动过程
ntsysv工具
- 提供一个交互式,可视化窗口
- 可以在字符终端运行
- 便于集中管理多个服务

一般不用
打开方式
ntsysv
找到你想要设置的自启动服务,然后按空格键切换其状态,如果前面有"*",表示该服务在开机时会自动启动;如果没有"*",则表示该服务在开机时不会自动启动。
当你完成所有的设置后,按"F12"退出。
系统会提示你是否保存更改,输入"Y"并回车确认保存。
lsystemctl工具
- 不提供交互式,可视化窗口
- 管理单个服务效率更高
使用 systemctl 工具与 ntsysv 的功能类似,但是 systemctl 不提供交互式的操作界面,它用 于查询或设置系统服务的默认启动状态。当需要设置某一个服务在当前运行目标中的默认启 动状态时,使用 systemctl 工具会更有效率。使用 systemctl 工具控制服务开机启停的命令 格式如下:
systemctl 控制选项 服务名称 常用的选项有三种:
-
enable:开机自动启动。
-
disable:开机自动关闭。
-
is-enable:查看开机启动状态。
实验
开机自启apache 服务设置为

查看是否自启

apache 服务设置为开机关闭

在当前系统下执行“systemctl list-units --type=service”命令可以查看当前系统中所有已 激活的系统服务

查看开机自启的服务器
相关文章:
云计算【第一阶段(21)】Linux引导过程与服务控制
目录 一、linux操作系统引导过程 1.1、开机自检 1.2、MBR引导 1.3、GRUB菜单 1.4、加载 Linux 内核 1.5、init进程初始化 1.6、简述总结 1.7、初始化进程centos 6和7的区别 二、排除启动类故障 2.1、修复MBR扇区故障 2.1.1、 实验 2.2、修复grub引导故障 2.2.1、实…...
Google 发布最新开放大语言模型 Gemma 2,现已登陆 Hugging Face Hub
Google 发布了最新的开放大语言模型 Gemma 2,我们非常高兴与 Google 合作,确保其在 Hugging Face 生态系统中的最佳集成。你可以在 Hub 上找到 4 个开源模型 (2 个基础模型和 2 个微调模型) 。发布的功能和集成包括: Hub 上的模型https://hf.…...
智能分析赋能等保:大数据技术在安全审计记录中的应用
随着信息技术的飞速发展,大数据技术在各行各业中的应用愈发广泛,特别是在网络安全领域,大数据技术为安全审计记录提供了强有力的支撑。本文将深入探讨智能分析如何赋能等保(等级保护),以及大数据技术在安全…...
Django中,update_or_create()
在Django中,可以使用update_or_create()方法来更新现有记录或创建新记录。该方法接受一个字典作为参数,用于指定要更新或创建的字段和对应的值。 update_or_create()方法的语法如下: 代码语言:python obj, created Model.obje…...
每日一学(1)
目录 1、ConCurrentHashMap为什么不允许key为null? 2、ThreadLocal会出现内存泄露吗? 3、AQS理解 4、lock 和 synchronized的区别 1、ConCurrentHashMap为什么不允许key为null? 底层 putVal方法 中 如果key || value为空 抛出…...
SpringMVC(1)——入门程序+流程分析
MVC都是哪三层?在Spring里面分别对应什么?SpringMVC的架构是什么? 我们使用Spring开发JavaWeb项目,一般都是BS架构,也就是Browser(浏览器)-Server(服务器)架构 这种架构…...
成绩发布背后:老师的无奈与痛点
在教育的广阔天地里,教师这一角色承载着无数的期望与责任。他们不仅是知识的传播者,更是学生心灵的引路人。而对于班主任老师来说,他们的角色更加多元,他们不仅是老师,还必须是“妈妈”。除了像其他老师一样备课、上课…...
MySQL 索引之外的相关查询优化总结
在这之前先说明几个概念: 1、驱动表和被驱动表:驱动表是主表,被驱动表是从表、非驱动表。驱动表和被驱动表并非根据 from 后面表名的先后顺序而确定,而是根据 explain 语句查询得到的顺序确定;展示在前面的是驱动表&am…...
EE trade:贵金属投资的优点及缺点
贵金属(如黄金、白银、铂金和钯金)一直以来都是重要的投资和避险工具。它们具有独特的物理和化学特性,广泛应用于各种行业,同时也被视为财富储备。在进行贵金属投资时,了解其优点和缺点对于做出明智的投资决策至关重要。 一、贵金属投资的优…...
python工作目录与文件目录
工作目录 文件目录:文件所在的目录 工作目录:执行python命令所在的目录 D:. | main.py | ---data | data.txt | ---model | | model.py | | train.py | | __init__.py | | | ---nlp | | | bert.py | …...
可信和可解释的大语言模型推理-RoG
大型语言模型(LLM)在复杂任务中表现出令人印象深刻的推理能力。然而,LLM在推理过程中缺乏最新的知识和经验,这可能导致不正确的推理过程,降低他们的表现和可信度。知识图谱(Knowledge graphs, KGs)以结构化的形式存储了…...
秋招季的策略与行动指南:提前布局,高效备战,精准出击
6月即将进入尾声,一年一度的秋季招聘季正在热火进行中。对于即将毕业的学生和寻求职业发展的职场人士来说,秋招是一个不容错过的黄金时期。 秋招的序幕通常在6月至9月间拉开,名企们纷纷开启网申的大门。在此期间,求职备战是一个系…...
Java并发编程-wait与notify详解及案例实战
文章目录 概述wait()notify()作用注意事项用wait与notify手写一个内存队列wait与notify的底层原理:monitor以及wait_setMonitor(监视器)Wait Set(等待集合)Wait() 原理Notify() / NotifyAll() 原理注意事项wait与notify在代码中使用时的注意事项总结案例实战:基于wait与not…...
204.贪心算法:分发饼干(力扣)
以下来源于代码随想录 class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {// 对孩子的胃口进行排序sort(g.begin(), g.end());// 对饼干的尺寸进行排序sort(s.begin(), s.end());int index s.size() - 1; // 从最大的饼…...
AI奥林匹克竞赛:Claude-3.5-Sonnet对决GPT-4o,谁是最聪明的AI?
目录 实验设置 评估对象 评估方法 结果与分析 针对学科的细粒度分析 GPT-4o vs. Claude-3.5-Sonnet GPT-4V vs. Gemini-1.5-Pro 结论 AI技术日新月异,Anthropic公司最新发布的Claude-3.5-Sonnet因在知识型推理、数学推理、编程任务及视觉推理等任务上设立新…...
【C++】const修饰成员函数
const修饰成员函数 常函数: 成员函数后加const后我们称为这个函数为常函数 常函数内不可以修改成员属性 成员属性声明时加关键字mutable后,在常函数中依然可以修改 class Animal { public:void fun1(){//这是一个普通的成员函数 }void fun2…...
基于模糊神经网络的时间序列预测(以hopkinsirandeath数据集为例,MATLAB)
模糊神经网络从提出发展到今天,主要有三种形式:算术神经网络、逻辑模糊神经网络和混合模糊神经网络。算术神经网络是最基本的,它主要是对输入量进行模糊化,且网络结构中的权重也是模糊权重;逻辑模糊神经网络的主要特点是模糊权值可…...
Java web应用性能分析之【prometheus监控K8s指标说明】
常规k8s的监控指标 单独 1、集群维度 集群状态集群节点数节点状态(正常、不可达、未知)节点的资源使用率(CPU、内存、IO等) 2、应用维度 应用响应时间 应用的错误率 应用的请求量 3、系统和集群组件维度 API服务器状态控…...
Spring Boot中的应用配置文件管理
Spring Boot中的应用配置文件管理 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Spring Boot中的应用配置文件管理。在现代的软件开发中&am…...
SCCB协议介绍,以及与IIC协议对比
在之前的文章里已经介绍了IIC协议:iic通信协议 这篇内容主要介绍一下SCCB协议。 文章目录 SCCB协议:SCCB时序图iic时序图SCCB时序 VS IIC时序 总:SCCB协议常用在摄像头配置上面,例如OV5640摄像头,和IIC协议很相似&…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...
Spring AOP代理对象生成原理
代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】,这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...
