Linux引导和服务

一、Linux系统引导过程

Linux系统的引导过程可以分为以下几个主要步骤:

(一)BIOS/UEFI启动

当计算机开机时,首先会执行基本输入输出系统(BIOS)或统一可扩展固件接口(UEFI)。这些固件会进行自检POST(Power On Self Test),检测硬件是否正常。然后根据CMOS设置中的启动顺序寻找第一个启动设备。

(二)MBR或GPT引导

对于传统的BIOS引导方式,找到的第一个启动设备的主引导记录(MBR)会被加载到内存中执行。对于UEFI引导方式,则查找并执行ESP分区中的EFI引导程序。

(三)引导加载器阶段

MBR中的引导加载器通常是GRUB(GRand Unified Bootloader)或其他类似的工具。GRUB从硬盘加载自己的内核模块,并显示启动菜单(如果有多个操作系统可供选择)。用户可以选择要启动的操作系统和内核版本。UEFI引导下,引导加载器是存放在ESP分区的EFI应用程序,如GRUB2的UEFI版。

(四)加载Linux内核

 用户选择操作系统后,GRUB将指定的Linux内核文件加载到内存中,并传递必要的启动参数(如root=...kernel=...等)。内核开始初始化其自身以及依赖的硬件资源。

(五)启动初始化进程(init)

 内核完成初步的硬件配置后,会启动init进程(现在大多数现代Linux发行版使用systemd替代了传统的SysV init作为初始化系统)。init进程负责进一步的系统启动任务,包括挂载根文件系统、启动其他系统服务、设置网络配置、启动图形界面(如果适用)等。

(六)Linux7个启动级别

作用:切换系统运行级别

语法:init 0-6

Linux 7 个启动级别:

0.系统停机模式,系统默认运行级别不能设置为0,否则不能正常启动,机器关的

1.单用户模式,root 权限,用于系统维护,禁止远程登陆,就像 Windows 下的安全模式登录

2.多用户模式,没有NFS 和网络支持

3.完整的多用户文本模式,有NFS 和网络,登陆后进入控制台命令行模式 

输入“init 3”进入文本模式

4.系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设

5.图形化模式,登陆后进入图形 GUI模式,XWindow系

登录root 用户,输入“init 5” 切换回图形模式

6.重启模式,默认运行级别不能设为6否则不能正常启动。运行init 6机器就会重启

1.设置启动级别

设置默认的运行界别centos7不再使用"etc/inittab 文件进行默认的启动级别配置,而使用比 sysvinit 的运行级更为自由的 target 替代。

第3运行级用 multi-user.target 替代。

设置默认启动第三个级别

输入systemctl set-default multi-user.target

第5运行级用 graphical.target 替代。

设置回第五级别(图形界面)

输入systemctl set-default graphical.target

2.查看当前级别

输入runlevel  或者  systemctl get-default进行查看

二、服务

(一)systemd服务

在Linux系统中,systemd(System Daemon)是一个系统和服务管理器,用于替代传统的SysV init初始化系统。它负责系统的启动、运行时服务管理以及关机过程,并且提供了许多高级特性,如并行化启动服务、按需激活服务、依赖关系处理等。

systemd的服务主要体现在其unit文件上,这些配置文件通常位于/etc/systemd/system或 /usr/lib/systemd/system/ 目录下,扩展名为 .service 的文件表示一个服务单元。每个服务单元的配置文件定义了如何启动、停止和管理该服务。

单元类型扩展名说明
Service.service扩展名
Socket.socket描述一个进程间通信的套接字
Device.device描述一个内核识别的设备文件
Mount.mount描述一个文件系统的挂载点
Automoun.automount描述一个文件系统的自动挂载点
Swap.swap描述一个内存交换设备或目录
Timer.timer                描述一个定时器               (用于实现类似cron的调度任务)
Path.path描述一个文件系统中文件或目录(path路径)
Snapshot.snapshot用于保存一个systemd的状态(snapshot快照)
Scope.scope使用systemd的总线接口以编程的方式创建外部进程
Slice.slice描述居于Cgroup的一组通过层次组织的管理系统进程
Target.target          描述一组systemd的单元         (target目标)

(二)修复mbr分区

1.加盘

新加一块盘,挂载

2.备份

备份分区表以及mbr

3.模拟破坏

输入hexdump -C -n 512  /dev/sda 查看一下该文件的前512个字节

输入:dd  if=/dev/zero  of=/dev/sda  count=1  bs=512  

这条命令的意思是在/dev/sda前512个字节写0,就相当于破坏了该文件的十六进制代码

4.进入急救模式

按照下列顺序进入急救模式

进入单用户模式

5.还原数据

创建目录:mkdir  bak

挂载:mount /dev/sdb /bak

还原:dd  if=bak/  of=/dev/sda  (count=1  bs=512)

因为这个文件只有512字节,所以次数和字节可以不用输入,默认全部复制一次

使用hexudump 查看一下字节

还原后输入reboot重启,就可以正常使用了

(三)修复grub文件及程序

