首页 > 解决方案 > 无法让 Laravel Homestead 在 MacOS Catalina 下工作,VM 中的随机内核恐慌

问题描述

我是一名经验丰富的全栈 Web 开发人员,多年来一直是 Laravel 的 Homestead 的快乐用户,但我在新的 16 英寸 MacBook Pro 上的 MacOS Catalina 下的 Laravel Homestead 已经遇到了几个星期的问题,我只是不能t 找出问题所在。发出 后vagrant up,进程在 90% 的时间里停止等待与 VM 的成功 SSH 连接。

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

/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. 上面的错误只是典型的例子,我什至无法可靠地得到同样的错误。

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

标签: laravelvirtualboxhomesteadmacos-catalina

解决方案


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

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

什么都没起作用,这真令人气愤:每次我运行vagrant up虚拟机时,总是会在启动时出现内核崩溃,即使我确实设法在恐慌后以某种方式连接到它们,vagrant ssh但它们总是被破坏——运行sudo -s; apt-get update && apt-get upgrade将无法下载包,或者安装失败,以奇怪的方式,他们不会响应网络请求等。

所以我最终在想:在 macOS 上,有什么可能把事情搞得这么奇怪?内核扩展是我能想到的。我没有安装很多:Paragon 的 NTFS 驱动程序(我后来卸载了)、Little Snitch,以及 – 感谢 iStat Menus 的一些提示,如果我安装它会更好地监控电源 – Intel Power Gadget ( v3.7.0 for MacOS)。

那么,是时候快速测试一下我的 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>

所以让我们卸载英特尔能源驱动程序:

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>

是的,它不再运行了。现在让我们试试vagrant up……哇,VM 不再崩溃了!vagrant reload它仍然很好。我的天啊。所有这些时间都被浪费了,这是一个该死的 kext。

我用我所有的机箱 WordPress 盒子重新测试,它们也都开始正常,重新启动并再次执行上述操作,我的虚拟机会一直出现内核恐慌,直到我卸载英特尔能源驱动程序。所以我很确定是英特尔 Power Gadget 以某种方式与 VirtualBox 发生冲突并导致虚拟机出现内核恐慌。

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


推荐阅读