无法让 Laravel Homestead 在 MacOS Catalina 下工作,VM 中的随机内核崩溃

Can't get Laravel Homestead to work under MacOS Catalina, random kernel panics in VM

我是一名经验丰富的全栈网络开发人员,多年来一直是 Laravel 的 Homestead 的快乐用户,但我 运行 遇到了 Laravel 的问题Homestead 在我新的 16" MacBook Pro 上的 MacOS Catalina 下运行了几个星期,我就是找不到问题所在。在发出 vagrant up 后,进程停止了 90% 的时间等待成功的 SSH 连接到虚拟机。

当我通过 VirtualBox 打开 VM 的显示时,每次都会看到不同的错误,例如:

/sbin/init: /lib/x86_64-linux-gnu/libselinux.so.1: no version information available (required by /sbin/init)
/sbin/init: /lib/x86_64-linux-gnu/libmount.so.1: version 'BLKID_2.15' not found (required by /lib/x86_64-linux-gnu/libmount.so.1)
/dev/mapper/homestead--vg-root: clean, 197904/3604480 files, 1607396/14397440 blocks
Couldn't find an alternative telinit implementation to spawn.
[    3.535222] Kernel panic - not syncing: Attempted to kill i
/sbin/init: /lib/x86_64-linux-gnu/libidn.so.11: version 'XZ_5.0' not found (required by /lib/systemd/libsystemd-shared-237.so)
[    3.388154] Kernel panic - not syncing: Attmpted to kill init! exitcode=0x00000100
[    4.532862] systemd[395]: /lib/systemd/system-generators/lvm2-activation-generator failed with exit status 1

我是 运行在 MacOS 10.15.4 下使用 Vagrant 2.2.7、VirtualBox 6.1.4 r136177。 VM使用的磁盘镜像名为ubuntu-18.04-amd64-disk001.vmdk。

我的 Homestead 配置来自 Mojave 下的工作设置,并在 Catalina 下工作,但我不知道发生了什么变化以阻止它工作。我迁移了两个 Homestead 环境:一个是 运行 我所有简单 PHP 网站的通用环境,另一个是 运行 是 Apache 下的单个网站的特定项目环境(这是一个重型企业应用程序这需要一些特定的配置才能正常工作,所以我将它从我的通用 Homestead 环境中分离出来)。这曾经工作得很好,但现在两个 Homestead 环境都出现了这些完全相同的问题。

我有:

.. 但在任何情况下,我都无法获得全新安装的 Laravel Homestead 机器,其中包含全新磁盘和全新下载的盒子,可以毫无问题地可靠运行。好像十分之一它确实有效,而其他十分之九我看到奇怪的错误和内核恐慌(在 VM 内),因为它在发出 vagrant up 后试图出现。上面的错误只是典型的例子,我什至无法可靠地得到相同的错误。

这让我怀疑 VM 的 I/O 配置有问题,但即使我没有触及它的任何默认设置,我 运行 也遇到了这些问题,但我没有在 MacOS Catalina 或新的 16" MacBook Pro 上找到 Laravel's Homestead 有问题的其他在线用户。我慢慢地发疯了,不知道还能去哪里看。

至少对我来说是解决方案:问题出在 Intel Power Gadget 内核扩展上。卸载它,VirtualBox Linux 客户端 VM 内核恐慌应该停止。

我运行最近非常类似的东西(Vag运行t 2.2.7, VirtualBox 6.1.4 r136177 under MacOS 10.15.4 on a 2018 年末 i5 MacBook Air,Laravel 的 Homestead 和 WordPress 网站的 Chassis)。尝试了我能找到的所有旧版本的 VirtualBox 和 Vag运行t,重新安装了 macOS(尽管降级 Mojave 的各种尝试被证明是失败的)。浪费了大量时间,这让我无法完成任何开发工作。

什么都没用,真让人恼火:每次我 运行 vagrant up 虚拟机在启动时总是内核崩溃,即使我确实设法以某种方式连接到它们 post-panic with vagrant ssh 它们总是被破坏 – 运行ning sudo -s; apt-get update && apt-get upgrade 将无法下载软件包,或者无法安装,以奇怪的方式,它们不会响应网络请求,等等

