es/Configuracion/es.KernelAndKextPatches

  • Search
  • Home
  • All
  • Files
  • New
  • Rename
  • Edit
  • History
  • Latest Changes

Navegación
Portada
Preguntas Frecuentes
Tabla de Contenidos Estructura de config.plist

Idiomas
English
French
Русский
简体中文
한국어
日本語

KernelAndKextPatches

Configuracion / KernelAndKextPatches

<key>KernelAndKextPatches</key>
<dict>
...
</dict>

Este grupo de parámetros habilita el parchado de kexts y kernels al vuelo.

Requerimientos: arrancar con kernel cache o con el argumento NoCache.
Si por cualquier motivo la cache no se localiza, el parchado se desactivará.

Table of Contents
  • KernelAndKextPatches
    • Debug
    • KernelToPatch
    • KernelCpu
    • FakeCPUID
    • AsusAICPUPM
    • KernelPm
    • AppleRTC
    • KernelLapic
    • KernelHaswellE
    • KextsToPatch
    • ForceKextsToLoad
    • ATIConnectorsController

Debug

<key>Debug</key>
<true/>

Activa la impresión detallada del proceso de parchado. Útil para la detección de errores.

KernelToPatch

<key>KernelToPatch</key>
<array>

Permite añadir parches personalizados al kernel (Clover ya incluye algunos embebidos, como KernelHaswellE) y filtrarlos según la versión del SO.

Ejemplo:

<key>KernelToPatch</key>
<array>
  <dict>
    <key>Comment</key>
    <string>startupExt 10.12 DP2</string>
    <key>Disabled</key>
    <false/>
    <key>Find</key>
    <data>
    6CUAAADrBeh+BQAA
    </data>
    <key>MatchOS</key>
    <string>10.12</string>
    <key>Replace</key>
    <data>
    6CUAAACQkOh+BQAA
    </data>
  </dict>
  <dict>
    <key>Comment</key>
    <string>rootlessKext 10.12</string>
    <key>Disabled</key>
    <false/>
    <key>Find</key>
    <data>
    w0iF23RxSIsDSInf/1AoSA==
    </data>
    <key>Replace</key>
    <data>
    w0iF2+sSSIsDSInf/1AoSA==
    </data>
    <key>Count</key>
    <integer>1</integer>
  </dict>
</array>
La explicación de cada clave es similar a las de KextsToPatch.

KernelCpu

<key>KernelCpu</key>
<true/>

Elimina kernel panics relacionados con CPUs no soportados, como Yonah, Atom o Haswell con versiones viejas de OSX. Sin embargo el kernel puede poseer otros algoritmos que no funcionarán correctamente en CPUs no soportados. Este parche no soluciona esos problemas. Es altamente improbable que este parche funcione con Pentium M, Pentium 4 o AMD. En esos casos se recomienda el uso de kernels especiales parchados para dichos CPUs.

FakeCPUID

<key>FakeCPUID</key>
<string>0x010676</string>

Fake CPUID fue desarrollado para reemplazar el parche Kernel CPU. Influye al kernel al igual que al kext AppleCPUPowerManagement.

Si quiere instalar OSX con un CPU no soportado necesitará falsificar su ID para evitar un kernel panic al inicio. Por ejemplo, es particularmente útil para usar OSX con un CPU Atom, o 10.7.2 con un CPU IvyBridge.

En estos casos Clover le permite definir el FakeCPUID en el config.plist o incluso a través de la interfaz del mismo, dentro del sub-menu Configuración > Binaries Patching.

La siguiente tabla lista los ID de CPU soportados por las distintas versiones de OS X:

FakeCPUID Table

AsusAICPUPM

<key>AsusAICPUPM</key>
<true/>

Algunos fabricantes, como ASUS, limitan a solo lectura el registro MSR 0xE2 en el módulo de manejo de energía. En sistemas Sandy/Ivy Bridge el kext AppleIntelCpuPowerManagement intenta escribir en este registro, causando un kernel panic. Este parche elimina la operación de escritura del kext.

KernelPm

<key>KernelAndKextPatches</key>
<dict>
   <key>KernelPm</key>
   <true/>
</dict>

Parche del kernel para habilitar el manejo de energia en sistemas Haswell con msrs bloqueados. Funciona en kernels 10.8.5 y 10.9.

AppleRTC

<key>AppleRTC</key>
<true/>

OS X presenta problemas de compatibilidad con el CMOS de BIOS resultando en su reinicialización (reset) al salir de cada reposo y reinicio, provocando la pérdida de la configuración del BIOS. Las placas madre mas afectadas por este problema son Gigabyte. Usualmente puede ser solucionado parchando el Device(RTC) en el DSDT. Si este método no funciona, el kext mismo puede ser parchado habilitando esta función.

KernelLapic

<key>KernelLapic</key>
<false/>

Portátiles de HP presentan problemas de lapic, que pueden ser solucionados normalmente usando el parámetro de arranque cpus=1 o habilitando esta función.

KernelHaswellE

<key>KernelHaswellE</key>
<false/>

CPUs Haswell-E actualmente no son soportados por el kernel de OS X (al menos hasta 10.10.2). Este parche elimina el bloqueo por verificación de compatibilidad. Tenga en cuenta que esto no habilita el manejo de energía (Power Management) u otra funciones similares.

