遇到Kali虚拟机进不去系统,绝大多数情况是内核更新或引导配置损坏导致的GRUB故障,解决办法是使用Live CD环境或快照回滚,核心操作用chroot重装GRUB引导器,整个修复过程需要10到30分钟。
kali虚拟机grub修复教程:内核更新后进不去系统怎么办
Kali虚拟机用得好好的,突然开机就卡在GRUB命令行或者直接黑屏,这是不少渗透测试学习者都碰到过的情况,虚拟机不比物理机,很多时候是因为内核升级过程中断、磁盘空间不足或者VMware/VirtualBox的引导顺序设置被改动造成的,Kali基于Debian的Testing分支,滚动更新的特性让它比一般发行版更容易出现引导问题。
如果你现在正对着GRUB的grub rescue>提示符发愁,别急着重装系统,这个界面虽然看着吓人,但说明你的磁盘分区和文件系统还是好的,只是引导程序找不到内核位置了,重装一遍系统需要重新配置所有工具和环境,代价实在太大。
为什么Kali虚拟机突然进不去系统
在动手修复之前,先判断一下故障类型,Kali虚拟机的GRUB故障大致分三类,每种的症状和处理方式都不一样。
- GRUB Rescue模式:屏幕上只显示
grub rescue>,输入任何命令都提示unknown filesystem,这通常是GRUB的模块文件丢失或者分区表发生变化,GRUB无法识别根文件系统所在位置。 - GRUB菜单空白或报错:能进入GRUB菜单,但选择Kali启动后提示
error: file '/boot/vmlinuz-xxx' not found,内核文件缺失,一般和/ boot分区空间耗尽或者内核更新中断有关。 - 直接黑屏无任何输出:虚拟机启动后显示器没信号,这种问题多数不是GRUB本身,而是内核崩溃或者显卡驱动出了状况,如果你最近删过内核模块,大概率和这个有关。
统计下来绝大多数Kali虚拟机故障属于第一种情况,磁盘空间不足也是Kali虚拟机的常见隐患,Kali的完整工具集很大,如果你按照默认设置只给了20GB硬盘,更新内核时空间不够,会直接导致引导不完整。
虚拟机进不去系统怎么恢复数据:动手前的准备工作
在开始操作之前,有几样东西你需要备好,不然中途卡住反而更麻烦。
- Kali ISO镜像文件:去Kali官网下载最新的ISO,用于启动Live环境,如果你下载过其他Linux发行版的Live镜像,比如Ubuntu,也可以临时应急,但后续命令里包管理器相关操作要替换成对应的软件源。
- 虚拟机快照:如果你之前给虚拟机创建过快照,直接从快照恢复是最快的路径,快照会把系统恢复到创建时的状态,所有当时的数据和配置都在,VMware的“虚拟机”菜单里有“快照”选项,VirtualBox则在“控制”菜单里。
- 数据备份:如果虚拟机里还有没拷出来的扫描报告或脚本,在Live环境下先把整个虚拟磁盘挂载到宿主机上拷贝出来,VMware可以直接把vmdk磁盘映射到宿主机,VirtualBox则要先用VBoxManage命令把VDI转成VMDK格式。
这些准备工作不复杂,但能让你在下面每一步操作时都留有退路。
快刀斩乱麻:用chroot重装GRUB引导器
这是最常用也最有效的修复方案,适用于GRUB Rescue模式、引导文件损坏等多种情况,原理是从Live CD启动一个最小系统,把Kali虚拟机的原系统挂载进来,钻进原系统环境重新安装GRUB引导器。
从Live CD启动Kali虚拟机
把ISO镜像挂载到虚拟机光驱里,VMware下双击虚拟机设置,在CD/DVD选项里选择“使用ISO映像文件”,浏览到Kali的ISO文件,VirtualBox则在存储选项里把光驱指向ISO,启动虚拟机时按住Esc或F12(Vmware)打开启动菜单,选择从光驱启动,进入Live模式的启动菜单后选“Live system”即可。
进入桌面环境后,打开终端开始后续操作,先确认系统能识别原有的Kali磁盘分区:
sudo fdisk -l
这条命令会列出所有磁盘和分区情况,通常虚拟机会有两个磁盘设备,一个是Live系统的临时内存盘,另一个是你原来的Kali虚拟磁盘,记下Kali根分区的设备名,一般是/dev/sda1或/dev/nvme0n1p1。
挂载原系统并进入chroot环境
这里分几个步骤,每一步都建议在终端里执行完确认正确再继续:
sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
如果你之前单独划分了/boot分区,还需要额外把那个分区挂载到/mnt/boot上,分过区的话,fdisk输出里可以看到一个几百MB的独立分区,挂载它:
sudo mount /dev/sda2 /mnt/boot
挂载完成后进行网络配置,以便chroot环境里能联网下载软件包:
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
然后进入原系统环境:
sudo chroot /mnt
你会看到命令提示符变了,现在你已经在Kali系统内部了,像在原本的系统终端里操作一样。
重装GRUB引导器到主引导记录
在chroot环境里执行以下三条命令:
mount /dev/sda1 /boot/efi
grub-install /dev/sda
update-grub
第一条命令只在UEFI模式的虚拟机里执行,如果你的虚拟机是传统BIOS模式,跳过这条就会报错。grub-install /dev/sda是安装引导器到磁盘的MBR上,注意目标设备是/dev/sda而不是分区。
update-grub会扫描所有内核文件重新生成GRUB菜单,如果它输出找到多个内核镜像,说明修复成功了,装完退出chroot环境:
exit
sudo umount -R /mnt
sudo reboot
记得在重启前把ISO镜像从虚拟机光驱里卸载,否则又会从Live CD启动,重启后你就能看到熟悉的GRUB菜单,选择Kali进入系统。
有快照别慌:备份恢复优先于手动修复
如果你开启了虚拟机快照功能,恢复操作会简单得多,VMware Workstation的日常快照功能在系统正常运行时就开着的话,直接恢复到出问题之前的快照点,重启虚拟机就好了,这种方法适合刚升级内核就进不去系统,又不想折腾命令行的情况。
VirtualBox也有类似的快照管理功能,在虚拟机主界面的“快照”栏里右键选择要恢复的时间点,点“还原”即可,一分钟内就能恢复。
要注意的是,恢复快照会丢失从快照创建点到当前的所有改动,如果你这段时间内向虚拟机里上传过新工具,这些内容就没了,所以快照适合用于“快速退回安全状态”的场景,不是用于数据找回的。
快照恢复之后就少做一些大动作,比如又去执行apt full-upgrade一类的命令,可以先调整一下内核版本锁定策略,把当前能正常启动的内核固定住之后再做完整更新。
终极武器:从GRUB命令行直接引导系统
如果安装GRUB和快照恢复都搞不定,还有最后一招,利用GRUB自带的命令行手动设置引导参数,这个方法适合系统文件是完好的,只是GRUB菜单坏掉了的场景。
当卡在grub rescue>时,先设置根分区变量:
set root=(hd0,msdos1)
set prefix=(hd0,msdos1)/boot/grub
insmod normal
normal
如果提示insmod normal找不到文件,就说明/boot/grub目录下的模块文件确实丢失了,得用前面的Live CD办法来修,如果命令都执行成功,你会看到GRUB菜单出现或者跳到GRUB命令行。
在GRUB命令行手动加载内核:
set root=(hd0,msdos1)
linux /vmlinuz-6.6.15-amd64 root=/dev/sda1 ro
initrd /initrd.img-6.6.15-amd64
boot
列出/boot目录下有哪些内核文件,用ls /boot查看实际文件名,把上面的内核版本号替换成你看到的那个,这样如果能正常进系统,就得赶紧在系统里重新执行update-grub把菜单修复了。
遇到Kali虚拟机GRUB问题不用慌,按优先级来看:有快照就回滚快照,没快照就用Live CD的chroot重装GRUB,这两个方法覆盖了绝大多数故障场景。
与其事后折腾,不如平时养成好习惯,每次做内核升级前先打个快照,分配虚拟磁盘时至少40GB起步,别在空间边缘试探,GRUB报错只是引导器的问题,不是数据全毁的信号,耐心按步骤来,你的Kali环境总能救得回来。
关于Kali虚拟机GRUB修复的常见疑问
Kali虚拟机GRUB修复需要花钱吗,找人修一次多少钱?
Kali虚拟机修复GRUB单纯作为技术问题,免费资源足够解决,官方的Kali文档有专门的“Kali Linux Live系统救援”章节,原理就是用Live环境挂载原系统修复引导,如果自己实在没有头绪,在数据恢复或IT服务平台上找远程技术员处理,行情价大致在50元到200元之间,取决于平台定价和服务商,普通虚拟机引导修复属于入门级维修操作。
Kali虚拟机更新内核后进不去系统,能不动原系统数据吗?
能,Live CD的chroot方案全程不会删除或格式化原系统的文件分区,仅仅就是挂载读写,修复过程基本不会碰用户数据,但如果你在原系统里开启了全盘加密,整个修复流程不会有影响,前提是chroot进系统后能正常解锁加密分区,否则后续命令无法写入数据。
GRUB修复后我不能启动以前的虚拟系统了,会丢数据吗?
在Live环境下重新安装的GRUB引导器不会触及用户文件,数据完整性不受影响,但有些细节需要注意:之前做快照的时候有挂载着的USB设备或者共享文件夹,恢复快照后这些关联信息可能失效,能看到的虚拟机内磁盘文件本身都是完整的,修复结束后先把虚拟机里的重要目录比如/root和/home备份到宿主机上,再继续正常使用。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/626041.html





