Como faço para desinstalar e remover um .kext no Mac OS X?

32

Comprei um leitor de cartão de mídia X-in-1 e tive que instalar um driver para poder ler os cartões SD-HC. Agora, às vezes, quando desconecto o leitor da porta USB, fico com o pânico do kernel.

Então agora eu gostaria de remover esta extensão do kernel, mas o instalador do driver não me dá essa opção.

Como posso desinstalar uma extensão do kernel (.kext) do meu Mac OS X 10.5?

Marc
fonte

Respostas:

32

Se você não souber o nome do arquivo .kext, poderá descobrir usando um plug-in QuickLook como Suspicious Package, se o instalador for um pacote padrão (.pkg ou .mpkg) aberto no Installer.app.

Se não for um pacote, você poderá descobrir o nome do kext no kernel panic: Você pode encontrar essas informações em ~/Library/Logs/panic.logou quando reiniciar o computador após o pânico, perguntando se você deseja relatar o erro à Apple. Pressione Relatório e clique na guia central para ver os detalhes da falha.

Um exemplo seria:

panic(cpu 0 caller 0x0035C330): freeing free mbuf
Backtrace, Format - Frame : Return Address (4 potential args on stack) 
0x2545bc08 : 0x128d08 (0x3c9afc 0x2545bc2c 0x131de5 0x0) 
0x2545bc48 : 0x35c330 (0x3ea258 0x3ae65000 0x23935100 0x493e0) 
0x2545bc88 : 0x7424a4 (0x36f19300 0x493e0 0x0 0x134b11) 
0x2545bca8 : 0x9f1458 (0x23935000 0x36f19300 0x0 0x0) 
0x2545bcd8 : 0x9ef6d6 (0x23935000 0x36f19300 0x0 0x0) 
0x2545bcf8 : 0x9fa0ce (0x23935000 0x36f15f00 0x1000000 0x0) 
0x2545bea8 : 0x9f375a (0x23935000 0x3a14880 0x40000000 0x34fb8b) 
0x2545bf08 : 0x398f79 (0x23935000 0x3a14880 0x1 0x13becf) 
0x2545bf58 : 0x39814b (0x3a14880 0x4121d48 0x4121d8c 0x0) 
0x2545bf88 : 0x397e81 (0x3a184c0 0x5d3734 0x452084 0x40431f4) 
0x2545bfc8 : 0x19a77c (0x3a184c0 0x0 0x19d0b5 0x696543c) Backtrace terminated-invalid frame pointer 0x0  

Kernel loadable modules in backtrace (with dependencies):
com.apple.iokit.AppleYukon(1.0.9b3)@0x9ed000  

dependency: com.apple.iokit.IONetworkingFamily(1.5.1)@0x73b000
dependency: com.apple.iokit.IOPCIFamily(2.2)@0x60a000
dependency: com.apple.iokit.IOACPIFamily(1.2.0)@0x6b6000
com.apple.iokit.IONetworkingFamily(1.5.1)@0x73b000

Kernel version:
Darwin Kernel Version 8.8.2: Thu Sep 28 20:43:26 PDT 2006; root:xnu-792.14.14.obj~1/RELEASE_I386

Eu coloquei as linhas relativas separadas. Especificamente, você está procurando a primeira linha após "Módulos carregáveis ​​do kernel ...". Nesse caso, o item é com.apple.iokit.AppleYukon (que é a extensão do driver / kernel Ethernet), portanto o nome do arquivo seria com.apple.iokit.AppleYukon.kext .

Antes de prosseguir para a próxima etapa, tenha 110% de certeza de que possui a extensão correta do kernel. Desativar a extensão errada do kernel pode tornar a vida realmente difícil - por exemplo. Os dispositivos USB não funcionarão até que sejam reativados.

Finalmente, para descarregá-lo:

sudo kextunload /System/Library/Extensions/NAME_OF_THE_KEXT_FILE.kext

Chealion
fonte
Agradecemos sua resposta detalhada e agradecemos a todos pela ajuda.
Marc
3
kextunloading não é permanente. Portanto, 110% é um pouco excessivo. Você pode apenas reiniciar ...
Alec Jacobson
6

Você precisa usar o comando kextunload. Pode ser necessário usar o sudo se ele foi instalado como um kext para todo o sistema (e não para um usuário individual).

Você também pode excluir o pacote kext diretamente e reiniciar.

Matthew Schinckel
fonte
1
+1. O kextunload retornou um erro, mas a exclusão do .kext resolveu diretamente o meu problema, obrigado.
gary
2

Dê uma olhada no Pacote suspeito , é um plug-in de visualização rápida que permite ver o que um arquivo .pkg (supondo que seja o instalador) fará com o sistema, geralmente é fácil remover o que foi instalado.

cobbal
fonte
1

Primeiro, tente descarregar o arquivo kext. Você pode ver quais arquivos kext são carregados com o Kext Wizard 3.7.11 na guia "Carregado":
sudo kextunload /System/Library/Extensions/NAME_OF_THE_KEXT_FILE.kext

Em seguida, remova a pasta kext para não carregar automaticamente na próxima inicialização:
sudo rm -r /System/Library/Extensions/NAME_OF_THE_KEXT_FILE.kext

Qualquer NAME_OF_THE_KEXT_FILE.kextum não é um arquivo, é uma pasta.

Smeterlink
fonte