背景:当某操作员不慎删除了/usr/bin或者其他系统文件夹,从而导致了系统无法正常开机,远程登录等由于误操作损坏系统的现象

目的:通过linux rescue(linux拯救模式,个人觉得更像windowsU盘启动)进入系统,把删掉的基础文件复制到被删除的位置,当然,这一份基础文件很可能跟原来的不一样,但是,我们先让系统可以操作,后续细节修复在慢慢处理

进入linux rescue

Linux rescue是通过调节bios系统启动顺序来运行外接系统盘。本地上cd已经挂载了一个is镜像
image-1654750378573
本机测试使用的是vmware workstation 12,固态硬盘,对于F12,F2,进入bios的说法,在这里得不到验证。
选择‘打开电源时进入固体’
image-1654750401245

启动虚拟机
将cd移动到第一位,这里使用‘shift++’移动到第一位,移动到下一位直接按‘-’
移动前:
image-1654750524806
移动后:
image-1654750540531
F10保存退出
进入到安装界面
image-1654750560804
选择‘Rescue installed system’
选择语言
image-1654750571063
选择键盘
image-1654750580860
直接ok
image-1654750595221
上面三步都是选择OK
选择网络
image-1654750603601

如果不是因为scp命令没有办法使用,配置网络,也可以从别的地方拷贝过来,不过,如果scp,ssh都可以,就应该不需要进入rescue了吧,这里选择no
一些通知类信息

image-1654750615260

选择‘continue’
一些通知类信息

image-1654750629811

选择ok
一些通知类信息

image-1654750639891

选择OK
应该是操作类型了

image-1654750651177

选择‘shell start shell’

image-1654750663575

这里就已经进入了linux rescue了


寻找失去的/usr/bin,并恢复

进入到的这个系统/usr/bin是存在的,那现在所需要做的,就是把这个存在的/usr/bin放到被删掉的/usr/bin中,网上资料说运行chroot /mnt/sysimage就可以到需要修复的系统下,果然运行这个命令之后,/usr/bin是不存在的

image-1654750707641

然后我尝试过将能够访问的/usr/bin打包到/tmp目录下,然后再执行chroot /mnt/sysimage,结果是没发现打的包。应该算是两个系统了,所以各自的系统目录不是一样的。最后看到网上资料说,执行chroot /mnt/sysimage是为了把跟目录切换到这里来,所以执行了exit,进入到/mnt/sysimage,查看/usr/bin,还真的是不存在

image-1654750719581

有了这个发现,剩下的就是把/usr/bin打包过来了,一定要打包,为了保存链接

image-1654750752661

点击‘关机’

image-1654750763163

将默认系统改回来;

image-1654750773836

将CD移动到第三位

image-1654750783345

F10保存退出
本地测试会出现以下小界面

image-1654750794442

还要一些小警告

image-1654750806114

启动完成后,界面好像出不来,没有等待,直接ctrl+alt+f3,输入账号密码

image-1654750816337

远程登录也OK,那上面的警告可能是图形界面的,把图形界面的bin打包scp过来试试。这里不做尝试。

Q.E.D.


知之为知之