Macos “修复kextcache”;不能';“找不到符号”;xnu生成后的错误

Macos “修复kextcache”;不能';“找不到符号”;xnu生成后的错误,macos,macos-high-sierra,kernel-extension,darwin,xnu,Macos,Macos High Sierra,Kernel Extension,Darwin,Xnu,我正在尝试为OSX High Sierra 10.13.3构建并运行一个。我是根据和等指南在本地编译的。编译内核后,我将其加载到一个高性能的Sierra 10.13.3 VirtualBox VM上,替换那里的内核,以便它从我的内核引导 尽管VM正在引导和运行我的内核(从替换内核前后的uname-a输出以及添加到引导过程中的打印语句中可以看出差异),但在内核扩展预链接过程中,我看到了以下错误。它们出现在引导过程中,每当我按照指南的说明用自己的内核替换虚拟机内核后运行sudo-kextcache-

我正在尝试为OSX High Sierra 10.13.3构建并运行一个。我是根据和等指南在本地编译的。编译内核后,我将其加载到一个高性能的Sierra 10.13.3 VirtualBox VM上,替换那里的内核,以便它从我的内核引导

尽管VM正在引导和运行我的内核(从替换内核前后的
uname-a
输出以及添加到引导过程中的打印语句中可以看出差异),但在内核扩展预链接过程中,我看到了以下错误。它们出现在引导过程中,每当我按照指南的说明用自己的内核替换虚拟机内核后运行
sudo-kextcache-invalidate/

kxld[com.apple.iokit.IOStorageFamily]: In interface com.apple.kpi.mach of __kernel__, couldn't find symbol _mach_bridge_register_regwrite_timestamp_callback

kxld[com.apple.iokit.IOStorageFamily]: In interface com.apple.kpi.private of __kernel__, couldn't find symbol _kern_buflet_get_data_length

kxld[com.apple.iokit.IOStorageFamily]: In interface com.apple.kpi.private of __kernel__, couldn't find symbol _kern_buflet_get_data_limit

kxld[com.apple.iokit.IOStorageFamily]: In interface com.apple.kpi.private of __kernel__, couldn't find symbol _kern_buflet_get_data_offset

...

kxld[com.apple.nke.applicationfirewall]: In interface com.apple.kpi.private of __kernel__, couldn't find symbol _xcpm_mbox_lock

kxld[com.apple.nke.applicationfirewall]: In interface com.apple.kpi.private of __kernel__, couldn't find symbol _xcpm_mbox_unlock

kxld[com.apple.nke.applicationfirewall]: In interface com.apple.kpi.bsd of __kernel__, couldn't find symbol _bpf_tap_packet_in

kxld[com.apple.nke.applicationfirewall]: In interface com.apple.kpi.bsd of __kernel__, couldn't find symbol _bpf_tap_packet_out
这些只是大约18000个此类错误的样本。虽然这些错误不会阻止构建工作的PrelinkedKernel,但在内核编译或安装过程中显然缺少了一些步骤。为什么会出现这些错误?有人知道我如何解决这些问题吗

基于开源Stack Exchange中关于我丢失的一些
xcpm
符号的讨论,我得出结论,这些符号丢失是因为它们来自苹果公司未随xnu开源发布的专有文件


更新:这些缺少的符号错误可以通过在
xnu/config/Private.exports
中为它们指定声明来解决。通过构建内核会自动为您添加这些符号。

我认为这不是唯一的问题。我在构建10.13.3时没有得到这些错误,但在构建10.13时得到了这些错误。6@JLegendre你知道为什么会这样吗?您为10.13.3构建了哪些组件?我正在构建/安装dtrace、AvailabilityVersions、libplatform头、libdispatch、Libsystem、xnu头,最后是xnu。开源网站apple.com上10.13.3的所有版本。我正在构建一台10.13.5主机,复制和修改它的SDK,这可能相关,也可能无关。@JLegendre我的版本是9.4.1