Touchpad, Vboxdrv, Secure Boot y HWE
Hemos tratado de agrupar dos problemas recientes en Ubuntu 18.04, que si bien no están vinculados entre sí, ambos están relacionados con el kernel.
El primero es una falla del touchpad en las laptops Asus, Dell, entre otras, que hace que deje de funcionar. El segundo es que VirtualBox no inicia y solicita la firma del kernel en aquellos equipos que tienen "Secure Boot".
Para el primer caso, la solución que brindan en algunos foros de modificar el GRUB es incorrecta, ya que el problema (de ambos casos) radica en el kernel, específicamente la versión 4.15.0-72, que trajo incluido el problema del no reconocimiento del touchpad (y de paso solicita la firma en VirtualBox).
No podemos afirmar o negar que existan otras versiones del kernel de linux afectadas por este problema, por tanto, para el primer caso, la solución es cambiar el kernel.
Para esto podemos esperar la liberación de un nuevo kernel oficial de Ubuntu (recomendado) o hacer downgrade/upgrade del kernel con ukuu.
No podemos afirmar o negar que existan otras versiones del kernel de linux afectadas por este problema, por tanto, para el primer caso, la solución es cambiar el kernel.
Para esto podemos esperar la liberación de un nuevo kernel oficial de Ubuntu (recomendado) o hacer downgrade/upgrade del kernel con ukuu.
apt-add-repository -y ppa:teejee2008/ppa apt install ukuuEl segundo caso (la firma) se debe a que Ubuntu ahora verifica la firma del módulo por defecto, en los núcleos 4.4.0-18.34, 4.4.0-21.37, 4.2.0-42.49, 3.19.0-65.73 y 3.13.0-92.139 en adelante, entonces aquellos sistemas que tengan "secure boot" al actualizarse el kernel solicitará la firma, y por tanto Virtualbox dejará de funcionar.
Entonces vamos a matar dos pájaros de un tiro.
Activando Pilas de habilitación de LTS
Las pilas de habilitación Ubuntu LTS (también llamadas HWE o habilitación de hardware) proporcionan un núcleo más nuevo y soporte X para las versiones existentes de Ubuntu LTS. Estas pilas de habilitación se pueden instalar manualmente, pero también están disponibles cuando se instala con los medios de lanzamiento de punto Ubuntu LTS. Estas nuevas pilas de habilitación están destinadas a escritorios y servidores e incluso se recomiendan para imágenes en la nube o virtuales.
Instalación HWE |
add-apt-repository -y ppa:canonical-hwe-team/ppa apt install --install-recommends linux-generic-hwe-18.04 xserver-xorg-hwe-18.04
Y reiniciar. Luego de esto trabajaremos con el kernel 5.0.0-37-generic (o superior)
Importante
Implantar un kernel diferente al oficial (General Availability GA), tales como el que ofrece Hardware Enablement HWE o los relacionados en la aplicación ukku, puede que solucione el problema antes descrito, pero eventualmente puede crear otros (por ejemplo el HWE no es compatible con algunos módulos de Iptables y xserver-xorg-hwe genera fallas con el mouse y otros componentes). Entonces si ocurre algún problema, regrese a la anterior configuración. Con ukku es sencillo. Reiniciamos con el kernel anterior, abrimos la aplicación y eliminamos el kernel instalado. Pero con HWE es un poco más complicado.
Instalar linux-generic:
Desactivando Secure Boot
Puede hacerlo a nivel de Bios y en el software con los siguientes comandos:
Firmando el Kernel
Para esto usaremos los siguientes comandos:
Importante
Implantar un kernel diferente al oficial (General Availability GA), tales como el que ofrece Hardware Enablement HWE o los relacionados en la aplicación ukku, puede que solucione el problema antes descrito, pero eventualmente puede crear otros (por ejemplo el HWE no es compatible con algunos módulos de Iptables y xserver-xorg-hwe genera fallas con el mouse y otros componentes). Entonces si ocurre algún problema, regrese a la anterior configuración. Con ukku es sencillo. Reiniciamos con el kernel anterior, abrimos la aplicación y eliminamos el kernel instalado. Pero con HWE es un poco más complicado.
Instalar linux-generic:
apt install linux-genericEditar grub:
nano /etc/default/grubCambiar las siguientes líneas:
GRUB_TIMEOUT_STYLE=hidden GRUB_TIMEOUT=0Por:
#GRUB_TIMEOUT_STYLE=hidden GRUB_TIMEOUT=5Recargar grub y reiniciar:
update-grub rebootEn el menú de arranque de grub, iniciar con un kernel oficial y cuando pida la contraseña abrir el terminal Ctrl + Alt + T y eliminar HWE:
ppa-purge -y ppa:canonical-hwe-team/ppa apt purge xserver-xorg-hwe-18.04 apt purge linux-image-unsigned-5* apt install xserver-xorg-core xserver-xorg rebootDespués de reiniciar, verificar que el kernel HWE se haya eliminado correctamente:
dpkg --list | grep linux-image-hwe dpkg --list | grep linux-headers-hweTambién puede hacer uso del siguiente comando para eliminar los kernels, pero tenga cuidado:
apt-get purge $(dpkg-query -W 'linux-*' | awk -v c="$(uname -r | cut -d- -f1,2)" 'match($1,"[0-9]+\\.[0-9]+\\.[0-9]+-[^-]+") && substr($1,RSTART,RLENGTH)!=c {print $1}')Ahora tenemos dos alternativas. O desactivamos secure boot o firmamos el kernel (o ambas)
Desactivando Secure Boot
En la wiki de Ubuntu podemos consultar el procedimiento paso a paso |
apt install mokutil # instalando el módulo mokutil --disable-validation # deshabilitar mokutil --enable-validation # habilitar mokutil --sb-state # verificar el estadoEn cada paso se nos pedirá una contraseña y debemos reiniciar el equipo, seleccionar Change Secure Boot State y Yes/No en dependencia de lo que vayamos a hacer (habilitar/deshabilitar Secure Boot) para completar el proceso.
Firmando el Kernel
Para esto usaremos los siguientes comandos:
apt-get install mokutil openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=VirtualBox/" /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv) mokutil --import MOK.der
Y reiniciamos. Luego seleccionamos Enroll MOK / Continue y nos pedirá la contraseña que hemos introducido anteriormente y nos informará que la operación fue completada con éxito. El post Firmando módulo VirtualBox en SecureBoot UEFI, solución a: Kernel driver not installed (rc=-1908) nos muestra paso a paso el procedimiento de firma del kernel.
Y por último, en el escritorio, solo nos resta ejecutar con privilegios:
Y por último, en el escritorio, solo nos resta ejecutar con privilegios:
/sbin/vboxconfigY con esto ya podemos usar virtualbox y el touchpad.
Update 2021
Como ukuu ahora es pago, hay otras alternativas para actualizar el kernel:
- bash script ubuntu-mainline-kernel
- PPA mainline ( github)
- Manualmente desde Ubuntu kernel team
Post a Comment