Linux(引导过程与服务控制)

目录

1.linux操作系统引导过程

1.1引导过程总览 

​编辑1.2 linux操作系统的引导过程 

1.3 系统初始化进程

 1.4 Systemd单元类型

1.5 运行级别所对应的systemd目标 

2.排除启动类故障

2.1 修复MBR扇区故障 

2.2 实例:修复MBR扇区故障

2.3 实例:恢复GRUB引导程序 


1.linux操作系统引导过程

1.1引导过程总览 

1.2 linux操作系统的引导过程 

 1. 开机自检

 服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。

总结: 检查硬件设备,检测出第一个能够引导系统的设备,比如硬盘或者光驱

2. MBR 引导

 当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR 记录中的引导信息调用启动菜单(如 GRUB)。

总结:  运行MBR扇区里的主引导程序GRUB

 3.启动 GRUB 菜单

 对于Linux操作系统来说,GRUB(统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核

CentOS 7 采用的是 GRUB2 启动引导器。

 总结:启动GRUB菜单    系统读取GRUB配置文件(/boot/grub2/grub.cfg)获取内核的设置和位置,并在屏幕显示GRUB菜单页面

 4.加载 Linux 内核

Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程。
CentOS 7系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。
总结:把内核和镜像文件系统加载到内存中

 5.init 进程初始化

为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init 进程负责完成整个系统的初始化,最后等待用户进行登录。
总结:加载硬件驱动程序,内核把init进程加载到内存中运行
 

6.   系统初始化    

总结:启动内核模块,执行运行级别的启动脚本,执行/etc/rc.d/rc.local文件里的命令等 

 

1.3 系统初始化进程

 init进程

● 由Linux内核加载运行/sbin/init程序

● init进程是系统中第一个进程,是所有进程的父进程

● init进程的PID(进程标记)号永远为1 

Systemd 

● Systemd是Linux操作系统的一种init软件

● CentOS7中采用全新的Systemd启动方式,取代传统的sysVinit

 CentOS7中运行的第一个init进程是/lib/systemd/systemd

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

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

 1.4 Systemd单元类型

 

1.5 运行级别所对应的systemd目标 

 

2.排除启动类故障

2.1 修复MBR扇区故障 

故障原因

● 病毒、木马等造成的破坏

● 不正确的分区操作、磁盘读写误操作

故障现象

 找不到引导程序,启动中断

● 无法加载操作系统,开机后黑屏

解决思路

● 应提前作好备份文件

● 以安装光盘引导进入急救模式

● 从备份文件中恢复

2.2 实例:修复MBR扇区故障

(1)新建一块硬盘sdb,并将该硬盘格式化,挂载到/backup目录中;

 

[root@localhost ~]# fdisk -l

磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00010c9c

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    83886079    40893440   8e  Linux LVM

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-root:37.7 GB, 37706792960 字节,73646080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-swap:4160 MB, 4160749568 字节,8126464 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x1c4e72ec 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

[root@localhost ~]# mkfs -t xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=1310656 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242624, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mount /dev/sdb1 /opt/mbr.bak/
[root@localhost ~]# df -ht
df:选项需要一个参数 -- t
Try 'df --help' for more information.
[root@localhost ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  2.0G     0  2.0G    0% /dev
tmpfs                   tmpfs     2.0G     0  2.0G    0% /dev/shm
tmpfs                   tmpfs     2.0G   13M  2.0G    1% /run
tmpfs                   tmpfs     2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        36G  5.2G   30G   15% /
/dev/sda1               xfs      1014M  174M  841M   18% /boot
tmpfs                   tmpfs     394M   20K  394M    1% /run/user/0
/dev/sr0                iso9660   4.5G  4.5G     0  100% /run/media/root/CentOS 7 x86_64
/dev/sdb1               xfs        20G   33M   20G    1% /opt/mbr.bak

(2)备份MBR扇区数据到其他磁盘(/dev/sdb1); 

[root@localhost ~]# dd if=/dev/sda of=/opt/mbr-bak bs=512 count=1  #将MBR扇区文件中数据,备份到/backup/mar.bak目录中
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000172723 秒,3.0 MB/秒

 (3)模拟破坏MBR引导扇区;

[root@localhost ~]#  dd if=/dev/zero of=/dev/sda bs=512 count=1 #将零设备文件复制到MBR扇区文件中进行破坏
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000113332 秒,4.5 MB/秒

 

(4)重新启动虚拟机;

 


(5)引导界面进入急救模式,从备份文件中恢复MBR扇区数据; 

 

2.3 实例:恢复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引导程序;

(1)备份GRUB配置文件到/bak/grub.bak文件中;

(2)引导界面进入急救模式,从备份文件中恢复GRUB引导数据; 

方法三:引导界面进入急救模式,重建GRUB菜单配置文件;

(1)手动删除/boot/grub2/grub2.cfg文件;

[root@clr ~]# cd /boot/grub2
[root@clr /boot/grub2]# ls
device.map  fonts  grub.cfg  grubenv  i386-pc  locale
[root@clr /boot/grub2]# rm -rf grub.cfg   #手动删除/boot/grub2/grub2.cfg文件
[root@clr /boot/grub2]# ls
device.map  fonts  grubenv  i386-pc  locale
[root@clr ~]# init 6 #重启系统

 (2)进入急救模式,加载光盘镜像,切换到系统根环境;

重新启动虚拟机,在系统刷新读取设备文件时,快速按esc,进入CD-ROM Drive,通过光盘方式进行启动; 

 

 

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

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

相关文章

【MIT6.S081】Lab4: traps(详细解答版)

实验内容网址:https://xv6.dgs.zone/labs/requirements/lab4.html 本实验的代码分支:https://gitee.com/dragonlalala/xv6-labs-2020/tree/traps2/ Backtrace 关键点:trapframe、栈 思路: 这道题的关键是栈结构,先阅读xv6中关于栈…

Kafka导航【Kafka】

Kafka导航【Kafka】 前言版权推荐Kafka随堂笔记 第三章 生产者3.4生产者分区3.4.1.分区好处3.4.2 生产者发送消息的分区策略3.4.3 自定义分区器 3.5 生产经验——生产者如何提高吞吐量3.6 生产经验——数据可靠性3.7 生产经验——数据去重3.7.1 数据传递语义3.7.2 幂等性3.7.3生…

python爬虫笔记1

1 爬虫介绍 爬虫概述: 获取网页并提取和保存信息的自动化程序 1.获取网页 2.提取信息 css选择器 xpath 3.保存数据(大数据时代) 4.自动化 爬虫(资产收集,信息收集) 漏扫(帮我发现漏洞&#xff…

FK中的一些方法

1. 隔离法与整体法 目标:对一个拉新邀请任务,识别出其中的作弊用户。 欺诈类的数据,黑样本不足,需要自己去找,可按IP、昵称、手机号相似性等。虽然有 会员等级、注册时长、注册地址、成交订单等特征,但分类…

内网抓取Windows密码明文与hashdump思考题笔记整理

目录 思考题 第一题 第二题 第三题 第四题 第五题 思考题 1.windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文 2.我们通过hashdump 抓取出 所有用户的密文,分为…

扩散卷积模型 笔记

1 Title Diffusion Convolutional Neural Networks(James Atwood and Don Towsley)【NeurIPS 2016】 2 Conclusion This paper presents diffusion-convolutional neural networks (DCNNs), a new model for graph-structured data. Through the introd…

国内如何用GPT4

许多人曾向我咨询是否有一个稳定且不折腾的全球AI大模型测试网站,既能确保真实可靠性,又能保障稳定、快速的运行,避免频繁出现故障、错误或漫长的等待时间。到目前为止,我已经尝试了国内超过10个镜像站点,但遗憾的是&a…

【R语言】概率密度图

概率密度图是用来表示连续型数据的分布情况的一种图形化方法。它通过在数据的取值范围内绘制一条曲线来描述数据的分布情况,曲线下的面积代表了在该范围内观察到某一数值的概率。具体来说,对于给定的连续型数据,概率密度图会使用核密度估计&a…

分布式锁实现方案-基于zookeeper的分布式锁实现(原理与代码)

目录 一、基于zookeeper的分布式锁 1.1 基于Zookeeper实现分布式锁的原理 1.1.1 分布式锁特性说明 1.1.1.1 特点分析 1.1.1.2 本质 1.1.2 Zookeeper 分布式锁实现原理 1.1.2.1 Zookeeper临时顺序节点特性 1.1.2.2 Zookeeper满足分布式锁基本要求 1.1.2.3 Watcher机制 …

重生奇迹mu坐骑怎么升级

重生奇迹mu坐骑怎么升级 1、前期,都是主线任务,我们必须要跟着主线任务走,前面的话升级一次需要的经验很少的,一天下来可以升级100级是轻轻松松的,主线任务是比较多的,我们跟着任务一直做差不多可以到150级…

陇剑杯 省赛 攻击者1 CTF wireshark 流量分析

陇剑杯 省赛 攻击者1 题目 链接:https://pan.baidu.com/s/1KSSXOVNPC5hu_Mf60uKM2A?pwdhaek 提取码:haek ├───LogAnalize │ ├───linux简单日志分析 │ │ linux-log_2.zip │ │ │ ├───misc日志分析 │ │ acce…

MATLAB实现遗传算法优化BP神经网络预测数值(GABP)

遗传算法(Genetic Algorithm, GA)和反向传播(Back Propagation, BP)神经网络是两种强大的算法,分别用于优化和机器学习。将遗传算法与BP神经网络结合,可以利用遗传算法的全局搜索能力来优化BP神经网络的初始…

CAP实战Demo理论

问题 分布式微服务研发总会遇到CAP理论相关,但是没有相应例子,总是遗忘。 实践 实验 节点1 含有App1 Data1 节点2 含有App2 Data1 当节点1写请求执行成功,节点1数据为Data2,网络不通无法同步时 节点2 发送读请求 满足A可用性…

HBase安装部署

Apache HBase是按列存储数据的NoSQL类型数据库,其数据文件是存储在Hadoop集群中,支持数据以及服务的高可用性以及支持集群节点的大规模可扩展性,本文主要描述HBase的安装部署。 如上所示,HBase的总体架构,HBase Master…

「GO基础」变量

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【java】(软考)面向对象---责任链解析

目录 责任链的意义 手写笔记 ​编辑 责任链的意义 当您把请求给出时,如果某对象不能实现您的操作,责任链会自动把您的请求传给它的下一级 从而避免请求的发送者和接受者之间的耦合关系 这里以2007年下半年试题七进行说明 题目描述 某企业的采购审批…

EFK安装与使用!!!

一、将你的项目进行打包。 二、上传到docker, 启动项目 三、修改前端的代理路径 四、EFK相关配置 1、docker-compose.yml: version: 3 services:kibana:image: kibana:7.14.0ports:- "5601:5601"environment:- ELASTICSEARCH_HOSTShttp://19…

Excel数据处理:使用条件格式

选中你要特别体现的列 然后在开始处点击条件格式 标记大于1500000的值 点击突出显示 点击大于 输入1500000 设置单元格格式 点击条件格式 点击清除 去掉表头的格式 标记重复值强调显示 公式的使用 要去锁定单元格的值(加上F4) 比较后一列相同位置…

数据结构(七)——B树和B+树

7.4.1_1 B树 5叉查找树 //5叉排序树的结点定义 struct Node {ElemType keys[4]; //最多4个关键字struct Node &child[5]; //最多5个孩子int num; //结点中有几个关键字 }; 如何保证查找效率? eg:对于5叉排序树,规定…

kafka学习1 - 线程、进程消息通信方式、JMS模型、Kafka原理图

1、线程和线程之间的数据交互 两个不同的线程之间是可以通过堆内存的方式进行数据交互的; T1线程的数据发送得到堆内存,T2线程就可以共享堆内存的数据。 存在的问题: T1线程发送数据的速率是50/s,T2线程消费的速率是30/s&#…