1.模拟破坏文件

先模拟破坏grub.cfg 配置文件

输入mv  /boot/grub2/grub.cfg  /opt,在grob2目录下直接输入文件名就可以

2.重启进入急救模式 

它会进入grub界面

 重启后在读条时进入急救模式,这个要求手速比较快,大概在0.5秒作用

或者选择开机模式,打开电脑时进入固件

设置启动加载方式第一项为光盘启动

按F10保存退出

以CD-ROM 模式进入

3.切换根目录

从光盘的根切换到自己的系统根

chroot   /mnt/sysimage  

4.重新安装grub2程序

把grub2程序重新安装在sda磁盘

grub2 -install /dev/sda

5.重新生成配置文件

grub2-mkconfig  -o  /boot/grub2/grub.cfg

6.退出重启

先输入exit退出到光驱的根下 再输入reboot重启

(四)修改密码

如果root密码遗忘了,需要进入急救界面修改密码

情况一

有光驱的情况下进行修改密码

直接切换到系统根,输入passwd修改密码

而后退出(exit)、重启(reboot)

情况二

无光驱情况下

1.进入内核编辑

在Linux开头行末尾处加上rd.break,添加后按ctrl  + x执行

2.重新挂载

输入mount  -o  remount,rw  /sysroot 添加权限

3.切根

4.修改密码

如果你的selinux没有关闭,则需要输入touch  /.autorelabel  刷新一下该文件时间,重新打上标记

而后再退出重启

这样,我们的密码就修改成功了

(五)system服务命令

systemctlstart服务名启动服务
systemctl stop服务名关闭服务
systemctlstatus服务名查看服务状态
systemctl reload 服务名重新加载服务
systemctl  restart服务名重启服务
systemctlenable 服务名开机自启
systemctl  enable --now服务名开机自启,并立即启动
systemctl  disable 服务名开机不自启
systemctl disable --now服务名开机不自启,并立即关闭

程序如果要被systemd管理,需要在/usr/lib/systemd/system/下生成一个配置文件

如果用yum安装或者是rpm安装会自动生成配置文件,不需要手动加入,systemd会自动安装

使用yum安装httpd

它会自动生成一个配置文件

使用编译安装的话,需要手动配置文件

比如我们编译安装一个nginx,如何安装,我们之前在Linux安装、卸载程序中演示过

这时候需要手动写一个配置文件

新建一个配置文件,输入:vim  /usr/lib/systemd/system/nginx.service 

注意要以.service结尾

在新文件内输入以下内容

输入完毕后保存退出

而后需要重新加载systemd守护进程(daemon)的配置文件

输入systemctl  daemon-reload

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java 线程池参数详解与实战

1. 引言 在上一篇中,我们讲到了Java线程的特点和使用场景,Java多线程及通信方式详解-CSDN博客 今天就对Java 线程池参数再近一步进行了解。 在Java中,线程池是一组管理和复用线程的机制,它包含了一定数量的工作线程&#xff0…

跨年烟花-Html5实现_附完整源码【可直接运行】

文章目录 🍻前言🔸目录结构⚫完整源码🔵源码分析💮注意事项 💈总结 🍻前言 随着科技的进步和互联网的普及,人们对于跨年庆祝的方式也在不断变化。传统的烟花燃放虽然美丽,但存在环境…

Vite scss 如何引入本地 字体

Vite scss 如何引入本地 字体 最近在用 Vite 改造一个旧项目 Diary,遇到了好多从 Vue 转到 Vite 的问题。 这次这个问题是: scss 里本地字体引入的问题。 一、问题描述 可以看到下面的卡片字体,本来应该是 impact 的,但现在无法…

前缀和算法 -- [模版]二维前缀和

个人主页:Lei宝啊 愿所有美好如期而遇 本题链接 【模板】二维前缀和_牛客题霸_牛客网 输入描述 n是行,m是列,q是查询次数,x1,y1,x2,y2是二维数组的下标。 输出描述 通过两对下标&#x…

PostgreSQL表全解

文章目录 一、 约束1、 主键2、 非空3、唯一4、检查5、外键6、默认值 二、触发器1、构建表信息,填充数据2、触发器函数3、触发器 三、 表空间四、 视图五、索引1、 索引的基本概念2、索引的分类3、创建索引 六、 物化视图 一、 约束 1、 主键 primary key -- 主键…

粒子群优化pso结合bp神经网络优化对csv文件预测matlab(3)

1.csv数据为密西西比数据集,获取数据集可以管我要,数据集内容形式如下图: 2.代码 这里参考的是b站的一位博主。 数据集导入教程在我的另一篇文章bp写过,需要的话可以去看一下 psobp.m close all clc%读取数据 inputX; outputY;…

无边界支付:数字货币如何改变跨境电商?

在全球数字化的浪潮中,数字货币的崛起成为跨境电商领域的一场革命。本文将深入探讨数字货币如何重新定义支付体系,对跨境电商带来的影响以及未来可能的发展方向。 数字货币的崛起 随着比特币等数字货币的逐渐走俏,传统支付体系的边界逐渐被打…

