注意:此篇文章已经过时,仅作参考使用,此文章从站长2年前Flowus中移植至本站
前情提要:本人的kali linux因作为移动用途使用ventoy进行处理后用于移动设备启动,因为更新系统内核文件意外卡死强制重启导致系统损坏,本教程并不适用于所有情况
问题:尝试引导kali时断电重启到BIOS,无法正常使用
1.前往kali官网下载live镜像
2.依据后缀使用虚拟机,vhdx,vhd使用系统Hyper-v虚拟机,vmdk使用vmware虚拟机,vdi使用VirtualBox虚拟机,本教程使用vdi文件为演示
3.删除后缀.vtoy,并改为原虚拟磁盘文件后缀(如果双后缀直接删除.vtoy文件即可)
4.打开VirtualBox,添加一个虚拟机,类型改为Linux,版本改为Debian(必须是debian不是其他内容),名称随便取,内存不小于3g,勾选使用EFI选项
5.添加虚拟硬盘界面选择使用已有虚拟硬盘,点击列表框右侧的图标,点击注册,选择步骤二处理好的文件并确定,随后点击窗口内你选择的文件,确定
6.完成创建虚拟机,点击设置,点击存储,添加一个虚拟光盘文件(具体教程自行bing),随后完成
7.启动虚拟机,你会看到下面的界面

使用上下方向键移动光标到Boot Manager,回车
随后的界面里移动到带有CD-ROM字样的选项,回车,进入Kali Live启动菜单

回车即可
8.等待一会进入桌面,打开终端输入sudo passwd root并回车,随后随意设置一个非常简单的6位数密码(要记住),设置好后执行su root并输入刚刚的密码切换到root账户下
9.输入fdisk -l 查看分区,找到EFI和你kali的主分区(使用分区大小来判断)并分别记下对应的/dev/xxx的字样,使用umount /dev/xxx来卸载分区,请卸载EFI和你的Kali所在的主分区
10.挂载分区,使用mount /dev/xxx(替换为你的EFI分区对应的名称,作者这里是sda1) /mnt/boot/efi
因为我这里是sda1,所以我使用mount /dev/sda1 /mnt/boot
执行成功应该是没有任何提示的,如果返回的提示请bing搜索解决
同理挂载主文件分区,mount /dev/xxx(作者这里的主分区是sda2,请不要照抄,替换为你自己获取的主分区名称) /mnt
完整命令:mount /dev/sda2 /mnt
同理没有任何提示信息,报错自己bing
11.挂载系统分区
mount –bind /dev /mnt/dev
mount –bind /dev/pts /mnt/dev/pts
mount –bind /proc /mnt/proc
mount –rbind /sys /mnt/sys
以上指令可直接照抄,确保你已经正确的挂载了分区
12.运行fsck -n ext4 /dev/sda2(替换sda2为你的Kali所在主分区名称,作者这里为sda2)
如果运行正确会返回以clean开头的一行文本,如果不是请自行bing搜索报错文本
13.运行fsck -n /dev/sda1(替换sda1为你的EFI分区名称,作者这里为sda1)
14.运行chroot /mnt进入chroot环境
15.运行grub-install /dev/sda以重新安装grub引导
16.输入update-grub更新grub程序
17.reboot,重启
18.会进入一个救援模式,在这里输入你的root密码并登录
19.运行mount -o rw,remount /指令
20.运行mount -a指令,根据返回值判断错误,作者这里返回了UUID错误,使用vim /etc/fstab执行进入启动挂载配置文件,找到出错的UUID并查看后面内容,如果出现efi,boot字样说明此项负责引导,输入:q!回车退出编辑器
21.执行blkid命令,根据大小找到EFI分区(大小一般为512MB),复制大小前面UUID=后面的内容
22.再次执行vim /etc/fstab指令进入编辑器
23.移动光标到出错的UUID=后面处,按下x键删除光标所在位置的字符直到删除干净,按下i并输入刚刚获取的UUID(确保输入在=后面),按下esc,输入:wq回车退出,reboot重启
24.重启到你的虚拟硬盘,grub恢复成功
25.成功修复!
26.重新按照ventoy官网处理虚拟磁盘文件并扔回移动硬盘(记得在本地备份一份刚刚修复完成的虚拟磁盘文件)(每次更新后都需要重新处理虚拟磁盘)