Otro título sugerido: SecureBoot, la puta que te parió SecureBoot.
Hola, vengo de sobrevivir a esto y me lo voy a agendar por que tengo la sospecha de que si el kernel de Linux se actualiza me va a volver a pasar:
Al ejecutar VMware workstation Player o cualquiera de sus variantes en una computadora que tiene habilitado secureboot (y por consiguiente, todos los módulos y componentes del kernel firmados con una clave privada) via UEFI / Secureboot, la ejecución falla diciendo que el módulo vmmon no está cargado.
Mas específicamente, el mensaje de error reza:
Could not open /dev/vmmon: No such file or directory.
Please make sure that the kernel module `vmmon’ is loaded.
Para uno, que ya está versado en estos menesteres y va la consola a cargar el puto módulo como corresponde, convencido de que todo irá sobre rudas siempre es un ingrato despropósito encontrarse con que no, que no se va a poder:
modprobe vmnet
modprobe: ERROR: could not insert 'vmnet': Required key not available
Y ahí, justo ahí, empiezan tus problemas. Puteás mentalmente a todos los santos y acudís a Google a que te salve las papas. Con un poco de suerte, llegás hasta acá y te explico como seguir.
Lo que sigue es eso, como arreglar este problema, como cargar el módulo vmmon (y vmnet, que también vas a necesitar, sólo que todavía no lo sabés) si tu computadora y tu sistema operativo están usando secureboot en Linux y la cosa resulta relativamente sencilla una vez que entendés de que va todo:
El problema es que el kernel no puede cargar el módulo por que no está firmado con la private key del Kernel que no tenés, pero resulta que tampoco la necesitás en realidad, por que podés hacer que secureboot incorpore una segunda private key generada por vos mismo, firmar los módulos que rompan los huevos y listo, ejecutar por fin VMware player.
Como se hace:
Lo primero es usar OpenSSL para generar tu par de claves privada y pública:
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=<putoelque.lee>/"
Seguramente quieras cambiar todo lo que está entre brackets: < > por algo que te resulte mas descriptivo.
Para luego importar tu clave pública y que pueda ser utilizada para leer en el futuro los módulos que vas a firmar con la privada:
mokutil --import MOK.der
Este paso te va a solicitar un password. Este password se lo tenés que proporcionar luego al BIOS de tu computadora para poder importar también la clave pública por lo que es importante que utilices uno fácil de tipear. Acá los paranoicos te dirán además que hay que hacer una copia en un lugar seguro de ambos archivos generados con OpenSSL, MOK.der y MOK.priv por que sino cualquiera podrá cargar módulos en tu computadora y bla bla bla. A nadie le importa.
Luego rebootear, ir a tu bios o boot loader, sección secure boot / MOK enrollment o cualquiera sea la nomenclatura que corresponda a tu caso e ingresar este password que acabás de generar en el paso anterior.
Y ahora sí, volvés a tu Linux y antes de ejecutar VMWare, ejecutás estos cuatro comandos para primero firmar los dos módulos y luego cargarlos:
/usr/src/linux-headers-4.15.0-36-generic/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vmmon)
/usr/src/linux-headers-4.15.0-36-generic/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vmnet)
modprobe vvmon
modprove vmnet
PROFIT
Te sirvió? De nada!
Me sirvió DE NADA!!!
Me alegro de haberte sido de tanta inutilidad.
ejecuto los pasos pero con el comando $mokutil –import MOK.der
Me genera error: Failed to enroll new keys
ayuda por favor, gracias
¡Es interesante! El problema es que el núcleo préstamos en linea no puede cargar el módulo porque no está firmado con la clave privada del núcleo, que no tiene.
Igual que Jorge:
Ejecuto los pasos pero con el comando $mokutil –import MOK.der
Me genera error: Failed to enroll new keys
ayuda por favor, gracias
Los 4 últimos códigos están mal, tienen errores de tipeo, hijo de fruta.
Pero me sirvió, gracias crack.