c语言结构体学习上篇

文章目录 前言一、结构体的声明1,什么叫结构体?2,结构体的类型3,结构体变量的创建和初始化4,结构体的类型5,结构体的初始化 二、结构体的访问1,结构体成员的点操作符访问2,结构体体成员的指针访问 前言 昨…

基于RetinaFace+Jetson Nano的智能门锁系统——第二篇(配置环境)

文章目录 设备一、安装远程登录终端Xshell1.1下载Xshell1.2新建回话1.3查询ip地址1.4启动连接 二、安装远程文件管理WinScp2.1下载WinScp2.2连接Jetson Nano2.3连接成功 三、安装远程桌面VNC Viewer3.1下载VNC Viewer3.2在Jetson Nano安装VNC Viewer3.3设置VINO登录选项3.4将网…

工具变量-ESG基金持股数据集(2008-2022年)

一、数据介绍 数据名称:工具变量-ESG基金持股数据 数据范围:A股上市公司 数据年份:2008-2022年 样本数量:41621条 数据来源:中国责任投资年度报告、上市公司年报 数据整理:自主整理 二、参考文献 […

C#中字母与ASCⅡ码的转换

目录 一、关于ASCⅡ及与字符互转 1.主要用到Encoding对象的GetBytes方法 2.Char显式转换为数值类型得到ASCⅡ 二、实例 三、生成效果 四、程序中的一些知识点 1.IsLetterOrDigit() 2.GetBytes() 3.TryParse(string, out int) 一、关于ASCⅡ及与字符互转 ASCⅡ(Americ…

【SpringBoot3】1.SpringBoot入门的第一个完整小项目(新手保姆版+教会打包)

目录 1 SpringBoot简单介绍1.1 SpringBoot是什么1.2 主要优点1.3 术语1.3.1 starter(场景启动器) 1.4 官方文档 2 环境说明3 实现代码3.1 新建工程与模块3.2 加入依赖3.3 主程序文件3.4 业务代码3.5 运行测试3.6 部署打包3.7 命令行运行 1 SpringBoot简单…

YoloV7改进策略:AAAI 2024 最新的轴向注意力|即插即用,改进首选|全网首发,包含数据集和代码,开箱即用!

摘要 https://arxiv.org/pdf/2312.08866.pdf 本文提出了一种名为Multi-scale Cross-axis Attention(MCA)的方法,用于解决医学图像分割中的多尺度信息和长距离依赖性问题。该方法基于高效轴向注意力,通过计算两个平行轴向注意力之间的双向交叉注意力,更好地捕获全局信息。…

Windows安装部署nginx

1、官网下载安装包: 官网地址:https://nginx.org/en/download.html 下载好后,解压即可: 在nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,如果本地80端口已经被使用则修改成其…

强大的Git客户端 GitKraken 中文 for Mac

GitKraken提供了直观的图形化界面,让用户可以轻松地进行版本控制操作,而无需使用命令行界面。您可以通过可视化的工作区、分支图和提交历史,更清晰地了解代码的状态和演变。 跨平台支持:GitKraken可在多个操作系统上运行&#xf…

k8s之Pod的基础(上)

什么是pod? pod是k8s中最小的资源管理组件 pod也是最小运行容器化的应用的资源管理对象 pod是一个抽象的概念,可以理解为一个或者多个容器化应用的集合 在一个pod当中运行一个容器时最常用的方式 在一个pod当中同时运行多个容器,在一个po…

Docker之镜像上传和下载

目录 1.镜像上传 1) 先上百度搜索阿里云 点击以下图片网站 2) 进行登录/注册 3) 使用支付宝...登录 4) 登录后会跳转到首页->点击控制台 5) 点击左上角的三横杠 6) 搜索容器镜像关键词->点击箭头所指 ​ 编辑 7) 进入之后点击实例列表 8) 点击个人实例进入我们的一个…

凯越510X ADV欧洲上市,售价5.5万

凯越510X其实并不是一台新车,就是国内上市的双摇臂版本的525X,国内售价33900元,不过国外上市只有一个色,就是下方蓝黑灰的颜色,这个配色方案感觉还不错。 凯越525X作为国产中量级ADV3剑客,口碑销量一直都是…

Linux | 分布式版本控制工具Git【版本管理 + 远程仓库克隆】

文章目录 一、前言二、有关git的相关历史介绍三、Git版本管理1、感性理解 —— 大学生实验报告2、程序员与产品经理3、张三的CEO之路 —— 版本管理工具的诞生 四、如何在Linux上使用Git1、创建仓库2、将仓库克隆到本地3、git三板斧① git add② git commit③ git push 4、有关…

放弃努力必然下滑的2024

知道和做到,这其中有一道鸿沟。 努力不一定会成功,但是不努力连成功的概率都不会有。 问题 之前有朋友看过我的一些博文,问:"我如果不坚持写,仅靠存量能否维持一段时间?" "我如果不坚持写&#xff0c…