Linux 引导过程与服务控制

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.hqwc.cn/news/641541.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET MVC中Filter过滤器的使用

MVC Filter是典型的AOP(面向切面编程)应用,在ASP.NET MVC中的4个过滤器类型,如下: 但是默认实现它们的过滤器只有三种,分别是ActionFilter(方法),Authorize(授…

Rust-01 Hello Rust 10分钟上手编写第一个Rust程序 背景介绍 发展历史 环境配置 升级打怪的必经之路

背景介绍 Rust 是一种多范式、通用的编程语言,强调性能、类型安全和并发性。它通过一个称为“借用检查器”的机制在编译时追踪所有引用的对象生命周期,以强制实现内存安全,即确保所有引用都指向有效的内存,而不需要垃圾收集器。 …

小程序中使用HTTPS调用自带文本安全内容检测接口(msg_sec_check)的实现方法

在小程序中调用自带的文本安全内容检测接口,你需要使用小程序提供的wx.request方法。以下是一个示例代码: javascript代码: // 假设你已经获取了access_token,如果不知道如何获取,可以参考我上一篇文章 const access_token 你的access_tok…

JS 删除数组元素( 5种方法 )

No.内容链接1Openlayers 【入门教程】 - 【源代码示例300】 2Leaflet 【入门教程】 - 【源代码图文示例 150】 3Cesium 【入门教程】 - 【源代码图文示例200】 4MapboxGL【入门教程】 - 【源代码图文示例150】 5前端就业宝典 【面试题详细答案 1000】 文章目录 一、五种…

QT中文乱码常见解决办法

QT中出现中文字符串乱码情况时(如图示), 可尝试下面的几种方法: 1、QString str QStringLiteral("1你好世界 hello world")); //推荐2、QString str QObject::tr("2你好世界 hello world")); //推荐国际化场景使用3、QString str QString::fromU…

Linux内核驱动开发-001字符设备开发-003独立按键杂项驱动

1驱动程序 /*************************************************************************> File Name: key_misc.c> Author: yas> Mail: rage_yashotmail.com> Created Time: 2024年04月22日 星期一 17时20分42秒**********************************************…

DBA-现在应该刚刚入门吧

说来话长 在2023年以前,我的DBA生涯都是“孤独的”。成长路径除了毕业前的实习期有人带,后续几乎都是靠自学。如何自学,看视频、看文档、网上查阅资料、项目实战。 可能是学疏才浅 ,一直都是在中小公司混,在中小公司通…

30V-STM32设计项目

30V-STM32设计 一、项目描述 (已验证) 基于STM32c8t6芯片设计的开发板,支持4-30V宽电压输入,串口模式自动下载功能,支持串口和STlink,方式下载程序 二、原理图介绍 电源电路采用了DCDCLDO电路,如果是外接DC头供电的话&…

GELU激活函数

Gaussian Error Linerar Units(GELUS) 论文链接:https://arxiv.org/abs/1606.08415 在激活函数领域,鄙视链应该是:Elus > Relu > Sigmoid ,这些激活函数都有自身的缺陷, sigmoid容易饱和,Elus与Rel…

【Transformer】detr之encoder逐行梳理(二)

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 detr之encoder逐行梳理 1. 整体 encoder由encoder layer构成 输入进encoder的特征shape:(hw,b,c),后文将给出说明 class Transformer(nn.…

java-springmvc 01

MVC就是和Tomcat有关。 01.MVC启动的第一步,启动Tomcat 02.Tomcat会解析web-inf的web.xml文件

《架构风清扬-Java面试系列第23讲》如何理解Java的泛型檫除?

晚上好,给大家加个餐 来,思考片刻,说出你的答案 1,什么是泛型檫除? 泛型擦除是指编译器在处理泛型代码时,会在编译阶段移除(擦除)所有与泛型相关的类型参数信息,将其替换…