GNU/Linux >> Tutoriales Linux >  >> Linux

Linux, GPU AMD, pantalla negra en el arranque

Recientemente, me encontré con un nuevo problema relacionado con el hardware con una distribución de Linux. En Linux Mint 20.2, mientras se arrancaba con batería, es decir, sin toma de corriente, el proceso de arranque se detenía en algún momento y se mostraba una pantalla negra que no respondía. La única solución es reiniciar o encender el host con el cargador enchufado.

Lo interesante es que esto sucedió en una computadora portátil IdeaPad 3 relativamente nueva con gráficos AMD Vega 8. Y me molestó mucho, porque siempre parece haber algún problema con el hardware. Inalámbrico en esta máquina, gráficos en esta, control de E/S aquí, cámara allí, etc. Siempre problemas, siempre excusas. Bueno, veamos qué podemos hacer aquí y cómo solucionarlo.

Problema con más detalle

Encontré el problema con Linux Mint. Pero sospecho que el problema afecta a una base mucho más amplia. De hecho, si busca "pantalla negra de arranque de AMD", obtendrá toneladas de resultados para hilos de foros, ya sean Ubuntu, Mint, Arch, Manjaro o Gentoo, que se remontan a 2019, con toneladas de recomendaciones y muy pocas soluciones reales. . ¿Por qué? Porque solucionar problemas con los controladores requiere experiencia, y si su núcleo y/o controladores no ofrecen el tipo correcto de funcionalidad, no hay mucho que pueda hacer. Esto también pone de relieve la cuestión de los controladores de código abierto frente a los de código cerrado, como si eso hiciera alguna diferencia. No es así, porque la experiencia es la experiencia.

Dejando a un lado las mini diatribas, la máquina IdeaPad 3 tiene una configuración de arranque triple, que incluye también MX-21 KDE y Windows. Dado que estos otros dos sistemas funcionan sin ningún problema, podría descartar un problema de hardware y concentrarme en lo que está específicamente mal (y es diferente) con la secuencia de arranque de Mint.

Con ese fin, tomé los archivos de registro dmesg, kern.log, X.org.log y del sistema de Mint y MX-21 y los comparé, uno al lado del otro, haciendo diferencias reales. La única diferencia real está en el registro del kernel, donde Mint deja de arrancar mientras la otra distribución continúa alegremente. El error dice lo siguiente:

...
núcleo:[] [drm:amdgpu_job_timedout [amdgpu]] *ERROR* Información del proceso:proceso Xorg pid 790 hilo Xorg:cs0 pid 824
núcleo:[] amdgpu 0000:03:00.0:¡Comienza el reinicio de la GPU!
kernel:[] amdgpu 0000:03:00.0:el restablecimiento de GPU se realizó correctamente, intentando reanudar
kernel:[] [drm] PCIE GART de 1024M habilitado (tabla en 0x000000F400900000).
kernel:[] [drm] PSP se está reanudando...
kernel:[] [drm] reserva 0x400000 de 0xf47f800000 para PSP TMR
kernel:[] [drm] comando psp falló y el estado de respuesta es (0x7)
núcleo:[] [drm] La decodificación y codificación de VCN se inicializaron correctamente (en modo SPG).
kernel:[] amdgpu 0000:03:00.0:ring gfx usa VM inv eng 0 en hub 0
...

Eventualmente, el reinicio de la GPU se realiza correctamente, pero no ayuda. La pantalla permanece negra. Ahora, déjame mostrarte cómo puedes resolver o solucionar el problema. Tenemos algunas opciones a nuestra disposición.

Soluciones

Bien, esto es lo que puedes hacer:

Instalar un nuevo núcleo (si está disponible)

Actualice el kernel y/o el firmware del sistema. En Linux Mint, que normalmente ancla los núcleos, puede descargar manualmente uno nuevo a través de la utilidad Actualización del sistema. Te avisará, y luego podrás seleccionar la versión deseada y configurarla. Para Mint 20.2 Uma, puede pasar del kernel 5.4 al kernel 5.13.

Cuando instalé el nuevo kernel y miré el resultado de la configuración, también noté una serie de mensajes de advertencia durante la generación del archivo initramfs:

...
W:Posible firmware faltante /lib/firmware/amdgpu/vangogh_vcn.bin para el módulo amdgpu
W:Posible firmware faltante /lib/firmware/amdgpu/navy_flounder_vcn.bin para el módulo amdgpu
W:Posible firmware faltante /lib/firmware/amdgpu/navi12_vcn.bin para el módulo amdgpu
W:Posible firmware faltante /lib/firmware/amdgpu/aldebaran_vcn.bin para el módulo amdgpu
...

Puede ignorarlos SI su arquitectura de GPU AMD no aparece en esta lista. En mi caso, Vega 8 fue compatible correctamente (es decir, no está en esta lista). ¿Cómo se sabe? Bueno, puede ejecutar el comando lspci -v, que enumerará todos sus diferentes componentes de hardware. Necesita la entrada que coincida con el controlador de kernel correcto en uso, en este caso amdpu.

03:00.0 Controlador compatible con VGA:Advanced Micro Devices, Inc. [AMD/ATI] Picasso (rev c2) (prog-if 00 [controlador VGA])
Subsistema:Lenovo Picasso
...

Así descubrí que mis gráficos Vega 8 en realidad corresponden a un modelo de arquitectura llamado Picasso. Supongo que eso explica los nombres usados, en general. Esta salida es solo un ruido desordenado que le informa sobre los nuevos núcleos que no son compatibles con ciertos modelos de GPU. Nuevamente, esto abre una pregunta más amplia sobre la compatibilidad con versiones anteriores de Linux y demás, pero no vamos a discutir eso ahora. Reinicie, y esto debería, con suerte, hacer el trabajo.

