Visión General del Kernel Linux de Fedora

Taisei Washington, Lucas Fehlau Arbulu Version F38 Last review: 2023-06-21

Calendario de Actualización

Versiones Estables

Las versiones estables reciben dos tipos de actualizaciones de kernel.

Actualizaciones de kernel estables

La comunidad de desarrollo del kernel admite la última versión principal con actualizaciones estables (versiones 5.y.z). Estas actualizaciones se liberan aproximadamente una vez a la semana, aunque puede ser más o menos frecuentemente. Una vez que la comunidad de desarrollo del kernel hace una versión estable, Fedora la compila y la envía como actualización a Bodhi. Estas actualizaciones se dejan normalmente en Bodhi varios días para pruebas antes de ser enviadas al repositorio de actualizaciones estables.

Actualizaciones mayores del kernel

El kernel Linux libera versiones mayores nuevas (lanzamientos 5.y) cada pocos meses. Cuando esto ocurre, Fedora actualiza la nueva versión mayor después de un par de lanzamientos estables del desarrollador. Cuando las actualizaciones se envían a Bodhi se permite más tiempo para pruebas para asegurar que no hay regresiones serias.

Desarrollo de Versiones

El desarrollo de las versiones de Fedora incluyen las versiones Rawhide y Branched.

Rawhide

El kernel Rawhide es la última instantánea git del árbol de desarrollo kernel.org de Linus. Frecuentemente (diariamente), se construye una nueva instantánea.

Branched

Las versiones Branched reciben actualizaciones en intervalos menos frecuentes que los Rawhide. Al principio de la versión Branched, normalmente se utiliza una versión preliminar del kernel, por lo que cada Release Candidate (RC) (Versión Candidata) está diseñada para versiones Branched. Una vez que se ha liberado el kernel, recibe actualizaciones estables del mismo modo que las versiones estables de Fedora.

Depurar Kernels

El kernel Linux kernel ofrece diversas opciones de configuración que hacen más fáciles los problemas de depuración. Sin embargo, algunas de estas opciones tienen un coste de rendimiento de modo que Fedora no siempre pone estas opciones en funcionamiento. Cuando se han apagado las opciones de depuración en el paquete kernel, se produce un paquete kernel-debug separado con estas opciones levantadas.

Kernels Estables y Branched

Los kernels Estable y Branched deshabilitan siempre las opciones de depuración.

Rawhide

Los kernels Rawhide habilitan las opciones de depuración. Sin embargo, cada kernel de versión candidata se compila con las opciones de depuración deshabilitadas. Los kernels de las versiones candidatas se pueden reconocer por su campo de versión. Como ejemplo, kernel-5.19.0-0.rc7.20220722git68e77ffbfd06.56.fc37 ee el kernel de la versión candidata para Fedora 37.

Políticas

Controladores Fuera del árbol

El método más simple, con diferencia, es fusionar el controlador en el kernel de Linus. Fedora cambia constantemente su base a versiones más recientes, por lo que hereda estos cambios "gratis" con poca sobrecarga para los mantenedores del kernel de Fedora.

Añadir controladores externos al kernel de Fedora que no son aceptados en sentido ascendente requiere un esfuerzo continuo por parte del equipo de kernel de Fedora, por lo que, siempre que sea posible, intentamos evitarlo. En las pocas situaciones donde tiene sentido hacerlo, hay varios criterios que se debe cumplir.

  • Debe haber una demanda razonable de la función para que asumamos la carga de transportar el código hasta que llegue al nivel superior.

  • Pasar comprobaciones sanitarias básicas (ha sido revisado por al menos un mantenedor del kernel de Fedora).

  • Tiene un desarrollador de nivel superior intentando fusionar su código en el árbol de Linus.

  • Tiene un desarrollador de Fedora responsable de mantenerlo actualizado en Fedora.

  • No causa ninguna sobrecarga discernible para los mantenedores del kernel de Fedora. El código que debe corregirse continuamente tiende a terminar siendo eliminado.

  • No añade nuevas llamadas al sistema o características similares de definición de ABI (Interfaz Binaria de Aplicación). Esto es para evitar una situación que pudiera terminar en incompatibilidades entre distribuciones/nivel superior.

  • Primero se debe aceptar en sentido ascendente como se exporta un símbolo. Esto incluye:

    • Añadir un EXPORT_SYMBOL para exportar algo que anteriormente no era exportado

    • Cambiar un EXPORT_SYMBOL_GPL a EXPORT_SYMBOL

    • Cambiar un EXPORT_SYMBOL a EXPORT_SYMBOL_GPL

  • En los raros casos en los que añadimos exportaciones que no están en el nivel superior, somos precavidos y usamos EXPORT_SYMBOL_GPL para exportarlos. Esto se hace en parte como disuasivo para que los módulos de terceros no los utilicen. (Ya que pueden desaparecer en el futuro). La única excepción a todo lo anterior es el nuevo código ascendente aún no fusionado que se está agregando. Los nuevos símbolos se pueden exportar como lo pretendía el autor.

