Как узнать, готовы ли мои расширения ядра к 64-битной версии?

Есть ли простой способ узнать, «выживут» ли все мои расширения ядра при загрузке с 64-битным ядром? Я, конечно, могу попробовать «6-4-пальцевую загрузку», но, возможно, есть аппаратное обеспечение, которое я использую нечасто, и оно не будет работать, когда я использую его через месяц, оставляя меня гадать, что пошло не так.

Я вижу список расширений в System Profiler> Software> Extensions, причем 8 из них указаны не как «64-разрядные (Intel)», но 5 из них являются «псевдорасширениями» с адресом загрузки, «встроенным в ядро». ", а 3 других связаны с CHUD и, вероятно, исчезнут, как только я обновлю Xcode? Достаточно ли этого, чтобы сделать вывод, что у меня не будет проблем? Или есть расширения, которые сейчас не грузятся и которые можно как-то протестировать?

Ответы (4)

Насколько мне известно, System Profiler не будет отображать информацию о любых загружаемых файлах .kext, которые находятся где-то еще, кроме папки /System/Library/Extensions/.

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

Откройте приложение «Терминал» (в папке /Applications/Utilities/), введите в командной строке следующее и нажмите «Ввод»:

 kextstat

Вы получите большой список всех загруженных расширений ядра. В первую очередь вам нужно сосредоточиться на идентификаторах пакетов загруженных .kexts. (Это обратная строка доменного имени, такая как «com.apple....»). Вы должны быть в состоянии исключить те, которые включают «com.apple», так как они будут принадлежать Apple и должны иметь версию K64. После того, как вы избавитесь от них, вам нужно будет просмотреть оставшиеся, чтобы убедиться, что они построены как универсальные версии K32 + K64, или вам может потребоваться убедиться, что у вас есть последние обновления.

Например, после исключения всех кекстов Apple на выходе, который я получаю, у меня есть следующие перечисленные кексты. Поскольку я перешел на K64 год назад или около того, все в порядке, так что все в порядке.

MacPro:~ mdouma46$ kextstat
Index Refs Address          Size   Wired  Name (Version) <Linked Against>
73  0 0xffffff7f8111a000 0x8000 0x8000  com.AmbrosiaSW.AudioSupport (3.2) <72 5 4 3 1>
81  0 0xffffff7f811bf000 0x9000 0x9000  jp.plentycom.driver.SteerMouse (4.0.2) <55 29 24 5 4 3>
105 0 0xffffff7f81499000 0x5000 0x5000  com.Cycling74.driver.Soundflower (1.5.2) <72 5 4 3>
115 0 0xffffff7f814bf000 0xd1000 0xd1000 com.vmware.kext.vmx86 (3.1.2) <7 5 4 3 1>
116 0 0xffffff7f81590000 0xc000 0xc000   com.vmware.kext.vmci (3.1.2) <5 4 3 1>
117 0 0xffffff7f8159c000 0x7000 0x7000  com.vmware.kext.vmioplug (3.1.2) <29 24 5 4 3 1>
118 0 0xffffff7f815a3000 0xa000 0xa000  com.vmware.kext.vmnet (3.1.2) <5 4 3 1>
119 0 0xffffff7f815ad000 0x2000 0x2000  com.nvidia.CUDA (1.1.0) <4 1>
Спасибо, я не знал, что список System Profiler включает не все расширения. Что мне делать, чтобы найти расположение пакетов .kextна диске? Есть некоторые, которые я все еще ищу, и идентификатор пакета не всегда является именем файла. И включает ли этот список только загруженные в данный момент расширения или также и те, которые могут быть загружены по запросу? Это последняя группа, о которой я больше всего беспокоюсь, поскольку они могут понадобиться в будущем и не будут отображаться как ошибка сейчас.

kextfind

Утилита kextfindнаходит и печатает информацию или создает отчеты о расширениях ядра (KEXT).

Примеры

Следующая команда ищет /System/Library/ExtensionsKEXT, которые не включают архитектуру x86_64:

kextfind -not -arch x86_64

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

kextfind -f /Library/Extensions -e -not -arch x86_64

Другие каталоги

KEXT также можно установить в ПЗУ или внутри пакета приложений , но kextfind не может выполнять рекурсивный поиск.

В эпоху Леопарда было предположение , что в этом районе можно найти KEXT /Library/StartupItems. Поскольку SystemStarter устарел , может быть разумно опустить эту область при использовании kextfind.

Страницы руководства

Пользователи OS X могут просматривать текущую справочную страницу в Терминале. В веб-браузере перейдите по адресу:

  • x-man-page://8/kextfind

В библиотеке разработчиков Mac OS X версия страницы 2009 года устарела.

Спасибо

Ghoppe за повышение осведомленности о kextfind .

Используйте fileкоманду.

Пример:

$ cd /System/Library/Extensions/KeyspanUSAdriver.kext/Contents/MacOS
$ file KeyspanUSAdriver 
KeyspanUSAdriver: Mach-O universal binary with 2 architectures
KeyspanUSAdriver (for architecture x86_64): Mach-O 64-bit kext bundle x86_64
KeyspanUSAdriver (for architecture i386):   Mach-O object i386

Обратите внимание, что у него есть архитектуры x86_64 и i386.

Спасибо, но можете ли вы сделать ссылку с ответом NSGod? Если у меня есть список загруженных расширений ядра из kextstat, как мне узнать, где они находятся на диске? И знаете ли вы, как я могу найти «расширения ядра, которые могут быть загружены ОС, но в настоящее время не загружаются»?
  1. Запустить профилировщик системы
  2. В разделе «Программное обеспечение» нажмите «Расширения».
  3. Обратите внимание на столбец 64-бит в списке справа.

Примечание. Если вы не видите этот элемент, перейдите в меню «Вид» и убедитесь, что выбран «Полный профиль».

Спасибо, но я уже это сделал (возможно, мой вопрос был не ясен). NSGod указал, что это не полный список загружаемых расширений, и действительно, я нашел расширения от Ambrosia и Parallels его методом, которых не увидел в списке System Profiler.