TL;DR;
# これを別のフォルダに移動させたら解決した
/System/Library/Extensions/Apple_iSight.kext
「ログイン画面常時フリーズ」「内臓カメラが認識しない」、ともに解決
# これもついでに移動しておくと良い
# 名前にThunderboltが入ったkextパッケージ
/System/Library/Extensions/****Thunderbolt**.kext
CatalinaにアップグレードしたMacのスペック
# Yosemite(購入時) => High Sierra(前回) => Catalina(今回)
MacBook Pro (Retina, 13-inch, Mid 2014)
Xcode11を使うためにCatalinaへ
Xcode11.4はCatalinaでないとダメなため
Xcode 11.4 requires a Mac running macOS Catalina 10.15.2 or later.
https://developer.apple.com/documentation/xcode-release-notes/xcode-11_4-release-notes
アップグレードインストールからログイン画面で常にフリーズするまで
- アップデート直後:普通に使えた
- 数日後:カメラがダメになった(slack, hangout, messenger, facetime, 全部ダメ)
- 内臓カメラの原因はそのときは調べず(zoomは別macbookで、しのいでいた)
- 半月後:起動後ログイン画面で常時フリーズ状態
- スリープから復帰せずにフリーズしていたので再起動後はずっとこの状態だった
ハードウェア不具合か調査 => 違った
内臓カメラが認識しない原因もわかってなかったので、物理的にダメなのか調べることに
- MacBook Pro購入も視野にいれつつ調査
- SMCクリア => 効果なし
- macOS復元 => 起動できた
- トラックパッドは動き、ターミナル起動で、キーボードは使えることが判明
- ディスクユーティリティでFirst Aid => 不具合なし
- PRAMクリア => 効果なし
- セーフブート => 起動できた。繰り返しできる。
起動時に読み込まれるソフトウェアが原因
ソフトウェアレベルの不具合として調査
- MacBook Pro購入するのは保留に
- セーフブートと通常起動の違いについて勉強しつつ進めることに
カーネル機能拡張の読み込みで不具合が起こってるらしい。。。
2014-2015年のモデルのMacBookでCatalinaにすると、突如強制終了するという不具合に遭遇する人が結構いることがわかった
- "catalina random shutdown" で検索すると記事・フォーラム投稿が結構ヒットする
その情報を参考に不具合の原因となる .kext
が読み込まれないように移動させた
# この辺の **Thunderbolt**なやつを一掃した
/System/Library/Extensions/AppleThunderboltNHI.kext
/System/Library/Extensions/AppleThunderboltDPAdapters.kext
/System/Library/Extensions/AppleThunderboltEDMService.kext
/System/Library/Extensions/AppleThunderboltIP.kext
/System/Library/Extensions/AppleThunderboltNHI.kext
/System/Library/Extensions/AppleThunderboltPCIAdapters.kext
/System/Library/Extensions/AppleThunderboltUTDM.kext
/System/Library/Extensions/IOThunderboltFamily.kext
/System/Library/Extensions/IOUserEthernet.kext
/System/Library/Extensions/AppleFWAudio.kext
sudo mv
では動かせない
-
/System/Library
や/Library/Extensions
のファイル・ディレクトリは制限がかけられている - 自分は macOS復元(command+r+powerキー)で起動させて、terminal開いて移動させた
ごくわずかに効果あり
-
ログイン画面表示後10-20秒くらいはキーボード、トラックパッドが動く状態に
- 動いてる隙にログインすると数分は使える状態になった
-
これで解決にはならないので、起動時に読み込まれる
.kext
を調べることに -
動作に不要な
.kext
を全て消す(動かす)ことができれば、解決する目処がたった
.kext
ファイルが配置される場所は2つ
/Library/Extensions
/System/Library/Extensions/
Catalinaをクリーンインストールした場合、/Library/Extensions
以下は
ACS6x.kext
ArcMSR.kext
ATTOCelerityFC8.kext
ATTOExpressSASHBA2.kext
ATTOExpressSASRAID2.kext
CalDigitHDProDrv.kext
HighPointIOP.kext
HighPointRR.kext
PromiseSTEX.kext
SoftRAID.kext
となることがわかり(ネットで晒している方がいた)、自分の環境と全く一緒だったので、/System/Library/Extensions/
を調査対象に絞り込んだ
セーフブート時に読み込まれるカーネル機能拡張の一覧を取得し、比較していった
# セーフブート時に読み込まれてる.kextの一覧を取得
kextfind -loaded
# 通常起動時の一覧はわからないので、読み込まれうるkextの一覧をディレクトリから取得
ls -la /System/Library/Extensions/
この2つを比較して、通常起動でのみ読み込まれている.kext
のリストを作成し、1つ1つ消せそうか検索して調べた
# kextfind -loaded 出力例
/System/Library/Extensions/IOSkywalkFamily.kext
/System/Library/Extensions/IOAcceleratorFamily2.kext
/System/Library/Extensions/AppleAPIC.kext
/System/Library/Extensions/KextAudit.kext
/System/Library/Extensions/AppleImage4.kext
/System/Library/Extensions/AppleCredentialManager.kext
/System/Library/Extensions/ALF.kext
/System/Library/Extensions/AppleStorageDrivers.kext/Contents/PlugIns/AppleUSBStorageCoexistentDriver.kext
/System/Library/Extensions/AppleStorageDrivers.kext/Contents/PlugIns/AppleUSBCardReader.kext
/System/Library/Extensions/AppleStorageDrivers.kext/Contents/PlugIns/AppleUSBTDM.kext
/System/Library/Extensions/IOHDIXController.kext
/System/Library/Extensions/TMSafetyNet.kext
/System/Library/Extensions/AppleAHCIPort.kext
/System/Library/Extensions/IOUSBMassStorageDriver.kext
/System/Library/Extensions/IOSerialFamily.kext
/System/Library/Extensions/CoreTrust.kext
/System/Library/Extensions/AppleBacklight.kext
/System/Library/Extensions/Dont Steal Mac OS X.kext
/System/Library/Extensions/HFS.kext
/System/Library/Extensions/AppleHPET.kext
/System/Library/Extensions/IOSMBusFamily.kext
/System/Library/Extensions/AppleMCCSControl.kext
/System/Library/Extensions/IOReportFamily.kext
/System/Library/Extensions/IOBluetoothFamily.kext
/System/Library/Extensions/IOBluetoothFamily.kext/Contents/PlugIns/IOBluetoothHostControllerUSBTransport.kext
/System/Library/Extensions/IOBluetoothFamily.kext/Contents/PlugIns/BroadcomBluetoothHostControllerUSBTransport.kext
/System/Library/Extensions/IOBluetoothFamily.kext/Contents/PlugIns/IOBluetoothHostControllerTransport.kext
/System/Library/Extensions/IOBluetoothFamily.kext/Contents/PlugIns/IOBluetoothUSBDFU.kext
/System/Library/Extensions/IOBluetoothFamily.kext/Contents/PlugIns/IOBluetoothPacketLogger.kext
/System/Library/Extensions/IOSurface.kext
/System/Library/Extensions/AppleSMC.kext
/System/Library/Extensions/autofs.kext
/System/Library/Extensions/AppleMobileFileIntegrity.kext
/System/Library/Extensions/AppleMatch.kext
/System/Library/Extensions/System.kext/PlugIns/IOKit.kext
/System/Library/Extensions/System.kext/PlugIns/Kasan.kext
/System/Library/Extensions/System.kext/PlugIns/BSDKernel.kext
/System/Library/Extensions/System.kext/PlugIns/Libkern.kext
/System/Library/Extensions/System.kext/PlugIns/Mach.kext
/System/Library/Extensions/System.kext/PlugIns/MACFramework.kext
/System/Library/Extensions/System.kext/PlugIns/Unsupported.kext
/System/Library/Extensions/System.kext/PlugIns/Private.kext
/System/Library/Extensions/AppleGraphicsPowerManagement.kext
/System/Library/Extensions/AppleFDEKeyStore.kext
/System/Library/Extensions/AppleBusPowerController.kext
/System/Library/Extensions/AppleSSE.kext
/System/Library/Extensions/AppleKeyStore.kext
/System/Library/Extensions/AppleSEPManager.kext
/System/Library/Extensions/AppleIntelLpssGspi.kext
/System/Library/Extensions/AppleXsanScheme.kext
/System/Library/Extensions/AppleSMBIOS.kext
/System/Library/Extensions/AppleSMBusPCI.kext
/System/Library/Extensions/AppleFSCompressionTypeDataless.kext
/System/Library/Extensions/watchdog.kext
/System/Library/Extensions/AppleUSBMultitouch.kext
/System/Library/Extensions/AppleUSBNetworking.kext
/System/Library/Extensions/IONetworkingFamily.kext
/System/Library/Extensions/IONetworkingFamily.kext/Contents/PlugIns/mDNSOffloadUserClient.kext
/System/Library/Extensions/IOSlaveProcessor.kext
/System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyEventDriver.kext
/System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext
/System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCButtons.kext
/System/Library/Extensions/AppleBacklightExpert.kext
/System/Library/Extensions/IONDRVSupport.kext
/System/Library/Extensions/IOAHCIFamily.kext
/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext
/System/Library/Extensions/IOSCSIArchitectureModelFamily.kext
/System/Library/Extensions/IOSCSIArchitectureModelFamily.kext/Contents/PlugIns/SCSITaskUserClient.kext
/System/Library/Extensions/IOSCSIArchitectureModelFamily.kext/Contents/PlugIns/IOSCSIBlockCommandsDevice.kext
/System/Library/Extensions/IOPlatformPluginFamily.kext
/System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformPlugin.kext
/System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformShim.kext
/System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/IOPlatformPluginLegacy.kext
/System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext
/System/Library/Extensions/IOStorageFamily.kext
/System/Library/Extensions/AppleLPC.kext
/System/Library/Extensions/IOHIDFamily.kext
/System/Library/Extensions/AppleACPIPlatform.kext
/System/Library/Extensions/AppleACPIPlatform.kext/Contents/PlugIns/AppleACPIButtons.kext
/System/Library/Extensions/AppleACPIPlatform.kext/Contents/PlugIns/AppleACPIEC.kext
/System/Library/Extensions/AppleSMBusController.kext
/System/Library/Extensions/AppleSmartBatteryManager.kext
/System/Library/Extensions/corecapture.kext
/System/Library/Extensions/pthread.kext
/System/Library/Extensions/IOUSBFamily.kext
/System/Library/Extensions/CoreAnalyticsFamily.kext
/System/Library/Extensions/AppleUSBCommon.kext
/System/Library/Extensions/KernelRelayHost.kext
/System/Library/Extensions/AppleRTC.kext
/System/Library/Extensions/IOPCIFamily.kext
/System/Library/Extensions/BootCache.kext
/System/Library/Extensions/IO80211Family.kext
/System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortBrcmNIC.kext
/System/Library/Extensions/Libm.kext
/System/Library/Extensions/apfs.kext
/System/Library/Extensions/IOACPIFamily.kext
/System/Library/Extensions/Quarantine.kext
/System/Library/Extensions/AppleGraphicsControl.kext
/System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns/AppleGPUWrangler.kext
/System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns/AGDCBacklightControl.kext
/System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns/AppleGraphicsDeviceControl.kext
/System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns/AppleGraphicsDevicePolicy.kext
/System/Library/Extensions/AppleEffaceableStorage.kext
/System/Library/Extensions/IOUSBHostFamily.kext
/System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBXHCIPCI.kext
/System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBHostPacketFilter.kext
/System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/IOUSBHostHIDDevice.kext
/System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBHostMergeProperties.kext
/System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBHostCompositeDevice.kext
/System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBHub.kext
/System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBXHCI.kext
/System/Library/Extensions/AppleUSBCDC.kext
/System/Library/Extensions/AppleFSCompressionTypeZlib.kext
/System/Library/Extensions/IOUSBMassStorageClass.kext
/System/Library/Extensions/triggers.kext
/System/Library/Extensions/IOGraphicsFamily.kext
/System/Library/Extensions/Sandbox.kext
/System/Library/Extensions/AppleIntelFramebufferAzul.kext
/System/Library/Extensions/corecrypto.kext
/System/Library/Extensions/HFSEncodings.kext
/System/Library/Extensions/AppleEFIRuntime.kext
/System/Library/Extensions/AppleEFIRuntime.kext/Contents/PlugIns/AppleEFINVRAM.kext
/System/Library/Extensions/EndpointSecurity.kext
/System/Library/Extensions/AppleSystemPolicy.kext
/System/Library/Extensions/IOTimeSyncFamily.kext
/System/Library/Extensions/AppleFileSystemDriver.kext
# Apple_iSight.kext
を消すと不具合は直るというフォーラムの投稿をみつけた
2017年のCatalinaが登場する2年以上前の投稿だが、内臓カメラが認識しない不具合への対応策として投稿されていた
I always just deleted “Apple_iSight.kext” and that worked for me. I am contemplating just unplugging the cable from the logic board though. It looks pretty easy.
https://osxdaily.com/2017/03/01/disable-mac-camera-completely/
内臓カメラが認識しない不具合は自分も同じで、情報は3年以上前のものだが、消しても問題ない.kext
だと判断して、読み込まれないようにした
その結果解決した
(解決したので実施しなかったが)実施を予定していたこと
Xcode11利用は必須だったのでダウングレードは選択肢になかった
- Catalina クリーンインストール
- データ吸い出しが面倒(セーフブートではUSB接続されたメディア、SDが認識しないため)ので先送りにしていた
- Big Surへのアップデート
- カーネル機能拡張という仕組みはCatalinaでdeprecated宣言され、DriverKitという新しい仕組みに移行するため、今回の不具合の原因である
.kext
読み込み自体がBig Surではなくなるため
- カーネル機能拡張という仕組みはCatalinaでdeprecated宣言され、DriverKitという新しい仕組みに移行するため、今回の不具合の原因である