Нужны ли мне две машины для разработки драйверов IOKit Mac? - PullRequest
1 голос
/ 14 июня 2011

Я создаю драйвер IOKit CFPlugin для OS X. Я буду работать с поступающими сетевыми данными, которые будут преобразованы в данные MIDI.Никакое оборудование не вовлечено кроме встроенного Аэропорта.У меня есть опыт работы с драйверами на машинах с Windows и прошивками, но это мой первый опыт, когда я делаю это на Mac.Пока что дела идут неплохо, но документация Apple гласит: «Из соображений безопасности не следует загружать драйвер на компьютер для разработки».

У меня только один Mac.Я действительно не хочу два Mac - извини, Apple.Должен ли я принять это предупреждение серьезно?Есть вещи, которые мне нужно знать?

Спасибо, Том Джеффрис

Ответы [ 3 ]

2 голосов
/ 14 июня 2011

Вы можете также рассмотреть возможность запуска OS X внутри виртуальной машины в качестве тестового стенда. Конечно, было бы гораздо удобнее иметь отдельный загрузочный том.

2 голосов
/ 14 июня 2011

Предупреждение довольно плохо сформулировано; вам следует подумать об использовании отдельного загрузочного тома (раздела) для опробования вашего драйвера, поскольку возможно произвольно соединить вашу систему с вашим драйвером. Если вы занимаетесь разработкой ядра на любой ОС, которая не изолирована от вашей основной системы (через виртуальную машину, альтернативный загрузочный диск и т. Д.), Вы с ума сошли!

Что может быть более серьезной проблемой, так это то, что вы не можете выполнять какую-либо отладку ядра, потому что единственный вариант для этого - использовать GDB в удаленной системе OS X. Для этого вы можете рассмотреть возможность использования OS X при виртуализации .

1 голос
/ 07 июля 2011

вы определенно хотите иметь какой-нибудь способ восстановить установку fubar kext: загрузочный внешний диск или что-то, с чего вы можете быстро восстановить - это главная причина, по которой Apple предупреждает о запуске in-development-kernel-extensions на вашем компьютере машина.

Николас прав, что для отладки с использованием gdb (единственный путь в пространстве ядра) вам нужны две машины. Я никогда не пытался использовать виртуальную машину, как подсказывает Кокси: но я думаю, что это выполнимо (при условии, что вы запускаете свой kext на виртуальной машине и используете реальную хост-машину для запуска gdb).

Мой предпочтительный метод для трассировки и отладки в ядре - kprintf (), перенаправленный на firewire (он же firewire kprintf (man fwkpfv)). для этого вам понадобятся две машины с портами FireWire.

наконец, будучи старым компьютерным музыкантом, я удивляюсь, почему вы хотите программировать MIDI-синтезатор (или преобразователь) на уровне сетевого стека. Я предполагаю, что у вас будет гораздо более приятный опыт работы в пользовательском пространстве (где вы можете использовать математику с плавающей запятой ...)

если вам нужны какие-то советы или подсказки, не стесняйтесь связаться ...

| K <</p>

из Руководство по программированию ядра АЦП

Программирование ядра - это черное искусство, которое следует избегать, если это вообще возможно. К счастью, программирование ядра обычно ненужный. Ты можешь написать большинство программного обеспечения полностью в пространстве пользователя. Даже большинство драйверов устройств (FireWire и USB, например) можно записать как приложения, а не как ядро код. Несколько драйверов низкого уровня должны быть резидент в адресе ядра пространство, однако, и этот документ может быть незначительно полезным, если вы написание драйверов, которые попадают в это категория.

...