Puesta en escena

Se sabe que los controladores en el directorio provisional de kernel Linux se encuentran en estado aproximado e incompleto. Para la gran mayoría de estos controladores, el equipo del kernel los considera inseguros para compilarlos y enviarlos. No tenemos confianza en el código existente, ni tenemos tiempos de depurar los problemas de los controladores con problemas conocidos.

Como cada política, tiene excepciones. Fedora envía algunos controladores provisionales en este momento para varias piezas de hardware. Para que el equipo de Fedora kernel habilite un controlador provisional, se deben satisfacer las siguientes condiciones:

  • Debe hacer una revisión y mejora sustancial del código upstream. Esto significa correcciones reales y no cambios estilísticos.

  • Debe haber un colaborador dispuesto a recibir informes de errores y ocuparse de ellos.

  • El colaborador debe estar activamente implicado en la mejora del controlador upstream.

  • El controlador no debe suponer una carga indebida para el equipo del kernel. Esto significa que sí hay un gran número de informes de error a consecuencia del controlador, las correcciones no se están efectuando en el desarrollo.

  • Se debe entender que si no se cumplen alguna de estas condiciones, o eventualmente se falla en su cumplimiento, el controlador será deshabilitado.

Funciones Integradas

De vez en cuando, a los mantenedores del kernel Fedora se les pide que incluyan algo en el kernel. Esto es, que la funcionalidad se incluya en el binario vmlinux que cada máquina Fedora ejecuta en lugar de construirse como un módulo que solo se carga cuando es necesario. Dado que esto se carga en cada máquina, tendemos a construir la funcionalidad como módulos tanto como sea posible. Mientras una persona puede necesitar un controlador para una tarjeta ATI, otra no y tenerlo integrado en el kernel es un desperdicio sin ningún motivo.

No hay establecido ningún criterio que se corresponda exactamente con si algo está incluido o no, pero generalmente se siguen estas directrices:

  • La opción no se puede construir como módulo y es ampliamente usada

  • La opción no es un controlador/sistema de archivos y la usa algo que está predeterminado en Fedora

  • La opción es un controlador y se usa por una amplia variedad de máquinas (controladores de teclado/ratón, soporte VT)

  • La opción es un sistema de archivos y es usado por todas las máquinas o es el sistema de archivos predeterminado de Fedora (tmpfs, ext4).

De nuevo, lo anterior son directrices generales pero para la mayor parte intentaremos limitar el tamaño total del vmlinux que está cargado con un conjunto básico de funcionalidades.

Si encuentra que las opciones de configuración de Fedora no son suficientes para sus necesidades, puede reconstruir el kernel y cambiar las opciones a las que usted crea que se ajustan. Vea la documentación en construir un kernel personalizado.

Getting Involved

If you’re interested in contributing to the development and maintenance of the Fedora kernel, check out the kernel wiki for more information.

Mailing Lists

The Fedora kernel mailing list is for Fedora-related kernel topics only. This includes Fedora-specific packaging and kernel configuration settings. For discussions about Linux itself see the Kernelnewbies mailing lists or the Linux Kernel mailing lists.

You can subscribe to the Fedora kernel mailing list and view the archive on Hyperkitty.

IRC

Users interested in the Fedora kernel hang out in the #fedora-kernel channel on freenode.


See a typo, something missing or out of date, or anything else which can be improved? Edit this document at https://pagure.io/fedora-docs/quick-docs.