Volver
2025/04/09
10. Comprendiendo los Dos Núcleos de Oracle Linux “UEK” y “RHCK”
Oracle Linux tiene dos núcleos: el Núcleo Compatible con Red Hat (RHCK), que es un núcleo compatible con RHEL, y el propio Núcleo Empresarial Irrompible (UEK) de Oracle Linux.
Si nunca has usado Oracle Linux antes, podrías estar preocupado por el Núcleo Empresarial Irrompible. En este artículo, explicaremos el Núcleo Empresarial Irrompible, así como su compatibilidad y los criterios para determinar cuándo usarlo.
Núcleo Compatible con Red Hat y Núcleo Empresarial Irrompible
Como introducción básica, proporcionaremos una visión general del Núcleo Compatible con Red Hat y del Núcleo Empresarial Irrompible.
¿Qué es el Núcleo Compatible con Red Hat?
Como su nombre indica, el Núcleo Compatible con Red Hat (RHCK) es un núcleo compatible con RHEL que simplemente es una versión recompilada del código fuente del núcleo de RHEL. Dado que es solo una versión recompilada, se comportará igual que RHEL, incluidos los errores, siempre que el número de versión sea el mismo.
La siguiente tabla muestra las versiones de RHCK y glibc para cada versión principal de Oracle Linux. Para enfatizar la compatibilidad dentro de la misma versión principal de Linux, las versiones base de componentes importantes como el núcleo y glibc no cambiarán. En cambio, cuando haya una actualización, el número de lanzamiento cambiará como se describe a continuación.
Versión de Linux | Versión de RHCK | Versión de glibc |
---|---|---|
Oracle Linux 9 | 5.14.0 | 2.34 |
Oracle Linux 8 | 4.18.0 | 2.28 |
Oracle Linux 7 | 3.10.0 | 2.17 |
El siguiente diagrama muestra los nombres de los paquetes RPM para el núcleo y glibc. Cuando se lanza un paquete de actualización, la versión base permanece igual y el lanzamiento se actualiza.
Figura 1. Versión y Lanzamiento del núcleo/glibc
¿Qué es el Núcleo Empresarial Irrompible?
El Núcleo Empresarial Irrompible (UEK) es un núcleo único de Oracle Linux que se basa en un núcleo más reciente que RHCK y es compatible con RHCK. El siguiente manual proporciona una referencia sobre sus características.
Documentación oficial: Núcleo Empresarial Irrompible
El Núcleo Empresarial Irrompible (UEK) es un núcleo Linux construido por Oracle y soportado a través del soporte de Oracle Linux. Su enfoque es el rendimiento, la estabilidad y un mínimo de retroportaciones al seguir el código fuente principal tan de cerca como sea práctico. UEK está bien probado y se usa para ejecutar los Sistemas Diseñados de Oracle, la Infraestructura de Oracle Cloud y grandes despliegues empresariales para clientes de Oracle.
Guía de Instalación de Base de Datos para Linux
El Núcleo Empresarial Irrompible está incluido y habilitado por defecto en los núcleos de Oracle Linux. Se basa en una versión reciente y estable del núcleo de desarrollo principal de Linux, e incluye optimizaciones desarrolladas en colaboración con los equipos de ingeniería de Oracle Database, middleware de Oracle y hardware de Oracle para garantizar estabilidad y un rendimiento óptimo para las cargas de trabajo empresariales más exigentes.
Los puntos principales son:
- El UEK es un núcleo Linux desarrollado y soportado por Oracle.
- Núcleo por defecto de Oracle Linux
- Basado en una nueva versión estable del núcleo principal de Linux
- Desarrollado en colaboración con los equipos de Exadata y Oracle Database, con un enfoque en rendimiento y estabilidad
- Probado en entornos de cargas de trabajo empresariales a gran escala, incluyendo Exadata y Oracle Cloud Infrastructure
Relación entre Oracle Linux y las versiones del núcleo
El número de versión de UEK cambia dependiendo del núcleo en el que se basa, y se nombra, por ejemplo, UEK6 y UEK7. Además, una gran diferencia con RHCK es que la versión principal de Oracle Linux y la versión de UEK no están fijas. La siguiente tabla muestra la correspondencia entre UEK y Oracle Linux. Como puedes ver en esta tabla, Oracle Linux 8 puede usar UEK6 y UEK7.
Versión de UEK | Versión del núcleo | Oracle Linux 7 | Oracle Linux 8 | Oracle Linux 9 |
---|---|---|---|---|
UEK7 | 5.15.0 | × | ○ | ○ |
UEK6 | 5.4.17 | ○ | ○ | × |
UEK5 | 4.14.35 | ○ | × | × |
UEK4 | 4.1.12 | ○ | × | × |
La siguiente tabla compara las versiones del núcleo de RHCK y UEK para Oracle Linux. Oracle Linux 9 fue lanzado en 2022, por lo que la diferencia entre las versiones de RHCK y UEK es pequeña. Sin embargo, dado que Oracle Linux 7 y Oracle Linux 8 han estado disponibles por algún tiempo, la diferencia entre las versiones de RHCK y UEK es grande.
Versión de Linux | RHCK | UEK |
---|---|---|
Oracle Linux 9 | 5.14.0 | 5.15.0 |
Oracle Linux 8 | 4.18.0 | 5.4.17, 5.15.0 |
Oracle Linux 7 | 3.10.0 | 4.1.12, 4.14.35, 5.4.17 |
Convención de nombres de versiones del núcleo Linux
Ahora que hemos cubierto las versiones del núcleo Linux, veamos nuevamente la convención de nombres. De hecho, no hay una definitiva, ya que ha cambiado varias veces y las convenciones de nombres son ligeramente diferentes entre el original kernel.org y las distribuciones de Linux.
Convenciones de nombres en kernel.org
Primero, veamos las convenciones de nombres utilizadas por el sitio oficial del núcleo Linux, kernel.org. Los núcleos Linux se nombran como “abc” y se llaman como sigue. Sin embargo, esta convención de nombres no es absoluta.
a: Número de lanzamiento principal
b: Número de lanzamiento menor
c: Número de parche o revisión
Además, la siguiente versión después de 5.19 es 6.0, pero esto no se debe a que las funciones hayan cambiado significativamente. Es simplemente porque no es deseable que el número b sea demasiado grande, y es una convención contar a cuando b alcanza alrededor de 20. Y c son modificaciones a nivel de parche como correcciones de errores. Por esta razón, ahora es común llamar al número de lanzamiento o número de versión una combinación de “ab” o “abc“.
En el siguiente diagrama, el Lanzamiento Principal está tachado porque ya no se usa mucho, pero todavía se utiliza cuando quieres ser explícito sobre el primer número.
Figura 2. Convención de nombres de versiones del núcleo Linux
Mira el siguiente diagrama. Muestra la historia de desarrollo del núcleo Linux. Las partes grises son el período de desarrollo, y después de un cierto período, el desarrollo pasa a la siguiente versión. En otras palabras, un lanzamiento específico de Linux “abc” repite el ciclo de vida de “desarrollo → soporte → LTS (Soporte a Largo Plazo)” una vez cada pocos años. El núcleo LTS se lanza una vez al año y se soporta durante unos cinco años.
Fuente: https://en.wikipedia.org/wiki/Linux_kernel_version_history
Figura 3. Historia de Versiones del Núcleo Linux 6.x

