Linux 引导过程与服务控制

news2024/11/11 19:22:52

Linux操作系统引导过程

完整启动过程

简化紧要关键步骤(重点)

Linux系统开机引导过程:
1)开机自检        检测硬件设备,找到能够引导系统的设备,比如硬盘
2)MBR引导         运行MBR扇区里的主引导程序GRUB
3)启动GRUB菜单    系统读取GRUB配置文件(/boot/grub2/grub.cfg)获取内核的设置和位置,并在屏幕显示GRUB菜单页面
4)加载Linux内核   把内核加载到内存,将系统控制权交接给内核
5)init进程初始化  内核将init进程加载到内存中运行,并把init进程作为系统的第一个进程
6)系统初始化      启动内核模块,执行运行级别的启动脚本,执行/etc/rc.d/rc.local文件里的命令等

系统初始化进程

init进程 文件位于 /sbin/init -> /lib/systemd/systemd  ,init进程PID(进程标记)号固定为 1 ,是系统中其它所有进程的父进程

init进程负责组织和运行许多独立的或相关的初始化工作,因此也被称为init系统。init系统可以定义,管理和控制init进程的各种行为,从而让计算机系统进入某种用户所需的运行模式。

可以通过pstree -p 命令查看PID

进程启动方式

centos7开始的版本默认的启动方式是 systemd,开机服务程序为并行启动,启动效率较快
centos6及以前版本的启动方式是 sysVinit,开机服务程序是通过串行执行/etc/init.d/目录下的shell脚本启动的,容易阻塞,启动效率较慢

systemd服务启动文件在lib/systemd/systemd中

Systemd单元类型

.service(实现单个应用的状态管理)和.target(实现多个应用/一组程序的状态管理)

Linux的运行级别

启动类故障恢复

先进入opt目录创建一个用于做备份的目录 ,添加一个用于做备份的硬盘

硬盘分区做格式化

挂载到刚刚创建做备份的目录上


如果是 MBR 整个扇区数据被破坏了,需要进入到急救模式将备份的MBR数据导入还原
备份命令:dd if=/dev/sda  of=备份文件  bs=512  count=1

演示做个破坏

重启后操作系统黑屏 无法进入操作系统

进入急救模式

创建一个新的备份目录 挂载备份光盘到这个新目录上

还原命令:dd if=备份文件  of=/dev/sda      然后关机重启

模拟 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.el7.x86_64.img                                        #镜像系统文件
grub> boot                                                                                                  #引导boot

第二种方法:先进入急救模式

可以切换光盘启动

先切换到环境根目录

在急救模式下重建GRUB配置文件  chroot /mnt/sysimage   ->   grub2-mkconfig -o /boot/grub2/grub.cfg

重启即可
 

如果是 MBR 的GRUB主引导程序被破坏了(硬盘分区表还在)
1)在急救模式下使用备份文件恢复          dd if=备份文件  of=/dev/sda  bs=446  count=1
2)在急救模式下重建MBR的GRUB主引导程序   chroot /mnt/sysimage   ->   grub2-install /dev/sda

root密码遗忘修改

两种方法

1)在急救模式下   先切换系统根环境 chroot /mnt/sysimage   ->  passwd root


2)在GRUB菜单按 e 键,修改内容 
在 linux16 /vmlinuz-3.10.0-1160.71.1.el7.x86_64 root=UUID=a99fd431-dc10-4233-a655-3c4b8d710624 ro rhgb quiet LANG=zh_CN.UTF-8 这行后面追加配置
rw single init=/bin/bash ,再按 ctrl + x 重启系统
再在bash界面输入 passwd root 修改密码  ->  touch /.autorelabel  -->   exec /sbin/init

系统服务控制

服务管理操作
1、systemctl start|stop|restart|reload|status|is-active 服务名[.service]  

#要确保在 /usr/lib/systemd/system/ 目录中有相关服务的 XXX.service 文件

2、service 服务名 start|stop|restart|reload|status      (属于centos7前没有systemctl会使用这个service)                 

  #要确保在 /etc/init.d/ 目录中有相关服务的管理脚本文件
 

服务开机自启管理


