rpm实验

血红的双手。 提交于 2020-03-08 18:43:29

实验1、移动libc.so.6的位置,并通过救援模式恢复

1、ldd /bin/cat命令可以看到cat命令共享的动态的库 ,mv /lib64/libc.so.6 . 移动libc.so.6的位置到当前目录,此后会发现很多与共享库相关的命令都用不了了

2、通过救援模式解决,进入VM,选择重置,在界面出现进度条时迅速按下Esc键,进入BOOT Menu,选择CD-ROM Drive,接着选择Troubleshuting,接着选择rescure a centos system,等待片刻后选择1继续,接下来会进入到类似命令行的界面:

 

 

 这个正常文件系统有/,/mnt等目录,当然还可以正常的进入shell输入一些简单命令正确的运行,并且被破坏的系统文件会被挂载到/mnt/sysimage(关键搞清楚破坏了的系统文件的位置);

然后按照正常的命令操作即可:mv /mnt/sysimage/libc.so.6   /mnt/sysimage/lib64/     移动之后reboot重启便可恢复  

关键的是要知道,原本系统的/(根目录),现在变成了/mnt/sysimage/,路径前都得加上。

 

 

 

实验2、删除libc.so.6,通过救援模式恢复

1、如同移动lib.so.6一样,先进入救援模式。

2、不同于mv移动命令将其移动到其他位置,rm -rf libc.so.6会彻底删除该文件,我们查看救援模式下的/目录和/mnt/sysimage/目录。发现/mnt/sysimage/下就是我们真正的文件系统(被破坏)的目录内容,不存在/mnt/sysimage/lib64/libc.so.6文件;救援模式的系统中,一切文件都是正常的,存在/lib64/libc.so.6。还有就是libc.so.6是一个软连接文件,我们现在要做的是,恢复/mnt/sysimage/lib64/libc.so.6文件。

cd /mnt/sysimage/lib64/
ln -s libc-2.12.so libc.so.6
reboot    # 重启进入真正的系统
# 进去我们发现所有命令都恢复了正常

 

 

 

实验3、centos7安装不同版本的内核,卸载。

1、查看当前内核版本等信息,准备其他版本的光盘,目前安装的是eveything-1908。

 

 

 2、进入VM中,关联everything-1804版本的光盘,rpm -ivh /misc/cd/packages/kernel-3.10.0-862.el7(tab补全吧),安装期间需要等待一下,不要取消,否则用该版本内核启动会出问题。

3、安装完成后,ls /boot或者rpm -q kernel 可查看到两个版本的内核

3、VM重启界面,会出现两个不同版本的内核,可以用刚装的内核启动试试

4、卸载:rpm -e kernel-(Tab补全版本号)

 

 

 

 

 

 

实验4、卸载rpm本身,自杀行为,通过救援模式修护

1、查询rpm本身的rpm包:rpm -qf `which rpm`  rpm -e删除上面的包,需要加--nodeps,不然无法完成卸载

 

 

 2、同样进入救援模式,在命令行中输入rpm ,是可以看到相关用法的;输入df查看光盘挂载路径,在该路径可以找到rpm 的安装包

 

 

 3、进行安装,rpm -ivh /run/install/repo/packages/rpm-4(TAB补全吧)  --root=/mnt/sysimage/           在这里要注意原本的根现在前面要加上挂载

 4、exit退出重启就好

 

 

 

 

 

 

实验5、强行卸载唯一内核,导致无法启动并修复

1、rpm -q kernel 查询安装的kernel包是否唯一,rpm -e kernel-3.10.0-1062.el7.x86_64 --nodeps进行卸载

2、同样进入救援模式,rpm -ivh /run/install/repo/Packages/kernel(tab补全)  --root=/mnt/sysimage/

 

 3、exit退出重启可以找到原本的内核,完成。

 

 

 

 

 

 

 

 

 

 

 

 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!