Figura 4. Historia de Versiones del Núcleo Linux 5.x

Convenciones de nombres de distribuciones de Linux
Las convenciones de nombres de las distribuciones de Linux y kernel.org son ligeramente diferentes. Los núcleos de las distribuciones de Linux se nombran como “abc-z“, pero en realidad, la mayoría de las distribuciones tienen “ab0-z” donde el c es un cero. Esto es cierto no solo para RHEL sino también para Ubuntu, y también para UEK7 y posteriores.
El siguiente diagrama muestra cómo se llaman las versiones del núcleo en las distribuciones de Linux. Actualmente no hay un entendimiento común, y parece variar dependiendo del contexto y la persona que lo use.
Figura 5. Nombres de distribuciones de Linux
El término Versión Base es nuevo en la plataforma. Indica la versión de kernel.org en la que se basa. Sin embargo, el número c se fuerza a cero, por lo que incluso si la versión base es 5.15.0, la versión del núcleo en la que se basa no es necesariamente 5.15.0. Por ejemplo, UEK7 es una versión 5.15.0, pero se basa en 5.15.6.
$ rpm -q --changelog kernel-uek-5.15.0-105.125.6.2.2.el9uek | tail -n 2
- Linux 5.15.6 (Greg Kroah-Hartman)
Relación entre mainline, longterm, stable y rc
Echemos un vistazo a la página del núcleo Linux oficial, Los Archivos del Núcleo Linux. Hay múltiples versiones del núcleo Linux listadas, con etiquetas como mainline, longterm, stable y rc. Explicaré cada una a continuación.
Figura 6. Los Archivos del Núcleo Linux

