laravel - 无法让 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 环境都给出了这些完全相同的问题。
我有:
- 更新到 10.15.4(但在旧版本下也有问题)
- 通过按下 D 启动运行 Apple 的硬件测试,未发现任何问题
- 重新安装了 VirtualBox
- 删除了我所有的虚拟机和磁盘
- 在新用户帐户下做了很多测试
- 将所有 VM 的设置保留为默认值
- 使用存储的“主机 I/O 缓存”设置
.. 但在任何情况下,我都无法获得一个新安装的 Laravel Homestead 机器,它带有一个新磁盘和一个新下载的盒子,可以毫无问题地可靠运行。好像十分之一的情况下它确实有效,而另外十分之九的情况我看到奇怪的错误和内核恐慌(在 VM 内),因为它在发出vagrant up
. 上面的错误只是典型的例子,我什至无法可靠地得到同样的错误。
这让我怀疑虚拟机的 I/O 配置有问题,但即使我没有触及它的任何默认设置,我也遇到了这些问题,但我没有找到其他在线用户对 Laravel 有问题MacOS Catalina 或新的 16 英寸 MacBook Pro 上的 Homestead。我慢慢发疯了,不知道还能去哪里找。
解决方案
至少对我来说是解决方案:问题出在 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 发生冲突并导致虚拟机出现内核恐慌。
不能确定这是否与您遇到的问题相同,但希望上述信息能帮助不幸遇到此问题的任何人,并阻止您再次遇到此问题。
推荐阅读
- macos - 分支重定位中不支持的符号修饰符:“调用 printf@PLT”
- yocto - postinst 脚本返回状态 1 且 opkg 失败时,如何将 opkg 包从 2014.12 升级到 2018.12?
- java - 在生产环境中运行 Spring Boot 微服务是否需要大型企业的嵌入式 Tomcat 服务器的许可证?
- postgresql - 在 Mac OS 上升级 psql - 客户端和服务器版本不匹配。某些 psql 功能可能不起作用
- javascript - 如何从多个 EJS 数据字段的 onClick 填充多个表单字段
- java - 当字符串中有空格时,是否可以按字符串获取枚举?
- javascript - 将 JavaScript 结果(js 文件)返回给 Angular 7
- java - 自动装配的 bean 在 CGLib 代理中为空
- python - 如何在烧瓶 restful api 应用程序中配置基本路径?
- sql - 如何通过加入 ALL_TAB_COLS 将以下查询的输出限制为数据类型数字/整数?- 甲骨文 SQL