Kali Linux 系统崩溃后的修复

问题背景

我在按照 Kali Linux 官方 Doc 安装 Nvidia 显卡驱动的时候, 到 OpenCL Loaders 那一步, 发现新装的 Loader 并没有被加载, 于是我做了一个错误的决定: 我把本机中的官方文档中并没有列出来的 Loader 都删掉了, 希望通过这个操作可以强制系统使用新装的 Loader, 然而当我 reboot 之后, 发现自己无法登录了

Kali Linux 系统崩溃后的修复_第1张图片
糟糕!出错啦!.jpg

出现了 "系统出错并无法恢复, 请尝试注销并重新登录" 的错误

解决思路

注: 我使用的操作系统为 Kali Rolling, 但该解决办法对 Debian/Ubuntu 系统也是适用的

1. 进入 recovery mode

Windows 系统遇到这种情况可能就需要用 Ghost 来重装系统了, 但对于 Linux 系统来说, 由于我们可以直接通过 shell 与 kernel 进行交互, 所以并不需要重装

重启系统, 进入 grub 界面( 就是启动时, 让你选择进入哪个系统的界面 )


Kali Linux 系统崩溃后的修复_第2张图片
grub界面.jpeg

我们选择第二个 Advanced Options 就可以进入 recovery mode
然后会提示我们输入 root 密码, 由于我们通常是使用 sudo user 来登录的, 所以可能会出现忘记 root 密码的情况, 这就需要第二步, 如果你记得 root 密码, 则直接前往第三步

2. 重置 root 密码

参考这里: 链接

在 grub 界面按 e 可以进入编辑模式, 在这里, 按这张图片进行修改


Kali Linux 系统崩溃后的修复_第3张图片
修改引导区.jpg

简单解释一下这一步:
我们在引导区增加了一段

init=/bin/bash

这样, 进入系统后, 我们就可以直接获得一个 bash shell
然后我们把 ro (read only) 改成了 rw (read + write), 这样就可以保存我们通过这个 shell 对系统进行的修改(修改密码)

按 F10 保存并重启, 选择 recovery mode, 在返回的 shell 里, 通过

passwd root

就可以重置 root 用户的密码
完成后, reboot 进入 recovery mode, 用新密码登录就好

3. 恢复 apt-get

我们可以通过查看 apt-get 的 log 来查看我们 remove 了哪些包, 再把它们 install 回来就好

但这里要注意的一个问题就是: recovery mode 默认并不开启网络, 我们需要手动启动网络服务

启动网络服务:

systemctl start network-manager

执行

vim /var/log/apt/history.log

这样, 我们就可以获得 apt-get 的 log, 可以按键盘上的 Page Up / Page Down 键进行翻页, 记下我们之前误删的包名, 然后退出 :q

  • 可能有人会想到用 history 命令, 获取自己之前执行的所有命令的记录, 但 history 命令在 recovery mode 下并不支持
  • 如果这里不用 vim 而是用cat, 则会有无法翻页的问题

通过 apt-get install [package-name] 的方式, 我们就重新装回了该包

reboot 后应该就可以登录了

4. reboot 后仍无法登录

可能的原因是: 系统仍在使用那个有问题的 Loader
重启进入 recovery mode, 然后卸载掉这几个包

apt remove ocl-icd-libopencl1 nvidia-driver nvidia-cuda-toolkit

这样, 再次 reboot 后就可以登录了


Kali Linux 系统崩溃后的修复_第4张图片
完结撒花.jpg

你可能感兴趣的:(Kali Linux 系统崩溃后的修复)