El siguiente diagrama muestra algunas versiones del núcleo extraídas de kernel.org con comentarios añadidos. El mainline es el desarrollo principal. Una vez que un rc (candidato a lanzamiento) está disponible, se convierte en la versión oficial, por lo que mainline y stable se refieren al mismo estado. Entre las versiones estables, una vez cada pocas versiones, se convierten en largo plazo y se soportan durante un período prolongado.
Figura 7. Ciclo de vida en kernel.org
¿Qué es el backporting?
Hay una palabra para recordar aquí: backporting. El backporting se refiere a aplicar características o correcciones incluidas en una versión más nueva de software a una versión más antigua del software.
Por ejemplo, aplicar un nuevo parche introducido en la versión 6.0 a la versión 5.0 se llama backporting. Generalmente, cuanto mayor es la diferencia entre las dos versiones, mayor es la diferencia en la base de código, lo que hace más difícil aplicarlo. Además, hay casos en los que el error en cuestión no existe en la versión más antigua, haciendo innecesario el backporting.
Algunas personas podrían estar preguntándose cuál es lo opuesto al backport. Por ejemplo, es el caso de aplicar una corrección de error desde la versión 5.0 del software a la versión más nueva 6.0 del software. Hice una investigación, pero no hay un término común, y parece que se usan backport, merging, forward-porting, etc. Parece que muchas personas lo llaman backport sin pensarlo mucho.
El siguiente texto es parte de la descripción de UEK introducida al principio.
Su enfoque es el rendimiento, la estabilidad y un mínimo de retroportaciones al seguir el código fuente principal tan de cerca como sea práctico.
Considerando lo que hemos discutido hasta ahora, Oracle está haciendo las siguientes afirmaciones:
- Las bases de código fuente principal más nuevas probablemente tengan mejor rendimiento y estabilidad porque incorporan más características nuevas y correcciones de errores.
- Comenzar con un código fuente principal más nuevo significa que hay menos diferencias en el código fuente, por lo que se requiere la menor cantidad de backporting.
Conocimientos básicos sobre los internos de Linux
Una de las cosas más importantes que debes saber sobre UEK es su compatibilidad con el núcleo RHEL (RHCK). Para entender la compatibilidad, es esencial el conocimiento del sistema operativo Linux. Por lo tanto, explicaremos los fundamentos de la estructura interna de Linux.
Componentes principales del sistema operativo Linux
El siguiente diagrama muestra los componentes principales del sistema operativo Linux y sus relaciones. Es importante recordar esta información cuando intentes entender el sistema operativo Linux.
- Núcleo Linux
El núcleo es el componente central del sistema operativo Linux. Recibe solicitudes de aplicaciones y realiza la gestión de procesos y la gestión de memoria para ejecutar programas. También utiliza controladores de dispositivos, que son módulos del núcleo, para gestionar el sistema de archivos y controlar dispositivos para E/S. El rol del núcleo se puede resumir como sigue. Es mejor entenderlo como una función que actúa sobre el hardware.- Gestión de recursos de hardware para CPU, memoria, disco, tarjetas de red, etc.
- Gestión y control de procesos para aplicaciones que se ejecutan en Linux
- Módulos del Núcleo
Los módulos del núcleo son archivos binarios que extienden la funcionalidad del núcleo. Son principalmente controladores de dispositivos y están en un formato que se puede cargar cuando sea necesario. Esto permite soportar nuevo hardware simplemente añadiendo controladores y también reduce el uso de memoria. - Bibliotecas del sistema
Las bibliotecas del sistema (o simplemente bibliotecas) son colecciones de funciones comúnmente utilizadas por programas, proporcionando la mayor parte de la funcionalidad proporcionada por el sistema operativo. La más famosa es glibc, la biblioteca C estándar utilizada en Linux. Se llama glibc porque fue originalmente desarrollada por GNU como la Biblioteca C de GNU.
Figura 8. Estructura interna de Linux
Comprender los fundamentos (funciones de biblioteca y llamadas al sistema)
Las aplicaciones en la Figura 8 se refieren a varios programas, incluyendo comandos y utilidades que se incluyen como estándar en el sistema operativo. Estos programas se ejecutan llamando a funciones de biblioteca y llamadas al sistema. Entendamos la diferencia entre ellas.
Las “bibliotecas” se instalan en /lib64
y /usr/lib
. Si muestras la información de símbolos de glibc con el comando nm
, verás que contiene printf()
. La información de símbolos se refiere a las funciones y variables contenidas en la biblioteca o programa ejecutable.
printf()
opera según los argumentos dados, emitiendo instrucciones al núcleo si es necesario.
$ rpm -qf /lib64/libc.so.6
glibc-2.34-60.0.3.el9.x86_64
$ nm /lib64/libc.so.6 | grep "T printf"
000000000006f430 T printf
000000000006e8f0 T printf_size
000000000006f350 T printf_size_info
Las “llamadas al sistema” proporcionan funciones para operar hardware como entrada/salida de archivos, creación de nuevos procesos, comunicación de red, etc. En la Figura 8, una llamada al sistema se llama directamente desde una aplicación. Sin embargo, también puede ser llamada a través de una función envolvente de llamada al sistema incluida en glibc.
¿Has leído hasta aquí? Puedes ver que las bibliotecas como glibc son muy importantes. Por esta razón, las distribuciones basadas en RHEL no cambian la versión de glibc hasta que cambia la versión principal.
Modo núcleo y modo usuario
Describe el modo núcleo y el modo usuario.
Los programas que acceden a recursos de hardware, como el núcleo y los controladores de dispositivos, se ejecutan en un modo privilegiado especial llamado “modo núcleo.” Se ejecutan en un espacio de memoria único y aislado que utiliza las características de protección de la CPU, y como no requieren cambios de contexto, se ejecutan muy rápido. El núcleo no solo ejecuta cada proceso, sino que también proporciona acceso protegido al hardware.
En contraste, los programas generales se ejecutan en un espacio de memoria llamado “modo usuario.” Los programas que se ejecutan en modo usuario no pueden acceder al hardware directamente. En cambio, acceden a las funciones del núcleo a través de llamadas al sistema, y el núcleo finalmente accede al hardware.
Resumen de conocimientos básicos
Resumamos brevemente los fundamentos de los internos de Linux que hemos cubierto hasta ahora.
- Tanto el núcleo como glibc son componentes importantes de Linux, pero tienen roles diferentes
- El núcleo es responsable de controlar el hardware.
- Las bibliotecas proporcionan funciones que son utilizadas por programas comunes. La biblioteca más importante es glibc.
- Para acceder al hardware, necesitas hacer una llamada al sistema.
- Los programas acceden al hardware a través de llamadas al sistema o funciones de biblioteca.
Cómo funcionan los contenedores
A continuación, explicaremos los contenedores. Puede que te estés preguntando, “¿Por qué contenedores?” después de explicar el núcleo. Esto se debe a que entender cómo funcionan los contenedores es un buen tema para comprender la compatibilidad del núcleo.
Estructura de los contenedores
El siguiente diagrama compara la virtualización basada en hipervisor y basada en contenedores: Una máquina virtual tiene un sistema operativo invitado y un núcleo, mientras que un contenedor solo contiene aplicaciones y bibliotecas, pero no núcleo.
Figura 9. Diferencia entre el tipo hipervisor y el tipo contenedor
La razón por la que no se requiere un núcleo en un contenedor es porque usa el núcleo en el sistema operativo anfitrión. Aunque los contenedores usan características de Linux como cgroups y Namespace para aislar los contenedores entre sí, son meramente procesos que se ejecutan en el sistema operativo anfitrión. Mira el siguiente diagrama. Un contenedor se ejecutará si contiene las bibliotecas y programas necesarios para ejecutar una aplicación.
Figura 10. Cómo funcionan los contenedores
Compatibilidad del núcleo Linux
Hay algo importante aquí.
Funcionará incluso si el sistema operativo en el que se creó la imagen del contenedor es una versión de Linux diferente del sistema operativo anfitrión.
Por ejemplo, supongamos que el sistema operativo anfitrión en el que se ejecuta el motor del contenedor es Ubuntu Server 22.04 LTS. En este caso, incluso si la imagen del contenedor se creó con Oracle Linux 9, funcionará siempre que se incluyan las bibliotecas y binarios necesarios. Aunque ambos deben ser Linux, pueden funcionar incluso si las versiones del núcleo Linux son ligeramente diferentes.
Sin embargo, esto es una cuestión de si técnicamente funciona, y no tiene nada que ver con si el proveedor ofrece soporte técnico o no.
Figura 11. Compatibilidad del núcleo Linux
Permíteme explicarlo con un poco más de detalle. Mira la Figura 12 a continuación. La interfaz entre las aplicaciones y el núcleo en las llamadas al sistema de Linux se llama Interfaz Binaria de Aplicación (ABI). El núcleo Linux se desarrolla considerando la compatibilidad para que las llamadas al sistema que existen desde versiones anteriores puedan ser llamadas con las mismas especificaciones. Por lo tanto, incluso si la versión del núcleo Linux es ligeramente diferente, las aplicaciones funcionarán de la misma manera.
Figura 12. Manteniendo la compatibilidad a través de la Interfaz Binaria de Aplicación
Interfaz Binaria de Aplicación (ABI)
La ABI es una definición de interfaz, específicamente el nombre de la llamada al sistema, el tipo de datos de los argumentos, el número de argumentos, el tipo de datos del valor devuelto y el valor, etc. El núcleo Linux se desarrolla para que estos no cambien. Si la ABI no cambia, no habrá errores al llamar a una llamada al sistema.
Sin embargo, si la versión del núcleo es diferente, la implementación interna de la llamada al sistema puede ser diferente. Sin embargo, la llamada al sistema es una instrucción primitiva al hardware, como “escribir datos en el disco” o “asignar memoria.” Por lo tanto, el comportamiento externo también se hace igual. Así es como se mantiene la compatibilidad.
Figura 13. Compatibilidad mantenida por la ABI
Incompatibilidades a tener en cuenta
Por otro lado, ¿de qué incompatibilidades deberías tener cuidado? Mira la Figura 14 a continuación. Estos son módulos del núcleo como controladores de dispositivos. Incluso si los números de versión del núcleo coinciden, podrían no funcionar si los números de lanzamiento al final son diferentes. Algunos módulos del núcleo pueden absorber ligeras diferencias en los números de lanzamiento, pero se recomienda recompilar.
Aunque no tiene nada que ver con el núcleo, una cosa de la que hay que tener cuidado cuando se trata de la compatibilidad de aplicaciones son las bibliotecas utilizadas en lenguajes, frameworks, etc. Las bibliotecas a menudo se actualizan con frecuencia, y es común que haya restricciones como la biblioteca XXX 2.0 o superior.
Figura 14. Incompatibilidad de módulos del núcleo
Comparando UEK y RHCK
Ahora que hemos cubierto los fundamentos, finalmente podemos llegar al tema principal de comparación: compatibilidad y características.
Compatibilidad con RHCK
Esto trata sobre la compatibilidad entre UEK y RHCK. Si has leído hasta aquí, probablemente ya lo sepas. UEK está desarrollado para mantener la compatibilidad ABI con RHCK. Por lo tanto, si es una aplicación normal que se ejecuta en modo usuario, es compatible.
Sin embargo, hay algunas cosas a tener en cuenta.
Soporte para productos de software comercial
El primer punto es si el producto de software comercial está soportado o no. Incluso si un producto de software comercial soporta Oracle Linux, puede soportar RHCK pero no UEK. De hecho, las aplicaciones que se ejecutan en modo usuario generalmente funcionan sin problemas, pero si quieres priorizar la política de soporte del proveedor, usa RHCK.
Un ejemplo de software comercial que requiere atención a la compatibilidad son los productos antivirus. Algunos productos antivirus se ejecutan como módulos del núcleo, por lo que en ese caso, necesitas verificar que sean compatibles.
No hay una amplia selección de software japonés, pero puedes verificar la compatibilidad de Oracle Linux en el catálogo ISV de Oracle Linux.
Al usar un servidor fabricado por un fabricante conocido
Lo más importante a notar es que Oracle Linux está incluido en la lista de hardware soportado. Si no está soportado por el fabricante, hay una alta probabilidad de que no puedan ayudarte si surge algún problema.
Además, debido a que las máquinas servidor están equipadas con hardware especial como controladores RAID y NICs, los fabricantes pueden proporcionar sus propios controladores de dispositivos. Si los controladores no están soportados, puede que no puedas usarlos.
Verifica la página web del fabricante o la Lista de Certificación de Hardware de Oracle Linux para información de soporte, que también incluye información sobre el soporte de RHCK y UEK.
Diferencias de características
Es difícil generalizar sobre las diferencias en las características, porque varían según la versión del núcleo, pero en general, UEK se basa en un núcleo principal más nuevo, por lo que tiene mejor rendimiento y más características.
Por ejemplo, en Oracle Linux 9, la versión base de UEK7 es 5.15.0, y la versión base de RHCK es 5.14.0. No hay mucha diferencia en este punto. Sin embargo, como se muestra en la siguiente tabla, los UEK cambian incluso dentro de la misma versión principal. En unos pocos años, se lanzará UEK8 para Oracle Linux 9, y la diferencia en las versiones del núcleo se ampliará.
Versión de Linux | UEK4 | UEK5 | UEK6 | UEK7 |
---|---|---|---|---|
Oracle Linux 9 | × | × | × | ○ |
Oracle Linux 8 | × | × | ○ | ○ |
Oracle Linux 7 | ○ | ○ | ○ | × |
Características conocidas exclusivas de UEK incluyen ocfs2 y btfs. Hay otras, pero para detalles, por favor consulta “Nuevas Características y Cambios” en las “Notas de Lanzamiento del Núcleo Empresarial Irrompible“.
Figura 15. Notas de Lanzamiento del Núcleo Empresarial Irrompible Lanzamiento 7

