Driver kit mac os что это

Driver kit mac os что это

    UEFI bios:
  1. Скидываем все настройки в default.
  2. AHCI — enable;
  3. Vt-d: Disable (+ в Clover дропнуть DMAR таблицу)
  4. Vt-x: Enable (только для 10.13 и если используете виртуальные машины)
  5. Intel Virtualization Technology — Enable
  6. Serial-port: Disable
  7. XHCI Hand-off: Disable (рекомендуеться)
  8. XHCI Hand-off: Enabled (только если что то не работает в режиме Disable )
  9. IOAPIC 24-119 Entries: Enabled (подмечено что у многих с этим пунктом паникует, поэтому тестируйте)
  10. CSM: Disable (по возможности)
  11. Fasboot: Disable
  12. Secure boot: Disable or Other OS

Legacy bios:

  • AHCI: enable;
  • HPET: enable;
  • Vt-d: disable;
  • ACPI Suspend Type — S3 (Only);
  • No Execute memory — enable;
  • USB Legacy — enable;
  • Отключаем всю периферию (вебки, смарты, блютуз-свистки, кард-ридеры и т.д.)
  • . .
    [i]Примечание:

    1. HDD должен быть подключен к SATA-0, контролер Intel.
    2. . [/i]

    Для установки потребуется флешка не менее 8Гб.

    1. ПК на ОС Windows XP/7/8.
    2. Скачать утилиту Boot Disk Utility с страницы разработчика cvad или с форума applelife.ru со страницы посвящённой данной утилите.
    3. Установить по инструкции
    4. Зайти на флешку в папку EFI\CLOVER\ и удалить папку OEM и файл config-sample (не путать с config.plist).
    5. Зайти на https://github.com/aci…pleSupportPkg/releases скачать ApfsDriverLoader.efi и скопировать его в папку EFI\CLOVER\drivers64UEFI (необходимо для macOs 10.13 и выше!)
    6. Добавить в EFI\CLOVER\Kext\Other https://github.com/acidanthera/Lilu/releases
    7. Добавить в EFI\CLOVER\Kext\Other https://github.com/aci…WhateverGreen/releases
    8. Скачать образ Mac OS X по указанным ссылкам:
      Нажми и качай!
    9. Развернуть скаченный образ на подготовленную флешку.
      1. Инструкция с applelife.ru пункт «Заливка дистрибутива macOS на второй том загрузочного USB Flash drive:«:
      2. Перед распаковкой образа необходимо нажать кнопку ^Format disk^.
      3. В основном окне программы -> Destination Disk — выбираем наш USB Flash Drive -> Part2.
      4. Нажимаем кнопку «Restore Partition».
      5. В открывшемся окне проводника выбираем распакованный файл с расширением *.hfs.
    10. Тем, кто устанавливает на ноутбук (или имеет PS/2 мышь или клавиатуру) , обязательно скачать VoodooPS2Controller.kext.zip ( 97,46 КБ )
      , новая версия: VoodooPS2Controller.kext.zip ( 93,86 КБ )
      положить в папку EFI/CLOVER/KEXT/10.X или Other
    11. Всё, установочная флешка готова, можно приступать к установке.

    За данный споcоб установки благодарим cvad и Skvo
    Данная инструкция написана по материалам с applelife.ru

    Установить один из загрузчиков на диск (если он не входит в состав сборки) :
    — Загрузчик №1 — Clover (рекомендуется для большинства пользователей);
    Как это сделать: UEFI, Legacy BIOS.
    — Загрузчик №2 — OpenCore (для опытных пользователей)
    — Загрузчик №3 — Chameleon (на данный момент существует для очень старых систем и особых случаев);
    *загрузчик устанавливаем только один, на ваш выбор

    После входа в macOS первое, что делаем:

    1. Устанавливаем кекст для сетевой карты;
    2. Настраиваем SMbios;
    3. «Заводим» видео-карту (разрешение должно быть правильным, и верхняя строка прозрачная);
    4. Поднимаем «нативное управление питанием» процессора;
    5. Поднимаем звук через AppleALC или VoodooHDA

    .
    21. Ставим програмулинки и «рюшечки».

    Источник

    Мини-мануал, как поставить хакинтош максимально просто и безболезненно

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

    Так как с вероятностью 99% вы столкнетесь с кучей ошибок на различных этапах установки, лучшее, что я могу посоветовать — оставить комментарий со своей проблемой внизу статьи, или же написать о ней на каком-нибудь форуме. Не исключено так же, что ваша проблема уже известна сообществу, поэтому навыки гугления очень рекомендую применять.

    Итак, информацию, которая уже есть на хабре, постараюсь не дублировать, переходите по ссылке в предисловии и разбирайтесь. Теперь можем приступать.

    В данной статье загрузчик = Clover, так как мы будем использовать именно его. Про другие загрузчики просьба не спрашивать, ответить, к сожалению, не смогу.

    Комплектующие

    1. Процессоры

    Intel only, серия желательно i3/i5/i7 (лучше начиная со второго поколения Sandy Bridge), но заводятся относительно несложно и Pentium/Celeron, производительностью, конечно, не блещут, но для простого использования хватит.

    2. Видеокарта

    Встройки от Intel заводятся почти всегда с той или иной степенью успешности, но нередки артефакты и глючный интерфейс даже при использовании самых новых и, казалось бы, нативных экземпляров, например UHD630. Часто требуется подмена ID видеокарты на фейковый в загрузчике ( тут бояться не надо, все будет подробно объяснено ниже ).

    Использовать графику от nVidia для хака я не рекомендую. Apple не ставит её уже много лет, ни о какой нативности речи не идет. Для них не существует драйверов под Mojave 10.14 и Catalina 10.15. Есть и общеизвестные легкозаводимые карточки, например, GT210 и 630, но они уже не встречаются в продаже.

    Если и покупать видеокарту для хакинтоша, то только от AMD. Отлично работают RX4xx и RX5xx серии, за исключением RX550, с которой могут быть проблемы. Из профессионального сегмента — Vega 56 и 64, которые используются в оригинальных iMac Pro.

    3. Подключение к интернету

    Дабы не играть с компьютером в лотерею по принципу «заведется — не заведется», советую сразу прикупить внешний WiFi-адаптер и заранее проверить его на наличие драйверов под макось.

    Создание загрузочной флешки

    Она хороша еще и тем, что позволяет скачивать так называемые «Recovery HD», мини-образы, позволяющие восстановить систему, если случилось что-то нехорошее. Они весят примерно по 500МБ, поэтому при загрузке с них сама система качается с серверов Apple. Нам подобный способ подойдет только, если у нас нативная сетевая карта, которая сразу заводится сама. Я с такими случаями не встречался, но можете поискать в интернете, какие сетевые карточки не требуют отдельного завода. В любом случае все Recovery HD можно скачать, нажав на «DL Center» в главном меню BDU.

    Скачиваем её с официального сайта: тык (осторожно, много рекламы), подключаем нашу флешку к компьютеру, выбираем её в списке и нажимаем «Format Disk». Теперь наша флешка должна отформатироваться и разбиться на 2 раздела. В настройках данной утилиты можно выбрать размер раздела под Clover, его версию и некоторые другие параметры. 200 МБ и последняя версия загрузчика будут лучше всего.
    В раздел с Clover`ом так же кладем драйверы под wifi-адаптер.

    Читайте также:  Rdp windows ��� mac os

    Кексты (от лат. kernel extensions = расширения ядра) — своеобразные драйвера для макоси, заставляющие работать то, что по идее не должно было бы работать, например, звуковую карту или сетевуху.

    Далее скачиваем и закидываем в папку clover/kexts/other следующий набор кестов (FakeSMC не считаем, он есть изначально):

    • Lilu — патч системных процессов для других кекстов.
    • WhateverGreen — завод графики.
    • USBInjectAll — завод USB.
    • AppleALC — завод звука.

    Остальные кексты ставятся на ваше усмотрение.

    Кратенько список прочих кекстов и зачем они нужны:

    • FakePCIID — семейство кекстов, подменяющих идентификаторы драйверов для корректной работы аппаратных устройств. На тех машинах, которые я использовал под хакинтош, эти кексты не требовались, но если поставите, хуже не будет.
    • HDMIAudio — для передачи звука по HDMI.
    • ACPIBatteryManager — исправляет отображение батарейки в MacOS.

    Последний этап подготовки флешки — собственно прошивка на неё образа MacOS в файле формата .hfs.
    Делается это следующим образом:

    • Скачиваем образ системы отсюда или отсюда. На моей машине стоит MacOS 10.14 Mojave, её и рекомендую использовать, если ваш процессор поколения Sandy Bridge и новее. Если нет — вам подойдет 10.13 High Sierra. Не имеет большого значения, откуда вы возьмете образ, главное, он должен быть в формате .hfs.
    • Опять открываем BDU, выбираем второй(наибольший) раздел нашей флешки, жмем «Restore partition, в открывшемся окошке щелкаем по нашему образу и прошиваем.
    • Все, флешка готова.

    Загрузка и установка

    Вот мы и перешли к финальной части нашего действа.
    1. Берем нашу флешку, вставляем в компьютер в порт USB2.0 (это очень важно, только USB2.0) и загружаемся с неё.
    2. Должно открыться меню Clover`a. Оно будет выглядеть примерно так:

    3. Открываем настройки, выбрав второй значок во втором ряду(мышку использовать не получится, все действия выполняем клавиатурой).
    4. Прописываем следующие загрузочные аргументы (boot args) — магические слова, дающие загрузчику некоторые указания:
    kext-dev-mode=1 -v
    Первая часть строки разрешает устанавливать в систему кексты, вторая — запускает загрузку в текстовом режиме. В принципе, этого должно быть достаточно. Так же, существуют следующие бут аргументы:

    • rootless=0 — отключает System Integrity Protection (защита изменения системных данных), что бы это ни было — ни в коем случае не используем данный аргумент начиная с MacOS 10.11 El Capitan
    • nv_disable=1 — актуально для первого запуска видеокарт от nVidia. Отключает графическую оболочку
    • nvda_drv=1 — наоборот, включает графическую оболочку. Используется при втором и последующих запусках графики nVidia, когда драйверы уже установлены.
    • –disablegfxfirmware – активирует только встроенную видеокарту.
    • debug=0x100 – если при загрузке случился коллапс, стопорит систему, не давая ей перезагружаться. Помогает разглядеть последние строки перед ошибкой.
    • keepsyms=1 — чуть более подробный вывод информации при загрузке
    • cpus=x (вместо x число) — активирует указанное кол-во ядер процессора

    5. В разделе „Graphics Injector“ в загрузчике можно подменить ID видеокарты. Первый раз этого делать нет смысла, может заработать и так. Если вас постигла неудача, можете попытаться изменить ID. На какой конкретно — раньше можно было найти на сайте applelife.ru. Последнее время он почему-то не работает, так что ссылку дать не могу. Бывают случаи, когда фейковый ID видеокарты может быть любым, за исключением дефолтного.

    6. Нажимает „boot MacOS install from ***“. Начинается загрузка системы.
    Если все хорошо, следуем указаниям на экране, форматируем диск под именем „Macintosh HD“ в „Дисковой утилите“ и запускаем установку.
    Если все не так радужно, запоминаем последнюю строку, появившуюся при загрузке на экране и вбиваем её в поисковик. Через этот путь прошел как я, так и все мои друзья-хакинтошники.

    7. После установки система сама перезагрузится, повторяем действия 1-5, но теперь щелкаем по „Boot MacOS from Macintosh HD“. Установка продолжится, в результате вы окажетесь в системе. Но эта система будет неполноценна, так загрузчик, с помощью которого вы в нее попали, находится на флешке.

    Настройка системы

    1. Запускаем драйверы для WiFi-адаптера чтобы заставить работать интернет
    2. Копируем config.plist, кексты и драйверы с флешки на компьютер, а саму флешку отключаем.
    3. Отсюда скачиваем и устанавливаем Clover. Во время установки настраиваем Clover для UEFI-ных биосов.
    4. Теперь в Finder`e вы сможете увидеть EFI раздел с Clover`ом. Закидываем туда кексты, драйверы и config.plist так же, как они лежали на флешке.
    5. Скачиваем программу Clover Configurator для редактирования файла config.plist. Что именно нужно редактировать — говорить не буду, переходите по ссылке в предисловии и читайте там. Мне просто не очень хочется повторять одну и ту же информацию несколько раз.
    6. Перезагружаемся для проверки работоспособности.

    Коллекция нюансов/способов решения ошибок

    1. При установке систем 10.13, 10.14, 10.15 обязателен драйвер apfs.efi в папке Drivers64UEFI. Если он отсутствует, то после окончания первого этапа установки, вы не сможете его продолжить — Clover не увидит диск с системой.
    2. Обязательно используйте загрузку в текстовом режиме (аргумент -v) до тех пор, пока не будете уверены, то система работает должным образом.
    3. Лучше не ставить галочки возле неизвестных параметров в Clover`e.
    4. Ошибка, с которой я столкнулся, заключается в следующем: при самой установке хака на жесткий диск система зависает, когда остается несколько минут до завершения. Я долго с этим мучился, пока не попробовал использовать более старую версию Clover.
    5. Необязательно ставить хак на SSD, система работает весьма быстро и на 7200 об/мин обычных жестких дисках.
    Читайте также:  Как сделать том системным windows

    На этом ваш покорный слуга раскланивается. Если в статье были допущены какие-либо неточности, прошу написать об этом в комментарии. Спасибо!

    Вся информация представлена исключительно в ознакомительных целях и никого не побуждает к действию.

    Источник

    Основы работы с IOKit. Тонкости программирования драйверов

    В рамках поддержки блога разработки под Mac OS X, я представляю свою статью о низкоуровневой разработке под Mac OS X. Обычно тема разработки драйверов не столь популярна, однако и здесь Mac OS X выгодно выделяется из ряда прочих операционных систем. Да, писать драйвера для Mac O S X – просто! Проще чем когда-либо ранее!

    Экскурс в глубины теории

    Очень часто я слышу фразы, что Mac OS X – это Linux. Или же что OS X основано на ядре FreeBSD и посему драйвера легко портировать из одной системы в другую. А вот и нет! Очень часто концепция разработки под Mac OS X противоречит классическим принципам, к примеру вместо традиционных спин локов (spin lock) Apple предлагает использовать примитив IOCommandGate для синхронизации доступа. Также достаточно жестко регламентируется использование ядерной памяти. Примерный совет от Apple выглядит так: «Выделяйте столько памяти в ядре, сколько вам необходимо использовать и не байтом больше. Предпочитайте основную часть работы с большими буферами памяти переносить в пользовательский режим (user space)».

    Сердцем, т.е. ядром, Mac OS X является XNU. XNU – это гибридное ядро, которое сочетает в себе множество преимуществ, а также недостатков, монолитных и микроядерных ОС. Собственно, XNU состоит из микроядра mach, разработанного институтом Карнеги Мелоуна, подсистемы Posix из BSD 4.3 (позже эта часть синхронизировалась с последней веткой FreeBSD, дописывалась самой Apple, а также 3-ми лицами), и объектно-ориентированного фреймворка IOKit, на который положена ответственность взаимодействовать с аппаратной частью Mac’ов. Стоит упомянуть, что ядро mach предоставляет операционной системе следующие сервисы: планировщик потоков и процессов, вытесняющую многозадачность (pre-emptive), механизм виртуальной памяти, защиту памяти, mach-IPC (через передачу сообщений), отладчик ядра.

    Кое-что об IOKit

    И так, что же из себя представляет IOKit? Как и многие другие наработки, IOKit – это наследие NeXT Computer (гениальные люди видимо работали в NeXT). IOKit – это объектно-ориентированный фреймворк реализующий драйверную модель Mac OS X. Написан IOKit на С++, вернее на его урезанной версии – Embedded C++ [1]. Проще говоря, это старый добрый С++ без множественного наследования, RTTI, шаблонов и исключений. Также в IOKit запрещается определять конструкторы и деструкторы классов. Впрочем, если очень хочется, то использовать можно все, кроме RTTI и исключений, но Apple за это вас по голове не погладит! Ранее IOKit был написан на Objective C, как и фреймворк Cocoa, и назывался Driver Kit. Однако, для упрощения разработки драйверов 3-ми лицами, Driver Kit переписали на C++. Впрочем, по словам одного из основных разработчиков IOKit, Годфри ван дер Линдена (Godfrey van der Linden), это решение было ошибочным. Тем не менее, в IOKit можно невооруженным взглядом увидеть наследие Objective C, к примеру механизм подсчета ссылок и retain/release, именование классов (приставки OS и IO), именование методов классов и многое другое. Еще один интересный факт: Godfrey van der Linden — студент университета Nicta, того самого австралийского НИИ, который открыл исследовательский проект Darbat [2].

    Для того, чтобы приступить в делу вам достаточно установленного XCode SDK, собственно самого IDE XCode, а также Terminal.app для загрузки драйверов. При создании нового проекта, выберете Generic IOKit Driver и XCode создаст для вас пустой проект. Вам остается только добавить код драйвера, откомпилировать его, и загрузить с помощью следующих строк (предполагается, что драйвер называется SampleDriver.kext):

    sudo chmod –R 0755 ./SampleDriver.kext
    sudo chown –R root:wheel ./SampleDriver.kext
    sudo kextload –t ./SampleDriver.kext

    Как видно из вышеприведенных строк: загрузка драйвера выполняется с правами root с помощью сторонней программы kextload (из набора kext utils, который в свою очередь входит в xnu utils). Драйвер, как и любое приложение Mac OS X (за исключением простых консольных приложений), представляет из себя bundle, т.е. директорию в которой хранятся данные, которые непосредственно относятся к драйверу, а именно: Info.plist файл, файл с локализированными строками и конечно же сам бинарный файл драйвера (SampleDriver.kext/Contents/MacOS/SampleDriver). Также драйвер может содержать дополнительные ресурсы (SampleDriver.kext/Contents/Resources), либо другие драйверы (SampleDriver.kext/Contents/PlugIns).

    IOKit в своей концепции активно эксплуатирует две парадигмы ООП: наследование и полиморфизм. Наследование позволяет уменьшить количество использованной ядерной памяти: любой IOKit драйвер, наследует определенный базовый класс, который специфичен для каждого стека устройств в системе. Например для драйверов LAN устройств – это IOEthernetController, WAN устройств – IO80211Controller, звуковых карт – IOAudioDevice и т.д. Механизм виртуальных функций, позволяет драйверу легко переопределить определенные методы базово класса, таким образом реализуя необходимую функциональность.

    Проба пера

    Любой класс в IOKit драйвере должен быть прямо или косвенно унаследован от класса OSObject. Этот класс обеспечивает подсчет ссылок, поддержку псевдо-RTTI за счет макросов и дополнительной метаинформации, примитивы для создания инстанса класса (перегруженный оператор new) в среде IOKit и многое другое. Самый простой IOKit класс выглядит следующим образом:

    Читайте также:  Libreoffice base astra linux

    *.h файл:
    class MyIOKitClass: public OSObject
    <
    OSDeclareDefaultStructors(MyIOKitClass)

    public :
    virtual bool init();

    protected :
    virtual void free()

    private :
    void *fSimpleMember;

    *.cpp файл:
    bool MyIOKitClass::init()
    <
    if (!OSObject::init())
    return false ;

    // TO-DO: Add basic initialization here
    fSimpleMember = NULL;

    return true ;
    >
    void MyIOKitClass::free()
    <
    // TO-DO: Add deinitialization code here
    if (fSimpleMember)
    <
    // .
    >

    OSObject::free();
    >

    Наш класс MyIOKitClass унаследован от класса OSObject, в нем переопределены два метода:

    1. bool init() – данный метод будет вызван тогда, когда будет создан новый инстанс класса. В методе рекомендуется проводить начальную инициализацию полей класса, в общем все то, что вы бы сделали в конструкторе.
    2. void free() – данный метод будет вызван во время того, когда будет вызван последний release для экземпляра класса и его счетчик ссылок будет равен 0. Т.е. роль метода – деструктор класса.

    Также в переопределенных методах необходимо вызывать методы класса-предка, для того, чтобы IOKit выполнял основную часть работы по инициализации/уничтожению инстанса класса за вас.

    От OSObject могут быть унаследованы лишь вспомогательные классы, которые необходимы при реализации более крупной системы. Главный класс драйвера (да и любой другой класс, который претендует на то, чтобы предоставлять операционной системе определенные сервисы) прямо или косвенно наследуется от класса IOService.

    IOService помогает реализовать в вашем драйвере поддержку Plug’n’Play, Power Management (организовывает взаимодействие с Power Domain операционной системы), взаимодействие с IORegistry и другими драйверами системы. Здесь следует также упомянуть про IORegistry – это не что иное, как динамическое дерево устройств Mac OS X. Строить это дерево начинает загрузчик ОС (boot loader), ядро ОС, а также вспомогательные драйвера. К примеру драйвер IOACPIPlatformExpert строит в IORegistry дерево всех PCI устройств в системе, основываясь на информации из ACPI таблиц, а также APIC контроллера прерываний.

    IOService имеет два достаточно полезных метода, которые вам наверняка следует реализовывать в большинстве ваших драйверов:

    1. bool start( IOService *provider ) – данный метод будет вызван во время старта вашего драйвера. Здесь вы можете поместить код, который будет заниматься выделением ресурсов, необходимых драйверу.
    2. void stop( IOService *provider ) – этот метод будет вызван во время останова вашего драйвера.

    В сигнатуре вышеприведенных методов, вы могли заметить параметр provider. И так, что же он значит, и для чего нужен? Все очень просто, как было сказано ранее, в Mac OS X существует динамический список устройств IORegistry. В нем существует связка наб-драйвер. Любой драйвер, может регистрировать в системе свои сервисы и делать их набами (nubs) для любых других драйверов. Итак, наб – это класс, который другой драйвер системы зарегистрировал в IORegistry, и теперь этот наб может быть передан как провайдер в ваш драйвер. К примеру, для драйверов PCI устройств набом является инстанс класса IOPCIDevice. Информация о набе, а также идентификаторы устройства задаются в Info.plist файле драйвера. Следующая секция Info.plist файла иллюстрирует этот прием (данный код был взят из моего сетевого драйвера):

    dict >
    key > Realtek RTL8111B/RTL8168 NIC key >
    dict >
    key > CFBundleIdentifier key >
    string > rtl.r1000.nic.ext string >
    key > IOClass key >
    string > RealtekR1000 string >
    key > IOPCIMatch key >
    string > 0x816910ec 0x816710ec 0x816810ec 0x813610ec string >
    key > IOProbeScore key >
    integer > 500 integer >
    key > IOProviderClass key >
    string > IOPCIDevice string >
    dict >
    dict >

    Опишем наиболее значимые параметры:

    • IOProviderClass – указывает тип наба, который IOKit передаст в метод start нашего драйвера.
    • IOClass – это имя класса нашего драйвера. Если обратится к нашему предыдущему примеру — это MyIOKitClass.
    • CFBundleIdentifier – bundle идентификатор нашего драйвера, проще говоря этот параметр однозначно идентифицирует наш драйвер в системе.
    • IOPCIMatch – список DeviceID-VendorID PCI устройств, которые будет обслуживать наш драйвер. К примеру возьмем 0x816810ec, 0x8168 – это DeviceID нашего сетевого контроллера, 0x10ec – это VendorID, в данном случае Realtek.

    Остальные параметры – тема для еще одной статьи 😉 Примерный же код нашего метода start будет выглядеть так: bool RealtekR1000::start(IOService *provider)
    <
    if (!IOEthernetController::start(pciDev))
    return false ;

    IOPCIDevice *pciDev = NULL;

    pciDev = OSDynamicCast(IOPCIDevice, provider);
    if (!pciDev)
    return false ;

    pciDev->retain();
    pciDev->open( this );

    // Add initialization of device here

    Я надеюсь, что данный код более-менее понятен для вас, добавлю лишь, что OSDynamicCast – это макрос, который заменяет отсутствие RTTI в IOKit за счет использования дополнительной метаинформации.

    Сделаем что-нибудь полезное?

    Все что вам необходимо сделать, чтобы создать свой сетевой драйвер:

    • Создать скелет для драйвера, как было описано выше.
    • Унаследовать класс драйвера от класса IOEthernetController.
    • Переопределить необходимые методы в своем классе (всего около 10-12).
    • Задать необходимые параметры в Info.plist файле.

    И драйвер готов! Как видим, Mac OS X в очередной раз поражает нас изяществом. Здесь нет никаких огромных *.inf файлов, никакой системы минипортов, и прочих неочевидных вещей. Портирование драйвера для сетевого контроллера с Linux в Mac OS X заняло у меня около 7 дней, при том, что я должен был также освоить основы IOKit с нуля.

    На этом этапе я намеряно делаю паузу до следующей статьи, если конечно же кому-то будет интересна данная тематика на хабре. Я опустил такие интересные вещи, как: Power Management, работа с IO портами и DMA, взаимодействие с user space и т.д. Желающим освоить IOKit могу порекомендовать начать с туторила IOKit Fundamentals [3], а заинтересованным – список тем о низкоуровневой разработке, которые им были бы наиболее интересны. Прошу оставлять свои отклики и пожелания 😉

    Источник

    Оцените статью