systemctl enable|disable [--now] 服务名[.service]       # --now选项可实现立即开启|关闭服务
systemctl is-enabled 服务名[.service]      查看开机自启是否已打开

centos7以前

先vim 进入脚本文件chkconfig (添加服务管理)   35是运行级别开机自动启动 20是启动位  99是关闭位

chkconfig --add 服务名                    #服务名就是 /etc/init.d/ 目录下的脚本文件名


chkconfig --level 运行级别列表  服务名  on|off            #开启|关闭服务在哪些运行级别下开机自启
chkconfig --list 服务名                                                   #查看自启状态

运行级别

runlevel         #查看上一次的运行级别 和 当前的运行级别

systemctl get-default    #查看当前的默认运行级别
 

systemctl set-default multi-user.target|graphical.target      #设置默认运行级别
等效于

ln -s -f /usr/lib/systemd/system/multi-user.target|graphical.target  /etc/systemd/system/default.target

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

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

相关文章

【STM32+HAL+Proteus】系列学习教程---RS485总线(收发仿真实现)

实现目标 1、掌握UART/USART/RS485等几个常见概念的区别 2、掌握RS485的逻辑电平、硬件接线等基础知识 3、具体实现目标:1、利用两个单片机组成RS485通信网络;2、两个单片机之间能实现正常收发数据。 一、串口、RS485等之间的关系 串口:是…

使用 Docker 部署 Draw.io 在线流程图系统

1)介绍 Draw.io GitHub:https://github.com/jgraph/drawio Draw.io 是一款开源的绘制流程图的工具,拥有大量免费素材和模板。程序本身支持中文在内的多国语言,创建的文档可以导出到多种网盘或本地。无论是创建流程图、组织结构图…

vscode 解决无法创建临时文件。

报错: Fatal error: cant create C:\Users???y\AppData\Local\Temp\ccqkCS9j.o: No such file or directory 右击此 电脑 -> 属性 打开 系统信息 -> 高级系统设置 系统属性 -> 高级 -> 环境变量 将temp 和 tmp 改为其它英文路径 只更改用户变量…

Opencv_2_ 图像色彩空间转换

ColorInvert.h 内容如下&#xff1a; #pragma once #include <opencv.hpp> using namespace std; #include <opencv.hpp> using namespace cv; using namespace std; class ColorInvert{ public : void colorSpaceInvert(Mat&image); }; ColorInvert.cpp…

kubernetes中的副本控制器rc(replicationcontrollers)和rs(replicasets)

一、rc控制器replicationcontrollers rc控制器就是控制相同pod副本数量 使用rc控制器资源创建pod&#xff0c;设定创建pod资源的数量 1.1 案例 1.1.1、创建资源清单 [rootmaster rc-demo]# cat rc.yaml apiVersion: v1 kind: ReplicationController metadata: name: rc01 …

Spring Cloud面试篇

面试篇-nacos面试题 1. springboot常见组件 注册中心组件&#xff1a;Eureka、Nacos 负载均衡组件&#xff1a;Ribbon 远程调用组件&#xff1a;OpenFeign 网关组件&#xff1a;Zuul、Gateway 服务保护组件&#xff1a;Hystrix、Sentinel 服务配置管理组件&#xff1a;SpringCl…

如何用PHP语言实现远程语音播报

如何用PHP语言实现远程语音播报呢&#xff1f; 本文描述了使用PHP语言调用HTTP接口&#xff0c;实现语音播报。通过发送文本信息&#xff0c;来实现远程语音播报、语音提醒、语音警报等。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格 序号设备名称1…

路由引入,路由过滤,路由策略实验

1&#xff0c;配置IP地址 R1&#xff1a; [R1]dis ip interface brief Interface IP Address/Mask Physical Protocol GigabitEthernet0/0/0 100.1.1.1/24 up up LoopBack0 …

环境配置--idea练习java实现一键运行

背景 练习java时&#xff0c;先编译再运行&#xff0c;手动执行效率太慢。需要像运行python脚本一下快速获取脚本执行效果。 idea配置 使用java草稿方式实现java脚本的快速调试。 具体配置&#xff1a; 添加java草稿配置 指定java主要类、文件路径、工作目录&#xff0c;…

高频前端面试题汇总之前端性能优化篇

