Ole*_*ikh 32 virtualbox guest-additions 14.04
在 Oracle VirtualBox 4.3.24 上运行 Ubuntu 14.04 并完全坚持安装来宾添加。我花了很长时间在网上寻找解决方案,但没有任何帮助...
如下所示,我尝试手动挂载并从网络下载 ISO(与 VirtualBox 匹配的版本)。同样的错误:
编辑:
现在一些文件夹变成了“只读”,这会造成很大的麻烦..即使安装新的 Ubuntu 14.04 映像也无济于事......所以重新安装 VirtualBox 本身......
Ole*_*ikh 52
我能够通过重新安装 linux 映像来解决安装问题:
sudo apt-get install --reinstall linux-image-$(uname -r)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,这一切都始于升级 VirtualBox。双向剪贴板停止工作,所以我尝试重新插入 Guest Additions ISO。这导致了上面的东西。现在,Guest Additions 安装回来了,但剪贴板仍然不起作用......
LSe*_*rni 16
TL;DR 这可以通过重新启动来快速修复。不要使用 apt-get。请参阅底部,“只需重新启动!”。
如果您:
apt-get autoremove
并以某种方式删除正在运行的内核,或手动删除“旧”内核,从而从 /lib/modules/kernel.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'
Run Code Online (Sandbox Code Playgroud)
以上是您遇到的根错误(“未知文件系统类型”)。
# uname -a
Linux virtual 3.13.0-66-generic ...
Run Code Online (Sandbox Code Playgroud)
所以我们检查安装了哪个版本的模块。它应该是 0.66:
# ls /lib/modules
3.13.0-67-generic
Run Code Online (Sandbox Code Playgroud)
...但只有一个目录,它是 0.67(.66 目录可能在那里,但为空;在这种情况下,du -sh /lib/modules/*
将说明各个目录占用了多少空间,允许区分空目录和完整目录)。
您可以重新安装正在运行的内核及其模块和头文件。现在您拥有两个内核,并grub
设置为加载较新的内核。
可以安装 ISO CD-ROM(因为模块现在存在)并且 VBox 模块将编译(因为头文件已经安装)。
它将为正在运行的 .66 内核编译模块,它们将工作......一段时间。
在第一次重新启动时,您会发现自己使用的是 .67 内核,根本没有添加 VirtualBox。
apt-get install --reinstall linux-image-$(uname -r)
Run Code Online (Sandbox Code Playgroud)
如上所述,在第一次重新启动时,您会发现自己的内核已降级(或更好的“未升级”)。很快,Ubuntu 将尝试升级它......你会回到你开始的地方(见下文:“降级内核”),并且需要重新启动并再次安装 Virtualbox Additions。
有可能我们仍然可以强制加载 ISO9660 模块,因为内核 66 和 67 之间没有做任何工作并且二进制文件基本上没有变化,所以我们尝试:
# insmod /lib/modules/3.13.0-67-generic/kernel/fs/isofs/isofs.ko
Run Code Online (Sandbox Code Playgroud)
没有错误。有效。内核 .66 从内核 .67 加载模块。让我们再次尝试挂载 CD-ROM:
# mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only
Run Code Online (Sandbox Code Playgroud)
嘿!有效!
是的,但这仍然没有任何实际帮助,因为正在安装的 CD 是 VirtualBox Additions,它需要安装正在运行的内核头文件。如果正在运行的内核模块不再存在,则内核头文件可能也不存在。因此 CD-ROM 可能已安装,但安装程序将在启动时失败。
此外,即使它以某种方式找到了头文件并且编译没有失败,新编译的 Virtualbox 模块也将无处可去,因为 .66 模块目录已被清理(这就是isofs
在第一个模块中找不到模块的原因)地方!)。
但是假设您通过恢复以前内核的模块和头文件目录来解决所有这些问题:您现在基本上已经完成了昂贵的(和部分的)内核降级,并且在下次重新启动时添加的内容以及其余部分将丢失.66 内核,当新安装的 .67 内核激活时。因为 Virtualbox Additions CD 从 .66 内核启动,带有 .66 头文件,尽职尽责地安装了 .66 内核模块,而不是 .67 的。
如果我们移除.67 内核并重新安装带有模块的 .66 内核,那么一段时间内事情会变得很糟糕。无需重新启动,如上面的“强制 ISO 模块”解决方案。
并且重新启动不会丢失任何东西,因为没有安装 Additions-challenged 内核。
但是这样内核还是会在“待升级”列表中,同样的问题迟早会出现(通常是后天,或者下周,取决于自动更新的频率)。
当然,您现在可以在您选择的某个更合适的时刻出现它,这可能非常值得。对于一个迟到的项目,在编码马拉松的中间强制升级是魔鬼。
重新启动,已经安装的和更新的 .67 内核将被激活,它的所有模块和头文件都在那里;其中,isofs
读取ISO9660 CD文件系统的模块。
sudo reboot
Run Code Online (Sandbox Code Playgroud)
重新启动后,CD-ROM 将工作并且可以安装 Guest Additions。
使用 Additions 在 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
Run Code Online (Sandbox Code Playgroud)
(出于安全原因,可能不会自动删除最新的旧内核,以允许您“返回”)。
Aru*_*rul 11
根据其他人的回答,这通常可以通过重新启动来解决。
不知何故“iso9660”模块未加载。depmod
扫描所有模块并创建模块依赖项。
sudo depmod -a
sudo mount /dev/sr0 /mnt
ls -l /mnt
Run Code Online (Sandbox Code Playgroud)
这将解决问题。