Inicie el host con la alimentación enchufada

Esto es molesto, pero es una solución simple si no se siente cómodo haciendo cambios en el sistema, o si no desea hacer nada especial hasta que su distribución de Linux solucione el problema. Sin embargo, el problema resalta una (pequeña) desventaja de la política del kernel de Mint y un fenómeno genérico y más amplio de soporte de hardware en Linux. Porque, si su distribución no tiene un kernel actualizado disponible, no puede hacer mucho.

La razón por la que este "truco" funciona es porque un sistema a plena potencia (a diferencia de la energía de la batería) utiliza diferentes perfiles de energía. Si es realmente inteligente, puede jugar con las opciones de rendimiento de energía de su BIOS, si están disponibles, o ajustar la configuración de energía de la GPU, pero esto solo pretende ser una medida provisional.

Cambiar los parámetros de arranque

Continuando con lo que mencioné anteriormente, puede iniciar el sistema pasando una variedad de parámetros diferentes al módulo del kernel AMD GPU (amdgpu). Puede verificar qué tipo de parámetros y opciones admite el módulo ejecutando el comando modinfo:

modinfo amdgpu

nombre de archivo:/lib/modules/5.13.0-22-generic/kernel/drivers/gpu/drm/amd/amdgpu
/amdgpu.ko
licencia:GPL y derechos adicionales
descripción:GPU de AMD
autor:equipo de controladores de Linux de AMD
...
parm:audio:Activar audio (-1 =automático, 0 =desactivar, 1 =habilitar) (int)
parm:disp_priority:Mostrar prioridad (0 =automático, 1 =normal, 2 =alto) (int)
parm:hw_i2c:hw i2c engine enable (0 =deshabilitar) ( int)
parm:pcie_gen2:modo PCIE Gen2 (-1 =automático, 0 =deshabilitar, 1 =habilitar) (int)
parm:msi:compatibilidad con MSI (1 =habilitar, 0 =deshabilitar, - 1 =automático) (int)
...

Por ejemplo, puede probar algunas de las opciones disponibles, ¡pero NO a menos que comprenda lo que está haciendo!

amdgpu.noretry=0
amdgpu.dc=1

Estos deben agregarse a la línea de inicio del kernel en el menú de inicio. Con las distribuciones de Linux más recientes que usan el gestor de arranque GRUB2, la secuencia de comandos es la siguiente:

  • Abra /etc/default/grub en un editor de texto, como root o sudo (cree una copia de seguridad de antemano)
  • Agregue una o más opciones amdgpu a la línea GRUB_CMDLINE_LINUX_DEFAULT.
  • Guarde el archivo y actualice la configuración de GRUB con:

sudo update-grub

O, en sistemas que no usan el script contenedor anterior:

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

Reinicie su sistema y vea si su problema está resuelto. Puede comprobar cómo arrancó el sistema examinando la línea de comandos del kernel, o más bien, si arranca bien con la batería, ¡ja, ja!

gato /proc/líneacmd

Ahora, la gran pregunta es, ¿qué opciones de amdgpu debería agregar?

No hay una respuesta simple a esto, me temo. En la mayoría de los casos, a falta de una corrección real del kernel/firmware, estará adivinando, según el mensaje de error que ve en el registro del kernel, y esperará que la opción específica pueda solucionarlo. Esto se debe a que los mensajes de error a menudo son genéricos, y sin experiencia en la pila de gráficos y el controlador en particular, realmente no puede concretarlo con un puñado de opciones de módulos del kernel.

Hacer estas ediciones puede generar problemas y complicaciones adicionales, por lo que no debe aplicarlas a ciegas, o simplemente copiar cualquier sugerencia de un foro. Mis pruebas muestran que ninguna opción realmente hace una gran diferencia. Los dos enumerados anteriormente son solo para referencia. Aún así, si las actualizaciones del kernel no funcionan y debe poder usar la computadora portátil con la energía de la batería, entonces supongo que no tiene nada que perder, y también podría experimentar y ver qué sucede.

Conclusión

Aquí vamos. Con suerte, su computadora portátil con gráficos AMD que ejecuta Linux ahora se está comportando correctamente, y ya no verá el problema de la pantalla negra en el arranque mientras usa la energía de la batería (o cualquier otro escenario). Mi tutorial describe tres enfoques principales:actualización del kernel, solución alternativa al uso de energía y algo de piratería con los parámetros del módulo del kernel, que son riesgosos y probablemente no le darán los mejores resultados, pero oye.

No me gustan este tipo de problemas. Siempre me recuerdan lo frágil que es Linux. Sí, se ejecuta en toneladas de hardware, y eso es encomiable, pero siempre es 95 % o 91 %, nunca 100 % de principio a fin. Y eso es molesto. Bueno, de todos modos, eso es todo. Ahora, me voy a mi próximo obstáculo Tuxy. Nos vemos.


Linux
  1. Linux – Kernel:¿Soporte de espacios de nombres?

  2. Linux – ¿Reenvío de IP del kernel?

  3. Linux:¿el kernel no puede encontrar el archivo /dev/sda durante el arranque?

  4. Linux:¿los diferentes kernels de Linux/unix son intercambiables?

  5. ¿Cómo pasar un valor a un módulo kernel de Linux incorporado en el momento del arranque?

Núcleo de Linux vs. Núcleo de Mac

Cómo reparar la pantalla negra de Google Chrome en el sistema operativo Linux (Wayland)

Mi HP Pavilion de 10 años ya no arranca las distribuciones modernas

Optimización de Notepad++ en Linux

Una guía básica para el proceso de arranque de Linux

[Solucionado] Kali Linux atascado en la pantalla negra al arrancar