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


27

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

在此处输入图片说明

如下面的建议,我尝试手动安装并从Web(与VirtualBox匹配的版本)下载ISO。同样的错误:

在此处输入图片说明

编辑:

现在,有些文件夹变为“只读”,这会造成很大的麻烦。.即使安装新的Ubuntu 14.04映像也无济于事...因此,重新安装VirtualBox本身...

Answers:


45

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

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

顺便说一句,这一切都始于升级VirtualBox。双向剪贴板停止工作,因此我尝试重新插入Guest Additions ISO。这引起了上面的东西。现在,Guest Additions已安装回去,但是剪贴板加权不起作用...


5
我今天遇到了同样的问题(剪贴板坏了,没有CD映像会挂载)。您的解决方案加上重新安装Guest Additions即可解决这两个问题。
马克·史密斯

1
也为5.x版本工作
莫里森

14

TL; DR 可以通过重新启动快速修复。然后,CD-ROM将起作用,并且Guest Additions将可安装:

 sudo reboot

使用附加功能更新VirtualBox上的内核的“最佳”顺序是:

 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

(出于安全原因,可能不会自动删除最新的旧内核,以允许您“返回”)。

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

如果您确实会出现这种问题:

  • 升级内核(例如从.66升级到.67)
  • 运行apt-get autoremove并以某种方式删除正在运行的内核,或手动删除“旧”内核,从而从/lib/modules/kernel.66中删除所有模块
  • 不要重新启动,从而保持“旧” .66内核运行。加载的模块保留在内存中,并且一切正常,但是由于已删除.66模块,因此无法加载新模块
  • 尝试做任何需要加载尚未加载的模块的操作

而安装VirtualBox ISO可能恰好要求-加载ISO9660支持模块。

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

重新安装uname'd内核当然会重新安装正在运行的内核模块,从而使../.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 ...

因此,我们检查安装了哪个版本的模块。应该是.66:

# ls /lib/modules
3.13.0-67-generic

...但是只有一个目录,它是.67(.66目录可能在那里,但是空的;在这种情况下,du -sh /lib/modules/*它将告诉各个目录占用了多少空间,从而可以在空目录和完整目录之间进行区分)。

没有重新安装就重新安装旧的内核映像无法解决真正的问题

您重新安装.66内核及其模块和标头。现在,您已经拥有两个内核,并且grub可以加载较新的.67。

可以安装ISO CD-ROM(因为现在存在该模块),并且VBox模块将进行编译(因为已经安装了标题)。

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

第一次重新启动时,您将发现自己拥有一个.67内核,根本没有添加VirtualBox。

用re-grub重新安装旧的内核映像并重新引导也不能解决真正的问题

如上所述,您重新启动并发现自己的内核降级了。很快,Ubuntu将尝试对其进行升级,您将回到开始的位置(请参见下面的“降级内核”)。

在ISO模块中打补丁也无法解决实际问题

由于内核66和67之间没有做任何工作且二进制文件基本上未更改,因此我们有可能强制全部加载ISO9660模块,因此我们尝试:

# 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,它需要安装正在运行的内核头文件。如果运行中的内核模块不再存在,则内核头文件也将不存在。

另外,由于已清理.66 modules目录,因此新编译的Virtualbox模块将无处可去。

但是,请说您已解决所有问题:本质上,您已经进行了昂贵(且部分)的内核降级,并且在下一次升级时,添加的内容将与.66内核的其余部分一起丢失,与上述情况完全相同。

降级内核可以工作一段时间

如果我们删除了.67内核,并重新安装了带有模块的.66内核,那么一段时间后一切都会变糟了。就像上面的“强制ISO模块”解决方案一样,无需重新启动。

重启不会丢失任何东西,因为没有安装受添加挑战的内核。

但是通过这种方式,内核仍将位于“待升级”列表中,并且同样的问题迟早会出现。

诚然,您现在可以在自己选择的某个更适当的时刻出现它,这可能会非常有价值。

只需重启!

重新引导后,将激活较新的.67内核,并且所有模块和标头都在其中。

因此,重新启动,客户添置会的工作,并且升级将“走”。


1
该答案应被评为更高,因为它是正确的答案。为了完整起见,您已经正确解释了潜在问题以及解决方案所必需的两个步骤。
zero2cx16

1
@Iserni我没有足够的声誉来编辑顶部的答案的tl; dr段落。在那里,我们应该提到步骤2,即重新安装Guest Additions ISO。人们可能没有读完答案的末尾而错过了必要的步骤。
zero2cx

7

按照其他答案,通常可以通过重新启动来解决。

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

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

这将解决问题。


它为我工作。“ sudo depmod -a”就足够了。谢谢。
mombip

2

就我而言,下一个解决方法有所帮助:

在访客ubuntu中

sudo apt-get install virtualbox-guest-additions-iso

我认为一些已安装的依赖项解决了问题



0

尝试手动安装:

  • 打开一个终端。
  • 键入以下命令:

    sudo mount /dev/sr0 /mnt
    ls -l /mnt
    
  • 然后,如果显示了CD的内容,请在Nautilus(也称为文件管理器)中打开/ mnt并安装Guest Additions。

如果这些步骤不起作用,请尝试以下操作:

  • 从VM(通过virtualbox网站)下载来宾添加ISO。
  • 右键单击->打开方式...->磁盘映像安装程序。
  • 打开新安装的磁盘。

嗨,Helio,我尝试了两种方法都无效。同样的错误。请查看编辑后的答案
Oleg Shirokikh 2015年

之所以不起作用,是因为此过程将解决大多数由于Linux找不到设备而引起的问题。Linux的这里发现的设备,它甚至可识别的文件系统(“ISO9660”),问题是,它不知道如何它。
LSerni 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.