在 Kali Linux 虚拟机上找不到符号“grub_file_filters”

在 Kali Linux 虚拟机上找不到符号“grub_file_filters”

apt-get 更新后; apt-get 在我的 Kali Linux VM 上成功升级,重新启动以完成一些安装并进入 grub 救援模式。

关于 grub 救援 >

LS,返回:

(hd0) (hd0,msdos1) (hd0,msdos5)

,返回:

cmdpath=(hd0)
prefix=(hd0,msdos1)/boot/grub
root=hd0,msdos1

我跑了LS在 (hd0)/boot、(hd0,msdos1)/boot、(hd0,msdos5)/boot 上,并仅在 (hd0,msdos1) 上确认可启动映像的结果

安装Linux,返回以下 grub 错误:

symbol 'grub_file_filters' not found 

想看看 grub 看起来在哪里所以尝试过卡利研究所返回:

/boot/grub/i386-pc/kali.mod not found

因此,似乎在我收到错误之前就找到了 linux 模块。

通过研究,发现此错误与文件系统/USB 设备相关,但由于这是一个虚拟映像(而且我在 VirtualBox 上),我不确定如何修复它。

从头开始重新安装没有问题,但很好奇这个错误以及它指的是什么/如何解决它。

感谢您的任何见解

附加说明: 这是我启动虚拟机时以及执行上面提到的一些 ls 命令后屏幕上的输出

error: symbol ‘grub_file_filters’ not found. 
Entering rescue mode... 
grub rescue> ls 
(hd0) (hd0,msdos5) (hd0,msdos1) 
grub rescue> ls (hd0) 
(hd0): Filesystem is unknown. 
grub rescue> ls (hd0,msdos5) 
(hd0,msdos5): Filesystem is unknown. 
grub rescue> ls (hd0,msdos1) 
(hd0,msdos1): Filesystem is ext2. 
grub rescue> ls (hd0)/boot
error: unknown filesystem
grub rescue> ls (hd0,msdos5)/boot
error: unknown filesystem
grub rescue> ls (hd0,msdos1)/boot
./ . ./ System.map-4.18.0-kali2-amd64 config-4.18.0-kali2-amd64 
initrd.img—4.18.0-kali2-amd64 vmlinuz-4.18.0-kali2-amd64 
grub/ config-4.19.0-kali5-amd64 vmlinuz-4.19.0-kali5-amd64 
System.map-4.19.0-kali5-amd64 initrd.img-4.19.0-kali5-amd64
grub rescue> 

答案1

在 OSX 上对我有用的是结合 Daniel Simon 的答案和 ddburrjr 的评论。

  1. 从 Kali Linux 的官方网页下载新的 .iso 映像。
  2. 启动 VirtualBox 并打开 Kali Linux 虚拟机的设置。将下载的iso镜像作为虚拟CD添加到“存储页面”中。如何?选择“控制器:IDE”并按右侧的 CD 按钮,“选择磁盘”,然后选择下载的 .iso 文件。
  3. 启动时按 F12,然后按“C”从 CD_ROM 启动
  4. 在启动菜单中选择“Live (amd64)”以从 .iso 文件运行 Kali Linux。
  5. 请遵循这些说明https://www.youtube.com/watch?v=5spKO02G5v4
  6. 完毕! Kali Linux 从虚拟硬盘再次启动

答案2

在 ArchLinux 上更新 GRUB 安装后,当我尝试引导手动创建的 grub 映像(使用 grub-mkimage 命令)时,我遇到了类似的问题。就我而言,将 GRUB 重新安装到 /boot 分区解决了问题。

因为您的整个操作系统无法启动,所以我建议您在备份当前引导加载程序安装后启动 Kali 的实时映像并从那里重新安装引导加载程序(例如,以确保保留原始配置文件)。

出现该问题的一个可能原因是 GRUB 尝试加载的模块属于 GRUB 的早期版本,而映像则不然。

指示:
1. 从Kali Linux官方网页下载新的镜像。
2. 启动 VirtualBox 并打开 Kali Linux 虚拟机的设置。
2.1 将下载的iso镜像添加到“存储页面”中作为虚拟光盘。
2.2 更改“系统”选项卡中的启动顺序,以便虚拟机首先从光盘启动。
3. 启动虚拟机并以实时模式启动映像。 4. 将启动分区挂载到一个文件夹(例如/mnt)并将grub 文件夹复制到另一个目的地。如果没有启动分区,文件应驻留在主分区的启动文件夹中。在这种情况下,安装主分区并跳过步骤 5 和 6。
5. 再次卸载引导分区并将主分区(包含 /home、/etc、/boot、... 文件夹)安装到此时。
6. 再次将启动分区挂载到主分区挂载点下的/boot 文件夹中。结构应该是这样的:

/mnt/ (mount folder of main partition)
  etc/
  home/
  boot/ (mount folder of boot partition)
    grub/
    (other boot files)
  (other folders)
  1. 使用命令将根目录更改为已安装的操作系统文件chroot
  2. 使用命令重新安装 grub grub-install /dev/sdX,其中 X 是安装 Kali Linux 的设备的描述符。您不必提供--boot-directory参数,因为您已将根目录更改为已安装的操作系统。如果您应该提供其他参数,请查看 grub-install 命令的联机帮助页。
  3. 执行grub-mkconfig -o /boot/grub/grub.cfg为 grub 创建一个新的配置文件。此命令应检测 Kali Linux 安装。
  4. 退出更改后的根目录并卸载所有分区。
  5. 关闭虚拟机。
  6. 将引导顺序更改回之前的设置或禁用从光盘引导。
  7. 启动您的虚拟机。如果一切都按预期工作,Kali Linux 和 GRUB 应该会像往常一样启动。

如果未安装或未找到命令,请尝试sudo先使用 执行,如果仍然不存在,请尝试使用 进行安装apt-get install [name]

重要的提示:
目前我正在使用 ArchLinux(正如我上面所说的),因此很难提供关于如何在未知设置上使用另一个发行版重新安装 grub 的详细手册。
我建议您在执行命令之前先了解一下所使用的命令,以确保这些命令能够与您的设置完美配合。
除此之外,因为您使用的是虚拟机,所以我建议您在按照这些说明操作之前创建快照。

答案3

抱歉,我无法发表评论,所以,就我而言,丹尼尔·西蒙的答案有效!但经过一些额外的安装..我的发行版是 Ububtu Server,从 18.04 升级到 20.04 后,它给了我同样的错误。

我的 VPS 具有恢复模式(就像从其他驱动器(或其他情况下为 USB)启动),然后我按照步骤操作(不是步骤 5 和 6),因为我的启动分区位于主分区内。在第 7 步(chroot)之前,我要安装 /dev、/sys 和 /proc,如下所示:(首先安装主分区)

# mount /dev/vdb1 /mnt     (in my case the main partition to mnt dir)
# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys /mnt/sys

之后,继续步骤 7.. chroot

相关内容