由于Catalina在只读文件系统上,因此如何在MAC OS Catalina上调试内核崩溃

问题描述 投票:0回答:1

在我们的自定义kext中,在访问SMB协议的“脱机”属性时使内核陷入恐慌。如何在MAC OS Catalina上调试这些内核崩溃。

由于只读文件系统,Catalina不支持调试内核扩展步骤。同样,带有IOKit.framework的kext无法在MAC OS 10.14.x上加载,并显示错误

The super class vtable '__ZTV9IOService' for vtable '__ZTV23com_microfocus_cisiokit' is out of date. Make sure your kext has been built against the correct headers.
The super class vtable '__ZTV12IOUserClient' for vtable '__ZTV8cisiokit' is out of date. Make sure your kext has been built against the correct headers.

是否有任何文档指定了如何在设置了只读文件系统的Mac OS Catalina上调试内核崩溃?

注意:禁用SIP也不起作用。

提前感谢。

macos-catalina iokit kernel-extension panic
1个回答
0
投票

向您解答有关调试macOS内核扩展的问题:

根据文档,没有“ / Volumes / KernelDebugKit / mach_kernel”

  1. 内核调试工具包,因为必须安装大约OS X 10.10。下载并打开KDK .dmg时,需要运行它包含的安装程序。
  2. 然后,KDK的内核将永久安装在您的系统上,/Library/Developer/KDKs/KDK_[[os-version]].kdk/System/Library/Kernels/
  3. 默认内核映像不再命名为mach_kernel,而只是命名为kernel

例如/Library/Developer/KDKs/KDK_10.15_19A536g.kdk/System/Library/Kernels/kernel

由于只读文件系统,Catalina不支持调试内核扩展步骤。

由于Catalina是只读文件系统,因此无法创建PanicDumps目录以通过'/'卷下的kdump守护程序收集恐慌,因为Catalina是只读文件系统,参考号:https://developer.apple.com/library/archive/technotes/tn2004/tn2118.html

注意kdumpd接受转储的位置作为其命令行参数,因此您可以选择一个可写位置。无论如何,您都需要在/Library/LaunchDaemons下复制启动的plist,因为/System/Library/LaunchDaemons下的原始文件不可写。但是,我不是100%确定内核转储在现代macOS版本上是否仍然可以正常工作。

还要注意,从技术上讲,您可以读写只读OS基本卷。但是,我不建议在测试系统以外的任何设备上使用。

© www.soinside.com 2019 - 2024. All rights reserved.