Probar Parches

wchilders@nearce.com Versión F38 Last review: 2021-08-11
Una guía rápida para probar si un parche resuelve su problema.

Ocasionalmente, cuando se intenta resolver una cuestión en el kernel (particularmente una que sea específica a su hardware) se le puede pedir que aplique un parche para verificar que la cuestión está resuelta antes de incluir el parche.

Esta es una breve guía sobre como obtener la fuente del kernel de Fedora para su versión de Fedora, aplicar el parche y compilar el kernel para probar. Esta guía está dirigida a los usuarios que no están familiarizados con el proceso de desarrollo del kernel de Fedora y requiere solo un mínimo conocimiento de las herramientas asociadas.

Obtener Configuración

Primero, si no está ya instalado, debe instalar fedpkg (utilidad de empaquetado RPM de Fedora):

$  sudo dnf install fedpkg

Después, está yendo para obtener la espera del origen (este creará un subdirectorio nuevo de «kernel» y coloque todos los archivos necesarios allí):

fedpkg clone --anonymous kernel

Después, introduzca el directorio "kernel" creado:

cd kernel

Después de ingresar al directorio del kernel, debe cambiar a la rama de su versión actual de Fedora usando el siguiente comando donde "<fedora version>" es su versión de Fedora:

fedpkg switch-branch f<versión de fedora>

Para instancia, si está ejecutando Fedora 34, ejecutaría:

fedpkg switch-branch f34

Finalmente, debes agregarte al grupo "mock" usando el siguiente comando donde "<username>" es su nombre de usuario de Fedora:

usermod -a -G mock <usuario>

Para este cambio para tomar efecto puede salir y volver a entrar, o puede ejecutar la instrucción siguiente:

newgrp -

Aplicar El Parche

Para aplicar el parche, toma el archivo .patch que ha sido solicitado para aplicar, y guárdelo en el directorio “kernel” el paso anterior creado como:

linux-kernel-test.patch

Compilar Los Paquetes

Para compilar los paquetes del kernel, primero asegúrese de estar en el directorio “kernel”.

Este paso siguiente puede tomar un rato por tanto asegúrate que esperes hasta que obtuviésemos tiempo donde pueda su equipo funcionar.

Luego, ejecuta la instrucción siguiente:

fedpkg mockbuild

Finalmente, ve a disfrutar de una bebida caliente, sal a caminar, juega con tu perro o relájate de alguna manera y vuelve más tarde.

Instalar Los Paquetes

Para instalar los paquetes, primero asegúrese de estar en el directorio “kernel”. Desde allí, acceda al directorio “results_kernel”:

cd resultados_kernel

Este directorio contendrá un subdirectorio único que es el número de la versión del kernel. Utilice la instrucción ls para encontrar su nombre, por ejemplo:

ls
5.13.9

Introduzca este directorio:

cd 5.13.9

Repita este proceso una vez más:

ls
200.fc34
cd 200.fc34

Finalmente, puede ejecutar ls una vez más, verá un número de los archivos ".rpm". Como un ejemplo:

ls -1
build.log
hw_info.log
installed_pkgs.log
kernel-5.13.9-200.fc34.x86_64.src.rpm
kernel-5.13.9-200.fc34.x86_64.rpm
kernel-core-5.13.9-200.fc34.x86_64.rpm
kernel-debug-5.13.9-200.fc34.x86_64.rpm
kernel-debug-core-5.13.9-200.fc34.x86_64.rpm
kernel-debug-debuginfo-5.13.9-200.fc34.x86_64.rpm
kernel-debug-devel-5.13.9-200.fc34.x86_64.rpm
kernel-debuginfo-5.13.9-200.fc34.x86_64.rpm
kernel-debuginfo-common-x86_64-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-extra-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-internal-5.13.9-200.fc34.x86_64.rpm
kernel-devel-5.13.9-200.fc34.x86_64.rpm
kernel-modules-5.13.9-200.fc34.x86_64.rpm
kernel-modules-extra-5.13.9-200.fc34.x86_64.rpm
kernel-modules-internal-5.13.9-200.fc34.x86_64.rpm
root.log
state.log

Retire todos los archivos .src.rpm con la instrucción siguiente:

rm *.src.rpm

El listado ahora parecería algo como esto:

ls -1
build.log
hw_info.log
installed_pkgs.log
kernel-5.13.9-200.fc34.x86_64.rpm
kernel-core-5.13.9-200.fc34.x86_64.rpm
kernel-debug-5.13.9-200.fc34.x86_64.rpm
kernel-debug-core-5.13.9-200.fc34.x86_64.rpm
kernel-debug-debuginfo-5.13.9-200.fc34.x86_64.rpm
kernel-debug-devel-5.13.9-200.fc34.x86_64.rpm
kernel-debuginfo-5.13.9-200.fc34.x86_64.rpm
kernel-debuginfo-common-x86_64-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-extra-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-internal-5.13.9-200.fc34.x86_64.rpm
kernel-devel-5.13.9-200.fc34.x86_64.rpm
kernel-modules-5.13.9-200.fc34.x86_64.rpm
kernel-modules-extra-5.13.9-200.fc34.x86_64.rpm
kernel-modules-internal-5.13.9-200.fc34.x86_64.rpm
root.log
state.log

Finalmente, instale todos los paquetes rpm dentro de este directorio utilizando dnf:

dnf install ./*.rpm

Probar El Kernel

Una vez todo está correctamente instalado, reinicie. El kernel que ha compilado automáticamente será seleccionado por GRUB cuando arranque su sistema. Simplemente conceda al equipo arrancar, y marcar para ver si su asunto ha sido resuelto.

Volver

Si ha acabado las pruebas, y le gustaría revertir al kernel anterior deseará reiniciar de nuevo. Este momento en que GRUB inicie, querrá seleccionar un kernel anterior (por ejemplo, en este caso compilamos 5.13.9, así que seleccionaríamos 5.13.8 del listado) utilizando las teclas de flecha.

Una vez que ha vuelto a arrancar, utilice las instrucciones siguientes para deshacer la instalación del kernel:

sudo dnf history undo last

Entonces se le solicitaría que retire los paquetes del kernel que acaba de ser instalado. Si ves otros paquetes, utilice el historial de dnf para encontrar la transacción a deshacer. Estás buscando el número en el inicio de una línea que incluye la versión del kernel que estuvo instalado:

dnf history --reverse
...
24 | install ./kernel-5.13.9-200.fc34.x86_64.rpm ...
...

Este número "24" entonces puede ser utilizado para deshacer a través de la instrucción a continuación:

sudo dnf history undo 24

Finalmente si reinicia, el kernel nuevo (p. ej., 5.13.9) ya parecería más en GRUB, y su kernel anterior estaría seleccionado automáticamente (ej., 5.13.8).