1

我正在为 OS X 构建一个 IOKit CFPlugin 驱动程序。我将处理传入的网络数据,这些数据将被转换为 MIDI 数据。除了内置机场外,不涉及任何硬件。我对 Windows 机器和固件上的驱动程序有经验,但这是我第一次在 Mac 上做这件事。到目前为止,一切进展顺利,但 Apple 文档 sez:“出于安全原因,您不应该将驱动程序加载到您的开发机器上。”

我只有一台 Mac。我真的不想要两台 Mac——对不起,Apple。我应该认真对待这个警告吗?有什么我需要知道的吗?

谢谢,汤姆杰弗里斯

4

3 回答 3

2

警告措辞相当糟糕;您应该考虑使用单独的引导卷(分区)来试用您的驱动程序,因为可以用您的驱动程序任意地对系统进行软管处理。如果您在任何未与主系统隔离的操作系统上进行内核开发(通过虚拟机、备用引导磁盘等),那您就疯了!

可能更大的问题是您无法进行任何内核调试,因为唯一的选择是在远程 OS X 系统上使用 GDB。为此,您可能需要考虑在虚拟化中运行 OS X。

于 2011-06-13T21:06:11.207 回答
2

您还可以考虑在 VM 中运行 OS X 作为您的测试平台。拥有一个单独的启动卷肯定会方便得多。

于 2011-06-14T00:27:10.420 回答
1

您肯定希望有某种方法来恢复 fubar kext 安装:可引导的外部驱动器或您可以快速恢复的东西 - 这是 Apple 警告不要在您的生产机器上运行 in-development-kernel-extensions 的主要原因。

Nicholas 是对的,为了使用 gdb(内核空间中的唯一方法)进行调试,您确实需要两台机器。我从来没有尝试过像Coxy建议的那样使用VM:但我想这是可行的(假设你在虚拟机上运行你的kext并使用真正的主机来运行gdb)。

在内核中跟踪和调试的首选方法是 kprintf() 路由到火线(又名火线 kprintf (man fwkpfv) )。为此,您确实需要两台带有火线端口的机器。

最后,作为一名老计算机音乐家,我想知道您为什么要在网络堆栈级别上编写一个 MIDI 合成器(或转换器)。我的猜测是,您将在用户区工作时获得更令人满意的体验(您可以在其中使用浮点数学......)

如果您需要一些提示或提示,请随时与我们联系...

|K<

来自ADC 内核编程指南

内核编程是一门黑魔法,应尽可能避免。幸运的是,内核编程通常是不必要的。您可以完全在用户空间中编写大多数软件。甚至大多数设备驱动程序(例如 FireWire 和 USB)都可以编写为应用程序,而不是内核代码。然而,一些低级驱动程序必须驻留在内核的地址空间中,如果您正在编写属于这一类的驱动程序,本文档可能会有点用处。

于 2011-07-07T11:43:41.857 回答