背景:当某操作员不慎删除了/usr/bin或者其他系统文件夹,从而导致了系统无法正常开机,远程登录等由于误操作损坏系统的现象
目的:通过linux rescue(linux拯救模式,个人觉得更像windowsU盘启动)进入系统,把删掉的基础文件复制到被删除的位置,当然,这一份基础文件很可能跟原来的不一样,但是,我们先让系统可以操作,后续细节修复在慢慢处理
进入linux rescue
Linux rescue是通过调节bios系统启动顺序来运行外接系统盘。本地上cd已经挂载了一个is镜像

本机测试使用的是vmware workstation 12,固态硬盘,对于F12,F2,进入bios的说法,在这里得不到验证。
选择‘打开电源时进入固体’

启动虚拟机
将cd移动到第一位,这里使用‘shift++’移动到第一位,移动到下一位直接按‘-’
移动前:

移动后:

F10保存退出
进入到安装界面

选择‘Rescue installed system’
选择语言

选择键盘

直接ok

上面三步都是选择OK
选择网络

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

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

选择ok
一些通知类信息

选择OK
应该是操作类型了

选择‘shell start shell’

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

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

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

点击‘关机’

将默认系统改回来;

将CD移动到第三位

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

还要一些小警告

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

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