Resumen: ¿Cuándo usar UEK o RHCK?
El UEK está diseñado para cargas de trabajo a gran escala de Oracle Database y Oracle Linux KVM, y se basa en un núcleo más nuevo, lo que significa que a menudo ofrece mejor rendimiento y características.
Sin embargo, UEK no es una necesidad absoluta. Creo que deberías usarlos según la situación y el propósito. En los siguientes casos 1 y 2, deberías considerar usar RHCK. Lo importante es entender la diferencia entre UEK y RHCK y usarlos apropiadamente. También presentaré una tabla que resume lo que he explicado hasta ahora.
- Si estás usando un servidor físico y el fabricante solo soporta RHCK
, usa RHCK. - Si estás usando software comercial y el proveedor solo soporta RHCK
, es mejor usar RHCK. Sin embargo, si lo estás usando en tu propio sistema y puedes tolerar los riesgos, UEK también es una opción.
Ventajas y desventajas de UEK frente a RHCK
Ítem | Mérito | Desventajas |
---|---|---|
Funciones y Rendimiento | Dependiendo de qué versiones de UEK y RHCK estés comparando, es probable que el UEK tenga mejores características y rendimiento porque usa un núcleo principal más nuevo, y también puede tener optimizaciones para Oracle Database. | |
Compatibilidad de aplicaciones que se ejecutan en modo usuario | Compatible | En el caso de productos empaquetados comerciales, el soporte puede no estar disponible dependiendo de la política de soporte del proveedor. |
Módulos del núcleo que se ejecutan en modo núcleo | Controladores de dispositivos, etc., que se proporcionan como código fuente probablemente sean compatibles | El software antivirus y los controladores de dispositivos que se ejecutan en modo núcleo generalmente no son compatibles. |
Otros | Servidores de fabricantes conocidos pueden soportar Oracle Linux (RHCK) pero no UEK. |