当前位置: 首页>>技术教程>>正文


无法安装来宾添加:未知文件系统类型 ‘iso9660’

, ,

问题描述

在 Oracle VirtualBox 4.3.24 上运行 Ubuntu 14.04 并完全坚持安装来宾添加。我花了很长时间在网上寻找解决方案,但没有任何帮助…

如下所示,我尝试手动挂载并从网络下载 ISO(与 VirtualBox 匹配的版本)。同样的错误:

编辑:

现在一些文件夹变成了”read-only”,这会造成很大的麻烦..即使安装新的Ubuntu 14.04映像也无济于事……所以重新安装VirtualBox本身……

最佳回答

我能够通过重新安装 linux 映像来解决安装问题:

sudo apt-get install --reinstall linux-image-$(uname -r)

顺便说一句,这一切都始于升级 VirtualBox。双向剪贴板停止工作,所以我尝试重新插入 Guest Additions ISO。这导致了上面的东西。现在,Guest Additions 重新安装,但剪贴板仍然不起作用……

次佳回答

TL;DR 这可以通过重新启动快速修复。不要使用 apt-get。请参阅底部,“只需重新启动!”。


这怎么发生的? (以前的长答案)

如果您:

  • 升级内核(比如从 .66 到 .67)

  • 运行 apt-get autoremove 并以某种方式删除正在运行的内核,或手动删除 “old” 内核,从而从 /lib/modules/kernel.66 中删除所有模块

  • 不要重新启动,从而保持 “old” .66 内核运行。加载的模块保留在内存中,一切正常,但由于 .66 模块已被删除,因此无法加载新模块。

  • 尝试做任何需要加载尚未加载的模块的事情

安装 VirtualBox ISO 可能正好需要——加载 ISO9660 支持模块。

现在无法再自动加载请求的模块,因为正在运行的内核 (.66) 在 /lib/modules/kernel.66 中找不到任何内容。该模块存在,但位于 /lib/modules/kernel.67 中,当前 .66 内核对此一无所知(并且不建议加载不匹配的模块)。

重新安装未命名的内核当然会重新安装正在运行的内核模块,从而使 ../.66/…/isofs.ko 再次可用并且无需重新启动。这是已安装内核的降级,更新问题仍将存在(见下文)。

也就是说,当您运行 Additions CD 时,它将安装正在运行的 .66 内核,而不是更新的 .67 内核(它仍未运行)。

如果您处于这种情况,您当然也可以通过重新启动来修复它(新的 .67 运行内核会找到它的模块),并且可能通过加载属于新内核的模块(isofs 非常稳定),除非您已经进行了重要的内核升级仍将兼容(仍然不推荐这样做!):

# mount /dev/cdrom /mnt
mount: unknown filesystem type 'iso9660'

以上是您遇到的根错误(“未知文件系统类型”)。

# uname -a
Linux virtual 3.13.0-66-generic ...

所以我们检查安装了哪个版本的模块。它应该是 0.66:

# ls /lib/modules
3.13.0-67-generic

…但只有一个目录,它是 0.67(.66 目录可能在那里,但为空;在这种情况下,du -sh /lib/modules/* 将告诉各个目录占用了多少空间,允许区分空目录和完整目录) .

重新安装没有 re-grub 的旧内核映像不会解决真正的问题

您可以重新安装正在运行的内核及其模块和头文件。现在您拥有两个内核,并将 grub 设置为加载较新的内核。

可以挂载 ISO CD-ROM(因为模块现在存在)并且 VBox 模块将编译(因为头文件已经安装)。

它将为正在运行的 .66 内核编译模块,它们将工作……一段时间。

在第一次重新启动时,您会发现自己使用的是 .67 内核,根本没有添加 VirtualBox。

重新安装内核也不会解决真正的问题

apt-get install --reinstall linux-image-$(uname -r)

如上所述,在第一次重新启动时,您会发现自己的内核已降级(或更好的 “not upgraded”)。很快,Ubuntu 将尝试升级它……你会回到你开始的地方(见下文:”downgrading kernel”),并且需要重新启动并再次安装 Virtualbox Additions。

在 ISO 模块中打补丁也不会解决真正的问题

有可能我们仍然可以强制加载 ISO9660 模块,因为内核 66 和 67 之间没有做任何工作并且二进制文件基本上没有变化,所以我们尝试:

# insmod /lib/modules/3.13.0-67-generic/kernel/fs/isofs/isofs.ko

没有错误。有效。内核 .66 从内核 .67 加载模块。让我们再次尝试挂载 CD-ROM:

# mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only

嘿!有效!

是的,但这仍然没有任何实际帮助,因为正在安装的 CD 是 VirtualBox Additions,它需要安装正在运行的内核头文件。如果正在运行的内核模块不再存在,则内核头文件可能也不存在。因此 CD-ROM 可能已安装,但安装程序将在启动时失败。

此外,即使它以某种方式找到了头文件并且编译没有失败,新编译的 Virtualbox 模块也无处可去,因为 .66 模块目录已被清理(这就是 isofs 模块在第一名!)。

但是假设您通过恢复先前内核的模块和头文件目录来解决所有这些问题:您现在基本上已经完成了昂贵的(和部分的)内核降级,并且在下次重新启动时添加的内容以及其余部分将丢失.66 内核,当新安装的 .67 内核激活时。因为 Virtualbox Additions CD 从 .66 内核启动,带有 .66 头文件,尽职尽责地安装了 .66 内核模块,而不是 .67 的。

降级内核会起作用……一段时间

如果我们移除 .67 内核并重新安装带有模块的 .66 内核,那么一段时间内事情会变得很糟糕。无需重新启动,如上面的“强制 ISO 模块”解决方案。

重新启动不会丢失任何东西,因为没有安装 Additions-challenged 内核。

但是这样内核还是会在“待升级”列表中,同样的问题迟早会出现(通常是后天,或者下周,取决于自动更新的频率)。

当然,您现在可以在您选择的某个更合适的时刻出现它,这可能非常值得。在为一个迟到的项目进行编码马拉松的过程中强制升级是魔鬼。

所以:只需重新启动! (和 re-run Additions CD)。

重新启动,已经安装的和更新的 .67 内核将被激活,它的所有模块和头文件都在那里;其中,isofs 模块用于读取 ISO9660 CD 文件系统。

 sudo reboot

重新启动后,CD-ROM 将工作,Guest Additions 将可安装。

使用 Additions 更新 VirtualBox 内核的 “best” 序列是:

 apt-get update
 apt-get upgrade              (or apt-get dist-upgrade)
 reboot                       
 (re)install VirtualBox Additions on the new kernel that is now running
 apt-get autoremove

(出于安全原因,next-to-latest 旧内核可能不是 auto-removed,以允许您 “go back”)。

第三种回答

根据其他人的回答,这通常可以通过重新启动来解决。

不知何故 “iso9660” 模块未加载。 depmod 扫描所有模块并创建模块依赖关系。

sudo depmod -a
sudo mount /dev/sr0 /mnt
ls -l /mnt

这将解决问题。

第四种回答

我通过升级软件包并重新启动解决了这个问题(在 Ubuntu 16.04 上):

sudo apt-get update
sudo apt-get upgrade
sudo reboot

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12381.html,未经允许,请勿转载。