云计算【第一阶段(21)】Linux引导过程与服务控制

news2024/10/6 2:30:14

目录

一、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引导程序

补充

  1. 加载MBR:一旦选择了硬盘作为启动设备,BIOS/UEFI就会读取硬盘的第一个扇区(MBR)。MBR通常包含启动加载器(boot loader)的代码和分区表(partition table)。

  2. 执行MBR中的代码:MBR中的代码会被加载到内存中并执行。这段代码通常是一个启动加载器(如GRUB、LILO等),也可能是直接指向操作系统引导文件的代码。

    • 启动加载器:如果MBR中的代码是启动加载器(如GRUB),那么它会显示一个启动菜单,让用户选择想要启动的操作系统或内核版本。选择后,启动加载器会加载相应的操作系统引导文件。
    • 直接引导:在某些情况下,MBR中的代码可能直接指向操作系统引导文件的位置,并将其加载到内存中执行。
    • 加载操作系统引导文件:无论通过哪种方式,最终都会加载操作系统的引导文件(如Linux中的/boot/vmlinuz,Windows中的NTLDRbootmgr等)。
    • 操作系统初始化:操作系统的引导文件会初始化系统,加载内核和其他必要的驱动程序,并最终启动用户空间。

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、简述总结

  1. 开机自检:检测出第一个能够引导系统的设备
  2. MBR 引导:运行放在MBR扇区里的启动GRUB引导程序
  3. GRUB 菜单:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置
  4. 加载 Linux 内核:把内核和镜像文件系统加载到内存中
  5. 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说明
0shutdown.target关机状态,使用该级别时将会关闭主机
1rescue.target单用户模式,不需要密码验证即可登录系统,多用于系统维护
2multi-user.target(或特定编号)用户定义/域特定运行级别。默认等同于3
3multi-user.target字符界面的完整多用户模式,大多数服务器主机运行在此级别
4multi-user.target(或特定编号)另一个用户定义/域特定运行级别,可能需要特殊配置,默认等同于3
5graphical.target图形界面的多用户模式,提供了图形桌面操作环境
6reboot.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”命令可以查看当前系统中所有已 激活的系统服务

查看开机自启的服务器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1878632.html

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

相关文章

Burpsuite靶场中信息泄露相关的实验通关

目录 第一关:错误消息中的信息披露 第二关:调试页面信息披露 第三关:通过备份文件披露源代码 第四关:通过信息披露绕过身份验证 第五关:版本控制历史中的信息披露 最近看大佬的文章,发现了很对自己没有…

Android 遥控器

遥控器源码 import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.RadialGradient; import android.graphics.Region; import android.g…

为什么word生成的PDF内容显示不全?

在现代办公环境中,将文档从一个格式转换为另一个格式是一个常见的任务。然而,有时候我们可能会遇到意想不到的问题,比如使用Word转换成PDF时,生成的PDF文件只显示了整个界面的四分之一内容。这种问题不仅令人困扰,也可…

Search for documents with similar texts

题意:搜索具有相似文本的文档 问题背景: I have a document with three attributes: tags, location, and text. 我有一份文档,包含三个属性:标签、位置和文本。 Currently, I am indexing all of them using LangChain/pgvecto…

Lua: 轻量级多用途脚本语言

Lua 是一种高效而轻量级的脚本语言,具备强大的扩展性和灵活性,广泛应用于游戏开发、嵌入式系统、Web 应用等多个领域。本文将深入探讨 Lua 的特性、应用场景以及如何使用 Lua 进行开发。 1. Lua 的起源与发展 Lua 的发展始于上世纪90年代初,…

GPT-5:AI新时代的领航者与我们的未来

一、引言:GPT-5的崭新时代 在科技的浪潮中,人工智能(AI)领域正迎来一个崭新的纪元。GPT-5,作为OpenAI的最新成果,无疑将成为这个新时代的领航者。从GPT-1到GPT-4,我们见证了AI在自然语言处理领域…

零基础开始学习鸿蒙开发-页面导航栏布局设计