一、CDN 1. CDN的概念 CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;是指一种通过互联网互相连接的电脑网络系统&#xff0c;利用最靠近每位用户的服务器&#xff0c;更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户&#…

基于51单片机的宠物自动喂食语音播报,有实物

1. 51仿真&#xff1a; LCD第一屏显示食物重量&#xff0c;当前时间&#xff0c;温湿度。第二屏显示喂食时间&#xff0c;第三屏显示喂食重量。可通过点击查看喂食时间翻转屏幕显示。 点击查看喂食时间后&#xff0c;显示喂食时间&#xff0c;可以设置三个时间&#xff0c;再点…

3D Gaussian Splatting介绍

目录 一、概述二、基础介绍1. 多维高斯分布2. 将3D 高斯投影到2D像素平面3. 球谐函数4. Splatting and α \alpha α blending 三、整体流程四、 伪代码五、评价指标六、实验结果七、reference 一、概述 3D Gaussian Splatting和NeRF一样&#xff0c;主要用于新视图合成。 特…

视频批量剪辑新风尚:横屏内容轻松转竖屏,引领内容创作新风尚!

随着移动设备的普及和社交媒体的崛起&#xff0c;横屏视频逐渐成为内容创作的新宠。然而&#xff0c;在某些场景下&#xff0c;竖屏视频仍然具有无可比拟的优势。为了满足创作者多样化的需求&#xff0c;我们推出了全新的视频剪辑功能——横屏转竖屏&#xff01; 第一步&#…

合合信息Embedding模型:引领中文文本向量化技术新高度

目录 &#x1f345;前言&#x1f353;赛事含金量&#x1f353;Embedding技术简介&#x1f353;Embedding在大模型中的价值&#x1f353;合合信息Embedding模型特点及优势&#x1f353;合合信息Embedding模型测试&#x1f353;技术突破&#x1f353;公司介绍 &#x1f345;总结 …

flutter 谷歌的苹果系统消息推送

flutter firebase 云消息通知教程 (android-安卓、ios-苹果) Android、ReactNative、Flutter集成Firebase推送注意事项 Android&#xff1a;Firebase 凭据 iOS&#xff1a;基于 p8 令牌的 APN 连接 iOS&#xff1a;p12 生成证书 Flutter之对接国外推送onesignal踩坑笔记&a…

计算机网络学习day02|HTTP协议

目录 一、HTTP报文格式长什么样&#xff1f;是如何分割的&#xff1f; 请求行 状态行 头部字段 常用头字段 小结 二、HTTP提供了哪些方法&#xff1f;GET和POST的区别是什么&#xff1f; 1.HTTP有哪些方法 2.GET/HEAD 3.PSOT/PUT 小结 三、URI和URL URI 的格式 U…

【C++】 【进程】第二天

1.类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员函数。 默认成员函数&#xff1a;用户没有显式实现&#xff0c;编译器会…

2024三掌柜赠书活动第二十四期:containerd原理剖析与实战

目录 前言 Containerd的架构 Containerd的工作流程 Containerd的实战演示 关于《containerd原理剖析与实战》 编辑推荐 内容简介 作者简介 图书目录 书中前言/序言 《containerd原理剖析与实战》全书速览 结束语 前言 作为开发者&#xff0c;对于编程语言并不陌生&…

【ARM 裸机】C 语言 led 驱动

前面刚学习了汇编 led 驱动的编写和验证&#xff0c;现在开始就要进入 C 语言 led 驱动编写与验证了 ! 1、C 语言运行环境构建 1.1、设置处理器模式 使 6ULL 处于 SVC 模式下&#xff0c;之前已经提到了处理器的九种模式&#xff0c;参考&#xff1a;【ARM 裸机】汇编 led 驱…

在Nuxt.js中添加PostCSS自动前缀器

在其他浏览器中&#xff0c;有些 CSS 属性需要带有前缀。如-webkit- | -o- | -ms- 等等 Autoprefixer 是一个 PostCSS 插件&#xff0c;可以将你的CSS代码渲染到浏览器中自动补充厂商前缀&#xff0c;因此你不用担心自己编写的CSS代码有浏览器兼容性问题。 如&#xff1a; .fl…