我刚买了一台新的工作笔记本电脑,但很难让 VirtualBox 在其上运行。当我尝试启动它时,它基本上无法启动虚拟机,并且停留在“正在启动虚拟机”
对我来说,看起来dmesg
非常神秘:
$ dmesg | grep vbox
[Tue Feb 3 16:53:49 2015] vboxdrv: module verification failed: signature and/or required key missing - tainting kernel
[Tue Feb 3 16:53:49 2015] vboxdrv: Found 4 processor cores.
[Tue Feb 3 16:53:49 2015] vboxdrv: fAsync=0 offMin=0xcf offMax=0xff9
[Tue Feb 3 16:53:49 2015] vboxdrv: TSC mode is 'synchronous', kernel timer mode is 'normal'.
[Tue Feb 3 16:53:49 2015] vboxdrv: Successfully loaded version 4.3.20 (interface 0x001a0008).
[Tue Feb 3 16:53:49 2015] vboxpci: IOMMU not found (not registered)
[Tue Feb 3 17:08:22 2015] vboxdrv: Found 4 processor cores.
[Tue Feb 3 17:08:22 2015] vboxdrv: fAsync=0 offMin=0xd8 offMax=0x1d31
[Tue Feb 3 17:08:22 2015] vboxdrv: TSC mode is 'synchronous', kernel timer mode is 'normal'.
[Tue Feb 3 17:08:22 2015] vboxdrv: Successfully loaded version 4.3.18_Ubuntu (interface 0x001a0008).
[Tue Feb 3 17:08:22 2015] vboxpci: IOMMU not found (not registered)
[Tue Feb 3 17:09:18 2015] vboxdrv: Found 4 processor cores.
[Tue Feb 3 17:09:18 2015] vboxdrv: fAsync=0 offMin=0xdb offMax=0x2436
[Tue Feb 3 17:09:18 2015] vboxdrv: TSC mode is 'synchronous', kernel timer mode is 'normal'.
[Tue Feb 3 17:09:18 2015] vboxdrv: Successfully loaded version 4.3.18_Ubuntu (interface 0x001a0008).
[Tue Feb 3 17:09:18 2015] vboxpci: IOMMU not found (not registered)
[Tue Feb 3 17:09:22 2015] vboxdrv: Found 4 processor cores.
[Tue Feb 3 17:09:22 2015] vboxdrv: fAsync=0 offMin=0xd8 offMax=0xc60
[Tue Feb 3 17:09:22 2015] vboxdrv: TSC mode is 'synchronous', kernel timer mode is 'normal'.
[Tue Feb 3 17:09:22 2015] vboxdrv: Successfully loaded version 4.3.18_Ubuntu (interface 0x001a0008).
[Tue Feb 3 17:09:22 2015] vboxpci: IOMMU not found (not registered)
[Tue Feb 3 17:09:46 2015] Modules linked in: vboxpci(OE) vboxnetadp(OE) vboxnetflt(OE) vboxdrv(OE) ctr ccm pci_stub uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_core v4l2_common videodev arc4 media intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel cdc_mbim cdc_wdm kvm cdc_ncm cdc_acm usbnet mii btusb iwlmvm mac80211 joydev snd_hda_codec_realtek serio_raw snd_hda_codec_hdmi snd_hda_codec_generic iwlwifi lpc_ich snd_hda_intel snd_hda_controller snd_hda_codec rfcomm bnep snd_hwdep cfg80211 snd_seq_midi bluetooth snd_seq_midi_event snd_pcm 6lowpan_iphc mei_me mei shpchp snd_rawmidi snd_seq snd_seq_device snd_timer nvram snd mac_hid soundcore parport_pc ppdev nls_iso8859_1 lp parport uas usb_storage hid_generic usbhid hid dm_crypt crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel
[Tue Feb 3 17:09:46 2015] i915 aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd i2c_algo_bit psmouse drm_kms_helper ahci e1000e libahci drm ptp pps_core wmi video [last unloaded: vboxdrv]
[Tue Feb 3 17:09:46 2015] [<ffffffffc08d3b97>] ? supdrvIOCtl+0x1437/0x2d30 [vboxdrv]
[Tue Feb 3 17:09:46 2015] [<ffffffffc08dbf99>] ? rtR0MemAllocEx+0x1a9/0x290 [vboxdrv]
[Tue Feb 3 17:09:46 2015] [<ffffffffc08cd544>] ? VBoxDrvLinuxIOCtl_4_3_18+0x124/0x230 [vboxdrv]
我已经在许多不同的工作笔记本电脑上安装了 virtualbox(包括上一代相同型号的笔记本电脑),从未出现任何问题。
我已经在设置中启用了虚拟化,所以这不是问题。我还多次重建了 virtualbox,以防它无法正确地针对当前内核进行编译。
其中是否存在dmesg
根本缺陷或我完全忽略的东西?
任何帮助都会很感激,因为它阻止我完成任何工作,这非常令人沮丧。
虚拟盒:4.3.18
笔记本电脑型号:Thinkpad X1 Carbon(第三代)
Ubuntu 版本:14.10
uname -a
:Linux Arturis 3.16.0-30-generic #40-Ubuntu SMP Mon Jan 12 22:06:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
答案1
当您尝试使用 VBox 4.3.18 启动虚拟机时,请检查 VBoxSVC 服务是否仍在运行。
确保您已使用 I/O APIC,并且已选中使用主机 I/O 缓存选项。
您可能还想升级到 4.3.20,因为它对 4.3.18 进行了大量修复。
答案2
这是 VirtualBox 中缺少的功能,将在未来的版本中修复。请添加nosmap
到主机内核的内核参数中。要跟踪此问题,请参阅 VirtualBox 票证 13820。
答案3
这完全是瞎猜,但可能尝试关闭 GRUB 中的 IOMMU 吗?
在 中/etc/default/grub
,将开头的行更改GRUB_CMDLINE_LINUX_DEFAULT
为:
GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=off"
答案4
我来这里时也遇到了类似的问题。
就我的情况而言,当虚拟机卡住时,日志中出现了以下几行:
Jun 15 10:59:42 fedora-desktop kernel: SUPR0GipMap: fGetGipCpu=0x1b
Jun 15 10:59:43 fedora-desktop gnome-shell[10050]: syntax error: line 1 of stdin
Jun 15 10:59:43 fedora-desktop gnome-shell[10050]: Errors encountered in stdin; not compiled.
Jun 15 10:59:43 fedora-desktop kernel: traps: Missing ENDBR: 0xffffab45219b24a0
Jun 15 10:59:43 fedora-desktop kernel: ------------[ cut here ]------------
Jun 15 10:59:43 fedora-desktop kernel: kernel BUG at arch/x86/kernel/traps.c:255!
Jun 15 10:59:43 fedora-desktop kernel: invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
这是由于在https://www.virtualbox.org/ticket/21435
在这种情况下,解决方案是在内核启动参数中添加一个ibt=off
参数,以禁用某些英特尔 CPU 的“间接分支跟踪”功能。
请注意,“间接分支跟踪”是英特尔的一项安全功能,因此您可能需要在禁用它之前仔细查看一下:https://lwn.net/Articles/889475/
但这是我在 Fedora 38 上使用 Virtualbox 再次运行虚拟机的唯一方法(在 Ubuntu 上,相同的解决方案应该可行)。
在 Fedora 上,我将这个参数添加到内核启动中,运行以下命令:
sudo grubby --args=ibt=off --update-kernel /boot/vmlinuz-6.3.7-200.fc38.x86_64