KextsToPatch

<key>KextsToPatch</key>
<array>

Además de los parches incluidos, puedes crear tus propios proporcionando la siguiente información: nombre del binario, datos a localizar y datos de reemplazo - ambos en formato hexadecimal.

  • El ejemplo siguiente muestra el parchado de VoodooHDA reemplazando la cadena Headphones por Telephones:
<key>KextsToPatch</key>
<array>
<dict>
    <key>Name</key>
    <string>VoodooHDA</string>
    <key>Disabled</key>
    <false/>
    <key>Find</key>
    <data>SGVhZHBob25lcwA=</data>
    <key>Replace</key>
    <data>VGVsZXBob25lcwA=</data>
    <key>MachOS</key>
    <data>10.11.6,10.12</data>
    <key>Count</key>
    <integer>1</integer>
</dict>
</array>
  • Name: Nombre del kext a parchar.
  • Find: Datos a buscar.
  • Replace: Datos de reemplazo.
  • MachOS: Permite filtrar parches según la versión de macOS detectada. Puede especificar versiones generales como 10.9 que incluirá 10.9.1, 10.9.2, etc. Si se especifica una sub-versión como 10.11.6 solo se aplicará a esta. Si la clave no esta presente se aplica el parche a todo OS y si existe pero esta vacía se desactiva el parche.
  • Count: Permite especificar la cantidad de veces que se debe localizar el dato de Find (si no coincide, no se aplica el parche). Solía utilizarse para filtrar versiones del kext pero con la existencia de MachOS perdió su utilidad.
  • Disabled: <true/> deshabilita el parche.

Nota: La longitud de los datos debe ser idéntica y en caso que los datos de reemplazo sean de menor longitud que los originales, puede completar el parche con ceros. Además se deben codificar como base64 debido a que el campo es del tipo data.

Algunos parches comunes:

  • Función TRIM para SSDs no-Apple:
    <dict>
        <key>Name</key>
        <string>IOAHCIBlockStorage</string>
        <key>Find</key>
        <data>QVBQTEUgU1NEAA==</data>                       
        <key>Replace</key>
        <data>AAAAAAAAAAAAAA==</data>
    </dict>
  • Define los discos externos como internos para solucionar el problema de iconos amarillos con discos internos:

    <dict>
        <key>Name</key>
        <string>AppleAHCIPort</string>
        <key>Find</key>
        <data>RXh0ZXJuYWw=</data>
        <key>Replace</key>
        <data>SW50ZXJuYWw=</data>
    </dict>
  • Permite el arranque con el SMBIOS de una MacPro4,1 o MacPro5,1 desactivando la detección de memoria ECC:
    <dict>
        <key>Name</key>
        <string>AppleTyMCEDriver</string>
        <key>Find</key>
        <data>cgoATWFjUHJvNCwxAE1hY1BybzUsMQBY</data>
        <key>Replace</key>
        <data>cgoAAAAAAAAAAAAAAAAAAAAAAAAAAABY</data>
    </dict>

A veces el parchado de kexts requiere la modificación del archivo Info.plist del mismo. En esos casos la sintaxis es la siguiente:

<dict>
    <key>Name</key>
    <string>AppleHDAController</string>
    <key>Comment</key>
    <string>parche para no cargar el kext</string>
    <key>InfoPlistPatch</key>
    <true/>
    <key>Find</key>
    <string>0x04020000</string>
    <key>Replace</key>
    <string>0x44220000</string>
</dict>

Nota: el parchado se realiza solamente en la cache. Si parchea un Info.plist para permitir la carga de un kext, entonces el mismo no se encontrará en la cache, inutilizando el parche. En esos casos es necesario reiniciar dos veces, la primera vez Sin Caches para permitir que FSInject cargue el kext, y la segunda vez para el parchado del kext ahora sí incluido en la cache.

ForceKextsToLoad

<key>ForceKextsToLoad</key>
<array>
  <string>\System\Library\Extensions\AppleHDA.kext</string>
  <string>\Extra\Extensions</string>
</array>

Forzar la carga de kexts (y plugins) del sistema OS X a iniciar para que pueda ser parchado. También acepta directorios, que provocará la inyección forzada de todo kext contenido en el mismo.

ATIConnectorsController

<key>ATIConnectorsController</key>
<string>6000</string>

Para el funcionamiento integral de placas de video AMD, el inyectado de las propiedades en el registro puede no ser suficiente. Adicionalmente puede ser necesaria la modificación de los conectores en el archivo binario del controlador correspondiente a la video. El siguiente ejemplo refiere al controlador de las placas de video Radeon 6000 series:

<key>ATIConnectorsData</key>
<string>000400000403000000010000210302040400000014020000000100000000 040310000000100000000001000000000001</string>
<key>ATIConnectorsPatch</key>
<string>040000001402000000010000000004040004000004030000000100001102 010500000000000000000000000000000000</string>

Este método funciona en sistemas Mac OS X 10.7 o posteriores.

Mas información en el post de bcc9 en InsanelyMac.

Clover en SourceForge - Clover en InsanelyMac Español - Clover en InsanelyMac Ingles

Last edited by Maniac10 (Maniac10), 2016-07-17 16:04:04

Delete this Page