1.设定初始页(Idex.ets) import {find} from ../pages/find import {home} from ../pages/home import {setting} from ../pages/setting Entry Component struct Index {private controller: TabsController new TabsController()State gridMargin: number 10State gridGut…

开源分享:一套完整的直播购物系统源码

直播购物已经成为一种炙手可热的电商模式,吸引了无数商家和消费者的目光。对于开发者来说,构建一个功能齐全、用户体验优良的直播购物系统是一项复杂的任务。本文将分享一套完整的直播购物系统源码,帮助开发者快速搭建自己的直播购物平台。 …

决策树划分属性依据

划分依据 基尼系数基尼系数的应用信息熵信息增益信息增益的使用信息增益准则的局限性 最近在学习项目的时候经常用到随机森林,所以对决策树进行探索学习。 基尼系数 基尼系数用来判断不确定性或不纯度,数值范围在0~0.5之间,数值越低&#x…

IDEA中Maven配置依赖和排除依赖

目录 依赖配置 添加依赖的几种方式: 1.利用中央仓库搜索的依赖坐标 2.利用IDEA工具搜索依赖 3.熟练上手maven后,快速导入依赖 排除依赖 依赖配置 依赖:指当前项目运行所需要的jar包。一个项目中可以引入多个依赖: 例如&am…

ASP.NET Core 6.0 使用 Action过滤器

Action过滤器 在ASP.NET Core中,Action过滤器用于在执行Action方法之前或之后执行逻辑。你可以创建自定义的Action过滤器来实现这一点。 继承 ActionFilterAttribute 类: [TypeFilter(typeof(CustomAllActionResultFilterAttribute))]public IActionRe…

李秘书专业写作:关于晋升受阻或不公待遇的申诉(范文)

李秘书专业写作:关于晋升受阻或不公待遇的申诉(范文) 尊敬的公司领导: 您好! 我谨以此信向公司提出申诉,关于我在近期晋升职位时遭受的不公待遇。我深感自己的辛勤付出和优异业绩未得到应有的认可&#…

Python逻辑控制语句 之 判断语句--if 嵌套

1.if 嵌套介绍 在⼀个if(elif else) 语句中 嵌套另⼀个 if(elif else ) 语句判断条件存在递进关系才会使⽤. 即 只有第⼀个条件成⽴,才会判断第⼆个条件 应用场景:在之前条件满足的前提下 ,再增加额外的判断 2.if 嵌套语法 if 判断条件1: 判断条件1成立…

【Kubernetes学习】

K8S基础概念一 一、k8s是什么?二、k8s功能三、k8s组件四、k8s概念总结 一、k8s是什么? kubernetes,简称k8s,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本…

昇思25天学习打卡营第7天|linchenfengxue

Vision Transformer图像分类 1.Vision Transformer(ViT)简介 近些年,随着基于自注意(Self-Attention)结构的模型的发展,特别是Transformer模型的提出,极大地促进了自然语言处理模型的发展。由…

Zynq7000系列FPGA中的DMA控制器简介(二)

AXI互连上的DMA传输 所有DMA事务都使用AXI接口在PL中的片上存储器、DDR存储器和从外设之间传递数据。PL中的从设备通过DMAC的外部请求接口与DMAC通信,以控制数据流。这意味着从设备可以请求DMA交易,以便将数据从源地址传输到目标地址。 虽然DMAC在技术…

pdf拆分,pdf拆分在线使用,pdf拆分多个pdf

在数字化的时代,pdf文件已经成为我们日常办公、学习不可或缺的文档格式。然而,有时候我们可能需要对一个大的pdf文件进行拆分,以方便管理和分享。那么,如何将一个pdf文件拆分成多个pdf呢?本文将为你推荐一种好用的拆分…

033基于SSM+Jsp的多用户博客个人网站

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

Java----面向对象----总复习

面向对象 面向对象的程序设计思想(Object Oriented Programming),简称OOP.是一种设计者思想.关注的焦点是类,参照现实中的事务,将事务的属性特征,行为抽象出来,用类来表示.代码结构:以类为组织单位,每种事务都有自己的属性和行为,功能, 思想:从宏观上 帮助我们把握,整体分析整…

独家原创 | Matlab实现CNN-Transformer多变量时间序列预测

SCI一区级 | Matlab实现BO-Transformer-GRU多变量时间序列预测 目录 SCI一区级 | Matlab实现BO-Transformer-GRU多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CNN-Transformer多变量时间序列预测; 2.运行环境为Matlab2023b…