Нужны ли мне две машины для разработки драйверов Mac Iokit?
-
27-10-2019 - |
Вопрос
Я строю драйвер CFPPLUGIN для OS X. Я буду работать с представленными сетевыми данными, которые будут переведены в MIDI Data. Никакое оборудование не связано, кроме встроенного аэропорта. У меня есть опыт работы с драйверами на машинах и прошивке Windows, но это мой первый падение, чтобы сделать это на Mac. До сих пор дела идут довольно хорошо, но Apple Documentation SEZ: «По соображениям безопасности вы не должны загружать своего драйвера на машину разработки».
У меня есть только один Mac. Я действительно не хочу два Macs- извините, Apple. Должен ли я серьезно относиться к этому предупреждению? Есть ли вещи, которые мне нужно знать?
Спасибо, Том Джеффрис
Решение
Вы также можете рассмотреть вопрос о запуске OS X внутри виртуальной машины в качестве испытательного стенда. Наверняка было бы гораздо удобнее, что наличие отдельного объема загрузки.
Другие советы
Предупреждение довольно плохо сформулировано; Вы должны рассмотреть вопрос о использовании отдельного объема загрузки (раздел) для опробования вашего драйвера, так как можно произвольно шлачать вашу систему с помощью вашего драйвера. Если вы делаете разработку ядра на любой ОС, которая не изолирована от вашей основной системы (через виртуальную машину, альтернативный загрузочный диск и т. Д.), Вы сумасшедшие!
Что может быть более крупной проблемой, так это то, что вы не можете провести какую -либо отладку ядра, потому что единственный вариант для этого - использовать GDB в удаленной системе OS X. Для этого вы можете рассмотреть Запуск OS X в виртуализации.
Вы определенно хотите получить какую-то способ восстановления установки Fubar Kext: загрузочный внешний диск или что-то, из чего вы можете быстро восстановить-это главная причина предупреждения Apple о запуске в разработке-кенле-экзиатах на вашей производственной машине.
Николас прав, что для отладки с помощью GDB (единственный путь в пространстве ядра) вам нужны две машины. Я никогда не пытался использовать виртуальную машину, как предлагает Кокси: но я думаю, что это возможно (при условии, что вы запускаете свой Kext на виртуальной машине и используете настоящий хост -машину для запуска GDB).
Мой Предпочтительным методом отслеживания и отладки в ядре является kprintf (), направленный в Firewire (он же FireWire Kprintf (Man FWKPFV)). Для этого вам нужны две машины с портами FireWire.
Наконец, будучи старым компьютерным музыкантом, мне интересно, почему вы хотите запрограммировать синтезатор MIDI (или трансформатор) на уровне стека сети. Я предполагаю, что у вас будет гораздо более приятный опыт работы в пользовательке (где вы можете использовать математику с плавающей запятой ...)
Если вам нужны подсказки или подсказки, не стесняйтесь связаться ...
| K.
от Руководство по программированию ядра АЦП
Программирование ядра - это черное искусство, которого следует избегать, если это вообще возможно. К счастью, программирование ядра обычно не нужно. Вы можете написать большинство программного обеспечения полностью в пространстве пользователей. Даже большинство драйверов устройств (например, FireWire и USB) могут быть написаны как приложения, а не как код ядра. Однако несколько низкоуровневых водителей должны быть проживающими в адресном пространстве ядра, и этот документ может быть незначительно полезен, если вы пишете драйверов, которые попадают в эту категорию.