所以我最终想到:什么可能会把 macOS 上的这个 st运行gely 搞砸?我能想到的就是内核扩展。我没有安装很多:来自 Paragon 的 NTFS 驱动程序(我后来卸载了它)、Little Snitch,以及——感谢 iStat Menus 的一些推动,说如果我安装它会更好地进行电源监控——Intel Power Gadget(适用于 MacOS 的 v3.7.0)。

所以,是时候快速测试一下我的 Homestead VM 内核是否在 vagrant up 上崩溃了?是的,是的,它 叹息 。是的,让我们卸载一些内核模块并再次检查。打开一个终端,然后 运行 sudo -s 成为 root。

现在列出我们拥有的,不包括 Apple kexts:

bash-3.2# kextstat  | grep -v com.apple.
Index Refs Address            Size       Wired      Name (Version) UUID <Linked Against>
  163    0 0xffffff7f8446d000 0x4000     0x4000     com.intel.driver.EnergyDriver (3.7.0) 35E739F9-BF6C-3024-A67C-750711B3FB64 <8 6 5 3>
  187    0 0xffffff7f8468b000 0x185000   0x185000   at.obdev.nke.LittleSnitch (5470) A938A4D4-0642-39B0-A99E-4FA69C7F9660 <8 6 5 3 1>
  188    3 0xffffff7f84810000 0xf1000    0xf1000    org.virtualbox.kext.VBoxDrv (6.1.6) 13AC652B-A2C1-3E8E-809A-7604B284295D <8 6 5 3 1>
  191    0 0xffffff7f84919000 0x8000     0x8000     org.virtualbox.kext.VBoxUSB (6.1.6) 60779F27-059F-3030-9302-A74F05246760 <190 188 64 8 6 5 3 1>
  196    0 0xffffff7f8493b000 0x5000     0x5000     org.virtualbox.kext.VBoxNetFlt (6.1.6) 018767CF-8706-37EE-B97E-DEC1E0552BED <188 8 6 5 3 1>
  197    0 0xffffff7f84940000 0x6000     0x6000     org.virtualbox.kext.VBoxNetAdp (6.1.6) BB0DE95D-8041-32A2-B1D1-9144E531FB07 <188 6 5 1>

那么让我们卸载 Intel Energy Driver:

bash-3.2# kextunload -b com.intel.driver.EnergyDriver

并检查它是否不再列出:

bash-3.2# kextstat  | grep -v com.apple.
Index Refs Address            Size       Wired      Name (Version) UUID <Linked Against>
  187    0 0xffffff7f8468b000 0x185000   0x185000   at.obdev.nke.LittleSnitch (5470) A938A4D4-0642-39B0-A99E-4FA69C7F9660 <8 6 5 3 1>
  188    3 0xffffff7f84810000 0xf1000    0xf1000    org.virtualbox.kext.VBoxDrv (6.1.6) 13AC652B-A2C1-3E8E-809A-7604B284295D <8 6 5 3 1>
  191    0 0xffffff7f84919000 0x8000     0x8000     org.virtualbox.kext.VBoxUSB (6.1.6) 60779F27-059F-3030-9302-A74F05246760 <190 188 64 8 6 5 3 1>
  196    0 0xffffff7f8493b000 0x5000     0x5000     org.virtualbox.kext.VBoxNetFlt (6.1.6) 018767CF-8706-37EE-B97E-DEC1E0552BED <188 8 6 5 3 1>
  197    0 0xffffff7f84940000 0x6000     0x6000     org.virtualbox.kext.VBoxNetAdp (6.1.6) BB0DE95D-8041-32A2-B1D1-9144E531FB07 <188 6 5 1>

对了,现在不是运行ning了。现在让我们尝试 vagrant up 并且……哇,VM 不再崩溃了! vagrant reload 仍然很好。我的天啊。浪费了那么多时间,这真是该死的 kext。

我重新测试了我所有的 Chassis WordPress 机器,它们都启动良好,同样,重新启动并再次执行上述操作,并且我的 VM 会一直出现内核崩溃,直到我卸载 Intel Energy Driver。所以我非常确定是 Intel Power Gadget 以某种方式与 VirtualBox 发生冲突并导致 VM 出现内核崩溃。

不能确定这是否与您 运行 遇到的问题相同,但希望以上信息能帮助不幸 运行 遇到此问题的任何人,并阻止您 运行再次讨论这个问题。