Trabajando con las extensiones de Kernel en OS X 10.10 Yosemite

Una de las características que Apple ha introducido en OS X 10.10 Yosemite es el firmado de las extensiones de Kernel. Las extensiones de Kernel permiten, entre otras cosas, utilizar hardware de terceras partes como tarjetas de sonido, tarjetas de comunicaciones pero también ampliar las capacidades de acceso de software al sistema permitiendo modificar su comportamiento para realizar diferentes tareas. Un ejemplo clásico de estas extensiones es Trim Enabler, que permite activar la gestión de Trim en discos SSD que no pertenecen a Apple.

El firmado de las extensiones de Kernel está diseñado como medida de seguridad, para evitar que un programa malicioso instale una extensión a nivel del sistema y pueda obtener datos o controlar el ordenador. Sin embargo, esta medida de seguridad impide la utilización de software legítimo que podría funcionar pero que no tiene sus extensiones firmadas. Un caso muy habitual es el de las tarjetas de sonido especializadas cuyos fabricantes no han actualizado sus drivers y lo que es peor, no tienen intención de hacerlo. Al instalar estos drivers en Yosemite pueden ocurrir dos cosas: que el sistema arranque pero no se cargue la extensión y por lo tanto, no se pueda utilizar la tarjeta o lo que es peor, medio del arranque de Yosemite te salga un símbolo de prohibido y se interrumpa el arranque (y entres en pánico).

¿Cuál es el siguiente paso lógico si quieres instalar un driver con extensiones de Kernel no firmadas (pero de confianza) en Yosemite? Desactivar esa protección, una tarea sencilla que sin embargo puede causarte problemas si no te has preparado convenientemente para desactivarla si se vuelve a activar.

La desactivación de la protección se realiza pasando un argumento a la NVRAM, una porción de memoria que se lee al arrancar tu Mac y que almacena una serie de parámetros que se utilizan durante el arranque. El problema es que una de las tareas de mantenimiento más comunes a la hora de solucionar incidencias en el Mac es reiniciar los valores de esta porción de memoria a los parámetros por defecto y entre los parámetros por defecto se encuentra la activación de esta protección de extensiones de Kernel con lo que te puedes encontrar con que el sistema no arranca (el signo de prohibido) y la situación puede complicarse bastante sobre todo si no tienes un buen nivel técnico para salir del atolladero.

Pero vamos paso a paso.

Para desactivar la protección de las extensiones de Kernel, es necesario que abras el Terminal, que está en Aplicaciones > Utilidades e introduzcas el siguiente comando:

sudo nvram boot-args=“kext-dev-mode=1

La sintaxis del comando está bastante clara ya que el valor que define si esta protección está activada sé define en el 1 o el 0 al final del argumento.

Una vez introducido el comando, solo hay que reiniciar el ordenador (ya que es un parámetro para la nvram y solo se leerá durante el inicio) y se desactivará la protección, lo que te permitirá, ahora sí, hacer la instalación de ese driver de tarjeta de sonido, vídeo, etc. Evidentemente eso no garantiza que la tarjeta vaya a funcionar porque simplemente el driver puede ser incompatible, pero eso ya es otro problema.

En el caso de algunas aplicaciones o scripts, esta tarea se realiza directamente desde la aplicación de forma que no tienes que dar ese paso previos: ejemplos claros son Trim Enabler para Yosemite o el script que permite acceder a Handoff en Macs compatibles (pero no activados por Apple) del que hablamos en un artículo anterior. En el caso de Trim Enabler es muy importante desactivar esta aplicación antes de reiniciar la nvram o nos encontraremos que el sistema se niega a arrancar (signo de prohibido)

Ahora vamos a comprobar, por cierto, el estado de la nvram para saber si esta protección se ha activado o no, paso imprescindible antes de hacer ninguna instalación. Abre el Terminal y teclea:

nvram  -p 

 Que se utiliza para imprimir en pantalla los valores de la nvram por lo que verás al final de todo el texto una cadena que te indicará si está activada o no: si pone 0 (o no te sale la línea correspondiente) es que la protección está activada y por lo tanto no puedes instalar y si pone 1 es que está desactivada y por lo tanto, puedes instalar.

Realmente este comando está destinado a los desarrolladores, ya que les permite desactivar esta protección para que puedan probar versiones de sus aplicaciones que no incluyen el firmado de código porque están, pues eso, en desarrollo.

Como vuelvo a introducir el comando si reinicio la NVRAM

Si por tareas de mantenimiento, o por lo que sea, se reinicia la NVRAM y no puedes arrancar el Mac porque te sale el símbolo prohibido tienes las siguientes opciones:

  • Arranca con la tecla mayúsculas pulsada, el Modo seguro. Esto desactiva todas las extensiones de Kernel de terceros y te permitirá acceder al Terminal y desactivar la protección de extensiones de Kernel.
  • Arrancar desde otro disco, memoria USB, etc. que no contenga extensiones sin firmar de forma que puedas acceder a la NVRAM desde el Terminal y volver a desactivar la protección de extensiones. Es una excelente idea mantener una memoria USB con una versión de OS X instalada para poder arrancar desde la misma y poder ejecutar aplicaciones de mantenimiento, pero en el caso de que que tengas la protección de extensiones de Kernel desactivada, es casi una obligación sobre todo SI NO TIENES LA PARTICIÓN DE RECUPERACIÓN instalada en tu disco de arranque, una memoria USB con una partición de recuperación o similar.
  • Si tienes la partición de recuperación activada, es factible poder acceder al Terminal desde el menú Utilidades y poder actualizar el estado de la protección de las extensiones de Kernel desde allí. Como cuando estás a en la partición de recuperación tu usuario es root, no necesitaras sudo a la hora de introducir el comando (de hecho, te dirá que sudo no existe).

