После попытки переместить некоторые расширения ядра установщик завершает работу со сбоем: «IOCDStorageFamily.kext не является подлинным; отсутствует в предварительно связанном ядре».

После попытки переместить некоторые расширения ядра установщик завершает работу со сбоем: «IOCDStorageFamily.kext не является подлинным; отсутствует в предварительно связанном ядре».

У меня проблема, похожая на другие на этом StackExchange, но я считаю, что моя основная причина и необходимое решение отличаются. Вот моя проблема:

Всякий раз, когда я пытаюсь установить некоторые программы, включая XCode и драйверы для оборудования, установка завершается неудачей. Журнал установщика содержит следующую ошибку:

NSLocalizedDescription=An error occurred while updating system extension information., arguments=(
        "-update-volume",
        "/",
        "-Installer"
    )} {
        NSLocalizedDescription = "An error occurred while updating system extension information.";
        NSUnderlyingError = "Error Domain=kextcache Code=71 \"The operation couldn\U2019t be completed. (kextcache error 71.)\"";
        arguments =     (
            "-update-volume",
            "/",
            "-Installer"
        );
    }

Много другой людисталкивались с этой проблемой, и в их случаях проблема заключалась в том, что у них было стороннее расширение ядра, которое вызывало проблемы. Их решением было попытаться удалить расширения ядра, пока проблема не исчезнет.

Однако, в отличие от этих людей, я думаю, что причина моих проблем в том, что я переместил некоторые расширения ядра, которые были предустановлены Apple, а не в том, что я установил расширения ядра, которые вызывают проблемы. В частности, некоторое время назад я хотел отключить CD-привод моей машины, не извлекая его физически, поэтому я последовал совету отэтот ответ, в котором говорится:

Хорошо, если вы хотите полностью отключить superdrive, не играя с родительским контролем, вы можете сделать это, выгрузив файл kext. Просто перейдите в /System/Library/Extensionsпапку и найдите IODVDStorageFamily.kextфайл. Переместите этот файл в любое другое место или создайте там новую папку, поместите его туда и перезагрузите. Вы больше не увидите superdrive в ваших подключенных устройствах.

Чтобы снова использовать superdrive, вам нужно снова поместить этот файл в то же место и вставить USB-накопитель, чтобы OSX начала поиск подключенных устройств и нашла ваш superdrive. Сделайте резервную копию вашего файла kext должным образом и не удаляйте его.

Соответственно, я попытался переместить IODVDStorageFamily.kextи IOCDStorageFamily.kextв другое место на моем компьютере. После перемещения у меня возникли проблемы с запуском установщика.

С тех пор я переместил файлы обратно в их исходные места. Я также запустил sudo chown root:wheel IOCDStorageFamily.kext/и , sudo chown root:wheel IODVDStorageFamily.kext/чтобы убедиться, что их разрешения на файлы установлены правильно. Теперь в журналах установщика я получаю следующие ошибки:

Sep 17 16:04:02 pcp257716pcs.unl.edu installd[1062]: kextcache: IODVDStorageFamily.kext has incorrect permissions; omitting.
Sep 17 16:04:02 pcp257716pcs.unl.edu installd[1062]: kextcache: IOCDStorageFamily.kext has incorrect permissions; omitting.
(snip)
Sep 17 16:04:12 pcp257716pcs.unl.edu installd[1062]: kextcache: /System/Library/Extensions/IOCDStorageFamily.kext is not authentic; omitting from prelinked kernel.
Sep 17 16:04:12 pcp257716pcs.unl.edu installd[1062]: kextcache: /System/Library/Extensions/IODVDStorageFamily.kext is not authentic; omitting from prelinked kernel.
Sep 17 16:04:14 pcp257716pcs.unl.edu installd[1062]: kextcache: Can't use IODVDStorageFamily.kext - not linked.
(snip)
Sep 17 16:04:14 pcp257716pcs.unl.edu installd[1062]: kextcache: Can't use IODVDStorageFamily.kext - not linked.
(snip)

Мне кажется, что с тех пор, как я переместил и коснулся IOCDStorageFamily.kextи IODVDStorageFamily.kextпару раз, моя машина больше не доверяет этим файлам. Как мне решить эту проблему? Есть ли способ убедить мою машину, что файлы «подлинные», или получить и установить «подлинные» копии этих файлов?


Вот еще некоторая информация из файла журнала моего установщика:

