domingo, 13 de noviembre de 2022

Instalar kernel personalizado para procesadores Ryzen

Uff! hace mucho que no escribo en el blog, de hecho, son varios años... Bueno, empecemos con una entrada sencilla para intentar tomar ritmo nuevamente.
Actualmente tengo un portatil con un Ryzen 5500U el cual se basa en la arquitectura Zen2, por lo que utilizo un kernel personalizado para este CPU que se encuentra disponible en AUR y es mantenido por eggz (NhaMeh), el pkg se llama linux-amd-znver2. La instalación es muy simple, al ser un paquete de AUR utilizaremos yay o el AUR helper que utilices. Debo aclara que este método descarga y compila el kernel por lo que dependiendo de la velocidad de tu internet, hardware y configuración, tardará más o menos tiempo.

  yay -S linux-amd-znver2

Básicamente es todo, sólo debemos esperar a que el proceso termine y tendremos instalado el kernel. Adicionalmente si necesitas las cabeceras recuerda instalar el paquete linux-amd-znver2-headers.

Si eres de los que no les gusta compilar, puedes agregar el repo donde se encuentran los binarios además de más kernels para testear.

Abrimos el archivo pacman.conf.

  sudo nano /etc/pacman.conf

Agregaremos el repo.

   [linuxkernels]
  Server = http://nhameh.ovh/$repo/$arch
  SigLevel = Optional TrustAll

Actualizamos.

  sudo pacman -Syy

Deberíamos ver el nuevo repo en la salida de la consola.
Bien, de estas dos forma es que podemos tener el kernel personalizado para cualquier CPU que sea arquitectura Zen2 de AMD. Si tienes un CPU de arquitectura Zen3 tienes en el mismo repo el kernel linux-amd el cual está optimizado para esa arquitectura.

Este repo tiene mas kernels para probar, Para listarlos utilizaremos la siguiente orden.

  pacman -Sl linuxkernels

Para conocer la descripción de cada kernel usaremos la siguiente orden.

  pacman -Si pkg_name

Como último paso, debemos actualizar las entradas que genera el grub. Esto lo hacemos con la siguiente orden.

  sudo grub-mkconfig -o /boot/grub/grub.cfg



B O N U S :

Optimización del proceso de compilación.

Para optimizar la compilación ajustaremos al archivo makepkg.conf. abrimos el archivo.

  sudo nano /etc/.makepkg.conf

Cambiaremos los siguientes ajustes en CFLAGS.

  -march=generic a -march=native

Básicamente al cambiar el parámetro generic a native, hacemos que GCC trate de identificar automáticamente nuestro CPU para utilizar las flags adecuadas para optimizar la compilación para nuestro CPU. Si eres desarrollador ya imaginas que pasa al habilitar este parametro, si no lo eres, no te preocupes.

Si quieres ver como GCC identifica tu CPU utiliza la siguiente orden y observa la salida de -mtune.

  gcc -v -E -x c /dev/null -o /dev/null -march=native 2>&1 | grep /cc1 | grep mtune

Mi CPU Ryzen 5500u es identificado como znver2. Aquí observamos porqué instalo este kernel.

Editaremos la opción MAKEFLAGS para ajustarla al punto de que nos de el mejor rendimiento. En mi equipo, la mejor opción es -j8.

Más información en la wiki de arch.


P R E C A U C I Ó N :

Recientemente se descubrió que pueden introducir paquetes maliciosos en AUR mediante dominios caducados. Más información aquí. No insinúo que este kernel sea malicioso por venir de AUR pero sí que debemos tener cuidado con lo que instalemos.

Gracias por tu visita