Si aún así no funciona y te sigue apareciendo el símbolo de prohibido aproximadamente a mitad de arranque de OS X 10.10 Yosemite hay que atacar el problema desde una perspectiva más global: reinstalar el sistema.

Reinstalar el sistema no significa que tengas que borrar el disco: una de las grandes ventajas de OS X es que puedes reinstalar el sistema encima de un sistema instalado. Lo que ocurre en estos casos es que el instalador hace un análisis de los archivos modificados del sistema y los sustituye por los del instalador devolviéndote el Mac a la versión de OS X del instalador, por lo que tendrás que aplicar las actualizaciones del sistema operativo que hayas aplicado con anterioridad. De hecho, será el mismo sistema el que te solicitará que lo hagas, pero ni tus archivos, ni tus aplicaciones, ni tus ajustes se borrarán. Así, si has tocado las extensiones de Kernel y el sistema no te deja arrancar por culpa de esas modificaciones, serán sustituidas y ya podrás sobrepasar el símbolo de prohibido durante el arranque.

Dos opciones: reinstalar (de nuevo, sin borrar el disco, simplemente encima) desde la partición de recuperación o utilizar una memoria USB especialmente preparada con el instalador.

Para crear esa memoria USB con un instalador de OS X 10.10 Yosemite que te permita arrancar desde el mismo e instalar, abre el Terminal en Aplicaciones > Utilidades y usa el comando en una sola línea:

sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resources/createinstallmedia --volume /Volumes/nombre\ de\ memoria\ USB --applicationpath /Applications/Install\ OS\ X\ Yosemite.app —nointeraction

El comando va todo en una única línea y usa sudo por lo que necesitarás la contraseña del administrador. Se supone que la aplicación que instala OS X 10.10 Yosemite está en la carpeta de Aplicaciones, que es desde donde se ha descargado desde la Mac App Store.

Una vez hayas introducido la contraseña, el proceso de copia a la memoria USB se iniciará (llevará cierto tiempo, sobre todo si es una memoria USB lenta o el interfaz es 2.0, ya que son más de 8 GB) y el Terminal te irá informando de cada uno de los pasos.

Cuando hayas terminado, si vas a Preferencias del Sistema > Discos de Arranque podrás ver allí la memoria USB, lo que indica que es un medio de instalación apropiado para instalar Yosemite.

0 0 votos
Article Rating
Subscribe
Notify of
8 Comments
Oldest
Newest Most Voted
Opiniones Inline
Ver todos los comentarios
Lucas Rei Ramos
Lucas Rei Ramos
9 years ago

Pues vaya chasco, yo que en el futuro quería ampliar el mac con un SSD, y tener que meterme en este marrón. A ver si sale alguna solución elegante para no tener que deshabilitar el firmado de las extensiones, lo cual estaría bastante bien.

krollian
krollian
9 years ago

Hablando de kernels, es increíble como aún la gestión de dispositivos Android es bastante penosa.

Francamente, actualizar el firmware desde OS X de ciertos dispositivos Android (desconozco si son legión) porque en mi caso me refiero a un LG Optimus L4 II (L4 II E440), es una cosa bastante aventurosa.

Descargar el soft, instalarlo y que te desconfigure el ordenador es muy probable.

Lo único que he visto que funciona seguro es Android file transfer. Instalas la aplicación en el Mac y puedes copiar archivos desde el Mac al dispositivo android a través del cable USB correspondiente.

Entiendo que con la miríada de dispositivos Android esto es un verdadero caos. Y al final te dices, si el soft para OS X no existe o es ortopédico en sus uso o va a dar problemas, te dices, me pillo un iPhone y a correr.

En fin. Luego hay quienes dicen que usar un Mac es estar en un nicho…

Alberto Lozano
Alberto Lozano
9 years ago

Si en lugar de Trim Enabler usais [url=http://chameleon.alessandroboschini.com]Chameleon SSD Optimizer[/url] la cosa es muy sencilla ya que esa utilidad (en su última versión) se encarga de desactivar el firmado de extensiones de forma [i]automágica[/i] sin que tengáis que tirar de terminal, basta un doble reinicio de la máquina.

Alquimista
Alquimista
9 years ago

[quote]Trim Enabler support
Trim Enabler 3.3 will disable the kext-signing setting automatically for you, by giving a choice when you flip the switch.

By clicking Proceed, your computer will reboot with kext-signing disabled. You can then flip the switch again to enable Trim.

When you flip the switch back to Off, Trim Enabler will ask you if you want to restore the kext-signing setting back to normal.[/quote]
[url=TRIM Enabler and Yosemite]http://www.cindori.org/trim-enabler-and-yosemite/[/url]

Alberto Lozano
Alberto Lozano
9 years ago

Al final Trim Enabler lo ha hecho pero estuvo durante un tiempo diciendo que no se podía mientras que Chameleon presentó una actualización inmediata.

Queimacasas
Queimacasas
9 years ago

Yo tengo Trim Enabler pero al final no lo he instalado
Cuán necesario es tenerlo? (obviamente tengo un ssd y además con el fusion drive activado manualmente)

sault
9 years ago

Yo simplemente he sustituido la libreria que firma el kernel con la versión anterior puntualmente.

8
0
Me encantaría saber tu opinión, por favor, deja un comentariox
()
x