Linux启动流程和故障恢复

<head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Linux启动流程和故障恢复</title> <link rel="stylesheet" href="https://stackedit.io/style.css" /> </head>

系列文章目录

第一章 :red hat linux系统下载安装
第二章:Linux用户和组
第三章:Linux文件管理
第四章:Linux目录管理
第五章:Linux文本编辑器
第六章:Linux文件查找与管理
第七章:Linux输入,输出的重定向以及管道
第八章:Linux包管理
第九章:Linux的系统监控以及进程管理
第十章:Linux服务管理以及计划任务
第十一章:Linux启动流程和故障恢复

<hr color="#000000" size="1&quot;"> <h1><a id="_23"></a>前言</h1> <p>这章实验相对少一些,主要是理论,但也不要强行记忆,以理解为主,但实验相对之前的内容都有难度的提高,老规矩,记得抓快照。<br> 博客内容是基于rethat8写的,如果用的是比较老的服务器,可能有所不同。<br> <strong>注</strong>:提前抓好快照,因为可能实验一次性不成功。</p> <hr color="#000000" size="1&quot;"> <h1><a id="_30"></a>一、启动流程</h1> <p><img src="https://img-blog.csdnimg.cn/1540918fc00e42728c5b84b09abe407b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 这个流程图是基于红帽6的启动流程,7和8的差不多,凑活看吧,博主也是直接从教材上边粘贴过来的。</p> <h2><a id="bios_33"></a>开机自检(bios)</h2> <p>这个大家如果有重装系统的经历,可能都见过,通过U盘或者快捷键进入bios界面,用虚拟机也可以直接进入<br> <img src="https://img-blog.csdnimg.cn/d530f0655c254829a8ccc46a365df7e8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 一般就会出现这样的界面。<img src="https://img-blog.csdnimg.cn/4f51a7efc757467b86e1d2703e8be02d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 这个可理解为硬件上的一个操作系统,存储时间什么的,这个是不能断电的,台式机里会有一颗纽扣电池为其供电,大该能坚持几年,我家的一台老电脑好几年没开,再开机时间就调不对了,就是主板电池也就是那个纽扣电池亏电太久了,已经无法在充电使用了,后来换了电池就能继续使用了。</p> <p><img src="https://img-blog.csdnimg.cn/7147252204634cee9ea9025d23b19d3e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"></p> <h2><a id="MBR_40"></a>MBR引导</h2> <p><img src="https://img-blog.csdnimg.cn/7d9927b12e95409b86d622e8081f2339.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> MBR中有512个字节,其中头446叫Bootloader装一些引导的东西,比如下一步grup的菜单,这个就是硬盘里的第一个扇区,我们可以用命令查看。</p> <pre><code class="prism language-bash"><span class="token function">fdisk</span> -l </code></pre> <p><img src="https://img-blog.csdnimg.cn/408594ddb3c44a99a1ad5d881a7b0973.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"></p> <h2><a id="GRUB_54"></a>GRUB菜单</h2> <p>通过Bootloader的引导进入GRUB菜单,会进入到/boot/grub2/grub.cfg以及/boot/loader/entries/文件夹,这里面存储着内核的信息,用来下一步加载内核</p> <h2><a id="_56"></a>内核加载</h2> <p>内核信息所在文件夹,.conf用来存储信息</p> <pre><code class="prism language-bash">ll /boot/loader/entries/ </code></pre> <p><img src="https://img-blog.csdnimg.cn/8ce867c8f0314d9092956b0bf1bde3d2.png" alt="在这里插入图片描述"><br> 还有/boot/grub2/grub.cfg<br> 红帽8把这部分信息分到了两个地方,较安全由提升,有一个损坏就无法启动了。</p> <p><img src="https://img-blog.csdnimg.cn/90d968aadda24df1a913d0891d5c1144.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 这是拿shell脚本写的,我也看不懂,你就知道里面放着内核信息就可以了。<br> 他们·是由/etc/grub.d/的文件生成的,也就是说如果这个grub文件损坏了或者丢失了,可以从/etc/grub.d重新生成。<br> <img src="https://img-blog.csdnimg.cn/2d07c9e65fed4927a8f66bfa84c5f32a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"></p> <h2><a id="_70"></a>第一个程序</h2> <p>在红帽6及以前第一个线程都是/sbin/init,到了7以后架构变了换成了systemd可以通top命令查看</p> <p><img src="https://img-blog.csdnimg.cn/acd1975c3f8949e4946767fedec9fb7e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 以前是通过读取inittab配置信息来启动,现在都归到systemd所以那张图里剩下的都不用看。</p> <h2><a id="systemd_76"></a>systemd</h2> <p>可以使用systemctl设置默认启动项,比如登陆可视化界面还是字符界面,这个的参数就非常多了。<br> 登陆类型一般有五个可以用init来转换<br> 0:关机<br> 1:单用户模式<br> 2:多用户无网络(字符)<br> 3:多用户(字符)<br> 4:保留<br> 5:图像化界面<br> 6:重启<br> 举个例子</p> <pre><code class="prism language-bash">init <span class="token number">0</span> <span class="token operator">=</span> <span class="token function">halt</span> -p init <span class="token number">6</span> <span class="token operator">=</span>reboot init <span class="token number">3</span><span class="token comment">#进入字符界面</span> </code></pre> <p>用systemctl set-default可以设置默认登陆界面,六个界面就是我分别框住的。<br> <img src="https://img-blog.csdnimg.cn/1e400c0aa54e47388ae0ffebcaaca7eb.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"></p> <pre><code class="prism language-bash">systemctl set-default runlevel3.target </code></pre> <p><img src="https://img-blog.csdnimg.cn/d13f31fd897149748ff6e0f2b34b3c68.png" alt="在这里插入图片描述"><br> 然后重启虚拟机。<br> <img src="https://img-blog.csdnimg.cn/a9a779266e504e15ab73494bc0ef71dc.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 他会自动进入3模式,用init 5可以转到图形界面<br> <img src="https://img-blog.csdnimg.cn/86c911e1d4714a098f98d00c9f6e451c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 到这里Linux就完全启动了,systemctl的参数很多啊,不仅仅可以设置默认启动默认,具体还有什么等用到再说。</p> <h1><a id="_108"></a>二、故障恢复</h1> <h2><a id="1_109"></a>1.破解密码</h2> <p>比如你密码忘了或者被入侵了,但这个有一个局限,必须得直接接触物理机,如果用Xshell远程连接是不行的。<br> 现在咱们在根下边建一个文件用于区分</p> <p><img src="https://img-blog.csdnimg.cn/ff72bd49fba14f628f01ec2d59374308.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 现在reboot重启电脑<br> <img src="https://img-blog.csdnimg.cn/bc98c9feef1844cea1ff058bbbb101d5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 在这个界面可以通过方向键停止下一步开机,按e进行编辑。<br> 之后进入这个界面</p> <p><img src="https://img-blog.csdnimg.cn/f08fecd8a2c34a49855c9263310d4038.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 通过光标移动,将光标移动到内核的最后输入 rd.break console=tty0<br> 如图所示<br> <img src="https://img-blog.csdnimg.cn/bf8ef2ce289842b2b8e55ee4609c15ea.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 按 Ctrl+x继续启动<br> 之后可以直接进入字符界面<br> <img src="https://img-blog.csdnimg.cn/6b4dea6487db4069983da7aae19b0654.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 咱们通过ls-l查看根目录<img src="https://img-blog.csdnimg.cn/9bf92827af264efe83fde8da37d0f47b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 会发现没有咱们刚刚创建的文件,这其实是类似Windows的PE一样,只是一个小镜象。真正的系统根目录在/sysroot目录下</p> <p><img src="https://img-blog.csdnimg.cn/d47385fb87ff4759b5fe63c261930772.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 现在的挂载默认是只读挂载,我们需要重新设置可读可写挂载,不然没法修改密码。</p> <pre><code class="prism language-bash"><span class="token function">mount</span> -o remount,rw /sysroot/ </code></pre> <p>将 /sysroot/设置为根目录</p> <pre><code class="prism language-bash"><span class="token function">chroot</span> /sysroot/ </code></pre> <p><img src="https://img-blog.csdnimg.cn/c72f7ef749bf4598b28eacc9bddc2b97.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述">现在看可以看到系统根目录以及被挂载到/上了。现在就可以直接修改密码了。<br> <img src="https://img-blog.csdnimg.cn/20ceaf19b0024ccdb9e15fac37b2c087.png" alt="在这里插入图片描述"><br> 通过这样破解密码,需要打标,具体是什么这是也不用说了,直接说怎么做吧。</p> <pre><code class="prism language-bash"><span class="token function">touch</span> /.autorelabel </code></pre> <p>然后两次使用exit退出即可进系统,时间可能会长一点。<br> 之后就可以用新密码进入了。<br> <img src="https://img-blog.csdnimg.cn/1413ac008f61409d805271a7a47ac741.png" alt="在这里插入图片描述"></p> <h2><a id="2_154"></a>2.反破解密码</h2> <p>刚刚演示破解密码,看以看到这个过程没有什么密码验证,简单来说,只要能接触到物理机就可以破解密码,感觉不是很安全,所以接下来就是加密。<br> 这个需要修改grub2.cfg文件,前面说了,grub2.cfg由/etc/grub2.d/下的文件生产,然后重新生成grub2即可.<br> 在文件夹下随便找一个进行修改<br> <img src="https://img-blog.csdnimg.cn/4bb6439299944c489afad5ee161dbf8f.png" alt="在这里插入图片描述"><br> 在结尾追加以下内容。<br> <img src="https://img-blog.csdnimg.cn/944ca99aa6bf4cbc9edc31128117c3bc.png" alt="在这里插入图片描述"></p> <pre><code class="prism language-bash"><span class="token function">cat</span> <span class="token operator">&lt;&lt;</span> <span class="token string">EOF set superusers="用户" passwoed 密码 EOF</span> </code></pre> <p>之后保存<br> 重新生成grub2</p> <pre><code class="prism language-bash">grub2-mkconfig -o /boot/grub2/grub.cfg </code></pre> <p>重启虚拟机<br> <img src="https://img-blog.csdnimg.cn/6eb6a82fcaad4915bf140bbec925a5cd.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 重启按e之后会需要输入账号密码,不然无法进行下一步.</p> <h2><a id="3_177"></a>3.光盘修复</h2> <p>这个一般用于所用启动文本甚至内核/boot都被干掉了,但是数据还在,还得抢救以下,最后的杀手锏。需要先挂上光盘,或者其他启动镜像,虚拟机就以光盘为例。<br> <img src="https://img-blog.csdnimg.cn/b8b504c5e9124c129237931f3c15cc1d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 干掉内核和启动项</p> <pre><code class="prism language-bash"><span class="token comment">#干掉内核</span> <span class="token function">rm</span> -rf /boot/* <span class="token comment">#干掉MBR的前446个字节</span> <span class="token function">dd</span> <span class="token assign-left variable">if</span><span class="token operator">=</span>/dev/zero <span class="token assign-left variable">of</span><span class="token operator">=</span>/dev/nvme0n1 <span class="token assign-left variable">bs</span><span class="token operator">=</span><span class="token number">446</span> <span class="token assign-left variable">count</span><span class="token operator">=</span><span class="token number">1</span> </code></pre> <p>之后reboot,首先进入BIOS界面吧关盘启动优先级调到最高,并保存退出。<br> <img src="https://img-blog.csdnimg.cn/7a5c0c1953424a6ba8480b65669e29a4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 直接F10或者从exit退出<br> <img src="https://img-blog.csdnimg.cn/e734b6ce2cd847f58a39fa06491ed679.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 由于找不到引导项,会进入以下这个界面。<br> <img src="https://img-blog.csdnimg.cn/82e1d83dbcd64bafb25d0fe26282c450.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 这是第一章安装系统是出现的界面,它找不到引导信息,会认为你没有装系统,如果不是必须抢救数据,直接选第一个重装就好了,但现在还要抢救一下,所以咱们选第三个进入救援模式。<br> <img src="https://img-blog.csdnimg.cn/860e5e761bbf4b3aa6cd269daf8e3126.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 接下来选第二个</p> <p><img src="https://img-blog.csdnimg.cn/3b63f1f40d2340edbfeadcbe386aff36.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 这一大堆,我也看不懂,输入1按回车。</p> <p><img src="https://img-blog.csdnimg.cn/450ecdd1f3024f1da3322b4e8062f503.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 最后一行,按回车获得一个shell,按回车我们就进入镜像了。<br> <img src="https://img-blog.csdnimg.cn/45996b52b4b74c7e9425d374bbb4bf4b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 可以看看到根目录下没有我们创建的文件,所以这只是物理的根目录。<br> 真正的根目录在/mnt/sysimage,这是因为根分区还在,有可能找到会被默认挂载到这里,如果分区信息都没了,要从写fastable文件,这个这里就不说了。<br> <img src="https://img-blog.csdnimg.cn/33fa92ca151c45009c6e96f13841b34c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 现在重新把根目录挂上来。</p> <pre><code class="prism language-bash"><span class="token function">chroot</span> /mnt/sysimage/ </code></pre> <p><img src="https://img-blog.csdnimg.cn/4dd66f1c00294c57b45ad2d0b804305b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 挂载光盘</p> <pre><code class="prism language-bash"><span class="token function">mount</span> /dev/cdrom /mnt/cdrom/ </code></pre> <p>这里看不懂的看一去看我的包管理那章。<br> <img src="https://img-blog.csdnimg.cn/d00ecb3b611449c6b2bcd6ea39d92335.png" alt="在这里插入图片描述"><br> 恢复MBR引导,就是修复那446字节。</p> <pre><code class="prism language-bash">grub2-install /dev/nvme0n1 </code></pre> <p><img src="https://img-blog.csdnimg.cn/b40f1e4f256e4a1883a6a85248fa4242.png" alt="在这里插入图片描述"><br> 重装kernel</p> <pre><code class="prism language-bash">rpm-ivh /mmt/cdrom/Base0S/Packages/kernel--core-4.18.3-385.e18.x86_64.rpm --force </code></pre> <p>这里依旧可以使用tab键自动补齐,不用全部都自动敲。<br> 这里会重新生成内核,需要几分钟,如果不小心用Ctrl+C退出,可以将/boot文件夹再次清空,之后再重装内核就可以了。<br> <img src="https://img-blog.csdnimg.cn/53bafb4072e0439eade899aa88650511.png" alt="在这里插入图片描述"><br> 重新生成grub.cfg<br> kerne-install add 内核版本号 内核镜像<br> 可以用 uname -r查看内核信息</p> <pre><code class="prism language-bash">kernel-install <span class="token function">add</span> <span class="token number">4.18</span>.B-385.e18.xd6_64 /lib/modules/4.18.0-385.el8.x86_64/vmlinuz grub2-mkconifg <span class="token operator">&gt;</span> /boot/grub2/grub.cfg </code></pre> <p><img src="https://img-blog.csdnimg.cn/8199c5b439d8431e99cbe208062e6c8f.png" alt="在这里插入图片描述"><br> 之后两次使用exit然后等待几分钟就可以开机。</p> <p><img src="https://img-blog.csdnimg.cn/4f93b22ae2c44ceb966e135fb91b36fe.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> 最后记得将光盘启动的优先级降低。</p> <h1><a id="_251"></a>总结</h1> <p>这次博客就到这里,看起来简单的一篇博客,博主是失败了十几次,辛亏提前抓了快照,不然实验都无法完成,此次实验是基于红帽8完成的,如果是7或者6方法可能会有所不同,所以不要强求,要学会变通。</p> </div> </body>
posted @ 2021-10-21 20:49  lcc-666  阅读(135)  评论(0编辑  收藏  举报