Sep 17 16:03:50 pcp257716pcs.unl.edu installd[1062]: PackageKit: kextcache -system-caches
Sep 17 16:03:50 pcp257716pcs.unl.edu installd[1062]: kextcache: /usr/sbin/kextcache -system-caches
Sep 17 16:03:53 pcp257716pcs.unl.edu installd[1062]: PackageKit: kextcache -update-volume / -Installer
Sep 17 16:03:53 pcp257716pcs.unl.edu installd[1062]: kextcache: /usr/sbin/kextcache -update-volume / -Installer
Sep 17 16:03:53 pcp257716pcs.unl.edu installd[1062]: kextcache: kextcache -arch x86_64 -local-root -all-loaded -kernel /System/Library/Kernels/kernel -prelinked-kernel /System/Library/Caches/com.apple.kext.caches/Startup/kernelcache -volume-root / /System/Library/Extensions /Library/Extensions
Sep 17 16:03:57 pcp257716pcs.unl.edu installd[1062]: kextcache: SRXDisplayCard.kext has invalid signature; omitting.
Sep 17 16:03:57 pcp257716pcs.unl.edu installd[1062]: kextcache: kext file:///System/Library/Extensions/Soundflower.kext/ is in hash exception list, allowing to load
Sep 17 16:03:58 pcp257716pcs.unl.edu installd[1062]: kextcache: kext file:///System/Library/Extensions/ProcasterAudioRedirector.kext/ is in hash exception list, allowing to load
Sep 17 16:03:58 pcp257716pcs.unl.edu installd[1062]: kextcache: kext file:///System/Library/Extensions/JMicronATA.kext/ is in hash exception list, allowing to load
Sep 17 16:04:02 pcp257716pcs.unl.edu installd[1062]: kextcache: IODVDStorageFamily.kext has incorrect permissions; omitting.
Sep 17 16:04:02 pcp257716pcs.unl.edu installd[1062]: kextcache: IOCDStorageFamily.kext has incorrect permissions; omitting.
Sep 17 16:04:07 pcp257716pcs.unl.edu installd[1062]: kextcache: AppleMobileDevice.kext has invalid signature; omitting.
Sep 17 16:04:12 pcp257716pcs.unl.edu installd[1062]: kextcache: /System/Library/Extensions/IOCDStorageFamily.kext is not authentic; omitting from prelinked kernel.
Sep 17 16:04:12 pcp257716pcs.unl.edu installd[1062]: kextcache: /System/Library/Extensions/IODVDStorageFamily.kext is not authentic; omitting from prelinked kernel.
Sep 17 16:04:14 pcp257716pcs.unl.edu installd[1062]: kextcache: Can't use IODVDStorageFamily.kext - not linked.
Sep 17 16:04:14 pcp257716pcs.unl.edu installd[1062]: kextcache: Prelink failed for com.apple.iokit.IOBDStorageFamily; omitting from prelinked kernel.
Sep 17 16:04:14 pcp257716pcs.unl.edu installd[1062]: kextcache: Can't use IODVDStorageFamily.kext - not linked.
Sep 17 16:04:14 pcp257716pcs.unl.edu installd[1062]: kextcache: Prelink failed for com.apple.iokit.IOSCSIMultimediaCommandsDevice; omitting from prelinked kernel.
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: kextcache: Can't use IOSCSIMultimediaCommandsDevice.kext - not linked.
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: kextcache: Prelink failed for com.apple.driver.PioneerSuperDrive; omitting from prelinked kernel.
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: kextcache: Can't use IOSCSIMultimediaCommandsDevice.kext - not linked.
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: kextcache: Prelink failed for com.apple.driver.MKE_SR_8171; aborting prelink.
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: kextcache: Failed to generate prelinked kernel.
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: kextcache: Child process /usr/sbin/kextcache[3232] exited with status 71.
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: kextcache: Error 107 rebuilding /System/Library/Caches/com.apple.kext.caches/Startup/kernelcache
Sep 17 16:04:17 pcp257716pcs.unl.edu install_monitor[3217]: Re-included: /Applications, /Developer, /Library, /System, /bin, /private, /sbin, /usr
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: PackageKit: releasing backupd
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: PackageKit: allow user idle system sleep
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: PackageKit: Install Failed: Error Domain=PKInstallErrorDomain Code=121 "An error occurred while updating system extension information." UserInfo=0x7fad64c06840 {NSUnderlyingError=0x7fad64c06810 "The operation couldn’t be completed. (kextcache error 71.)", NSLocalizedDescription=An error occurred while updating system extension information., arguments=(
        "-update-volume",
        "/",
        "-Installer"
    )} {
        NSLocalizedDescription = "An error occurred while updating system extension information.";
        NSUnderlyingError = "Error Domain=kextcache Code=71 \"The operation couldn\U2019t be completed. (kextcache error 71.)\"";
        arguments =     (
            "-update-volume",
            "/",
            "-Installer"
        );
    }

решение1

Запустите Дисковые утилиты и используйте параметры «Проверка прав доступа к диску» и «Восстановление прав доступа к диску».

введите описание изображения здесь

После этого расширения ядра будут настроены правильно, и вы сможете установить свои программы и драйверы.


Помните, один из шагов, которые я выполнил в своем вопросе, был: я взял расширения ядра, которые я удалил, /System/Library/Extensionsи поместил их обратно в это место. Если вы сами переместили расширения ядра, убедитесь, что вы вернули их обратно, прежде чем восстанавливать права доступа к диску.

Если вы окончательно удалили расширения ядра, вам может потребоваться скопировать оригинальные расширения ядра из раздела Recovery HD. Подробнее см. в этом ответе:https://apple.stackexchange.com/a/43019/43284.

Связанный контент