Linux / Cómo identificar la distribución, su versión y el kernel
Es recomendable primero verificar la distribución de Linux y la versión que está utilizando actualmente con cat /etc/os-release. El PRETTY_NAME de este archivo muestra el nombre completo legible por humanos, y ID y VERSION_ID muestran identificadores de distribución y versiones adecuados para usar en scripts.
hostnamectl es conveniente cuando se desea verificar distribución, kernel y arquitectura en una sola pantalla, y uname -r se utiliza para verificar la versión del kernel de Linux que se está ejecutando actualmente, no la versión de la distribución. La información de los tres tiene significados diferentes, por lo que debe distinguirse según el propósito.
El primer comando a ejecutar
Si solo desea verificar rápidamente el nombre y la versión de la distribución, el siguiente comando es suficiente.
cat /etc/os-release
Si solo desea ver la información necesaria de forma sencilla, puede imprimirla así.
grep -E '^(PRETTY_NAME|ID|VERSION_ID|ID_LIKE)=' /etc/os-release
Para comprobar la distribución, el kernel y la arquitectura de la CPU juntos, ejecute los siguientes comandos en orden.
cat /etc/os-release
hostnamectl
uname -r
uname -m
¿Qué es una distribución de Linux?
Linux, en términos estrictos, se refiere al kernel, que es el núcleo del sistema operativo. Una distribución de Linux (Linux distribution) es un sistema operativo real que combina el kernel de Linux con herramientas del sistema, bibliotecas, gestores de paquetes, programas de instalación y configuraciones predeterminadas para que pueda ser utilizado.
Ubuntu, Debian, Fedora, Rocky Linux, openSUSE y Arch Linux usan todos el kernel de Linux, pero los formatos de paquetes, las políticas de actualización y los comandos de administración son diferentes. Por lo tanto, antes de aplicar guías de instalación de programas o configuración de servidores, es necesario verificar la familia de la distribución y la versión.
| Principales familias | Distribuciones representativas | Formato de paquetes · herramientas | Valores a verificar |
|---|---|---|---|
| Familia Debian | Debian, Ubuntu, Linux Mint | DEB, APT | ID, ID_LIKE=debian |
| Familia Red Hat | RHEL, Fedora, Rocky Linux, AlmaLinux | RPM, DNF | Valores de la familia rhel·fedora de ID, ID_LIKE |
| Familia SUSE | openSUSE, SUSE Linux Enterprise | RPM, Zypper | ID, ID_LIKE=suse |
| Familia Arch | Arch Linux, Manjaro | pkg.tar.zst, Pacman | ID, ID_LIKE=arch |
| Independiente | Alpine Linux, etc. | Depende de la distribución | ID y la documentación oficial |
ID_LIKE proporciona información complementaria que indica la familia superior similar a esa distribución. Puede no tener valor, por lo que al distinguir la distribución real se debe verificar primero ID, y cuando se necesite la familia compatible, es más seguro consultar ID_LIKE.
Comprobar la distribución y la versión en /etc/os-release
/etc/os-release proporciona información de identificación del sistema operativo en un formato similar a las variables de entorno CLAVE=VALOR. Según la documentación oficial de os-release de systemd, si existe /etc/os-release se utiliza este archivo primero, y si no existe se verifica /usr/lib/os-release.
Ver información completa
cat /etc/os-release
El siguiente es un ejemplo del formato de Ubuntu 24.04 LTS, no el resultado de examinar el equipo del lector. La versión y los campos disponibles varían entre distribuciones:
PRETTY_NAME="Ubuntu 24.04 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
Con el resultado anterior, se puede saber que la distribución es Ubuntu, la versión principal es 24.04 y pertenece a la familia Debian. La versión de parche o la indicación detallada pueden variar según el estado de actualización del sistema.
Significado de cada campo
| Campos | Significado | Uso principal |
|---|---|---|
PRETTY_NAME |
Nombre completo de la distribución legible para humanos | Visualización en pantalla y verificación manual |
NAME |
Nombre del sistema operativo sin incluir la versión | Nombre para explicación |
ID |
Identificador de distribución en minúsculas | Rama de distribución del script |
VERSION_ID |
Versión de distribución fácil de comparar por la máquina | Verificación de versión compatible |
ID_LIKE |
Serie de distribución superior compatible | Determinación de la serie según paquete/configuración |
VERSION_CODENAME |
Nombre en clave de la versión de distribución | Configuración del repositorio y verificación de documentos |
Una distribución de publicación continua puede omitir VERSION_ID; no significa que el archivo esté dañado. Trate este valor como una cadena de versión, no como un número decimal, y compárelo según las reglas de la distribución una vez identificado ID.
Verificación de la información del sistema de una sola vez con hostnamectl
En las distribuciones que usan systemd, con hostnamectl se puede ver el nombre del host, la distribución, el kernel y la arquitectura de la CPU en una sola pantalla.
hostnamectl
Los elementos que se deben verificar principalmente en la salida son los siguientes.
- Sistema operativo: nombre y versión de la distribución
- Kernel: la versión del kernel que se está ejecutando actualmente
- Arquitectura: arquitectura del sistema
- Virtualización: Entorno reconocido como máquina virtual o contenedor
hostnamectl es un comando de resumen fácil de ver, pero puede no estar presente en entornos de instalación mínima, algunos contenedores o distribuciones que no usan systemd. En estos entornos, se pueden usar /etc/os-release y uname.
La versión de la distribución y la versión del kernel son diferentes
uname informa sobre el kernel y la máquina tal como los presenta el entorno en ejecución; no identifica por sí solo una distribución como Ubuntu 24.04 o Rocky Linux 10. uname -m tampoco sustituye la arquitectura del gestor de paquetes: antes de elegir un binario, compruebe además la arquitectura y las bibliotecas del espacio de usuario.
uname -r
uname -m
uname -a
| Comando | Información a verificar | Ejemplo de uso |
|---|---|---|
uname -r |
Versión del kernel | Verificación de compatibilidad de controladores y módulos del kernel |
uname -m |
Arquitectura del hardware | Selección de paquetes para x86_64·aarch64 |
uname -a |
Mostrar información del kernel en una línea | Resumen del sistema para reportes de fallos |
Por ejemplo, se puede actualizar solo el kernel manteniendo la distribución, y aunque sea la misma versión de la distribución, los kernels en ejecución pueden ser diferentes. Si no se ha reiniciado después de actualizar el kernel, los resultados de uname -r pueden diferir del kernel más reciente instalado. La definición de cada opción se puede consultar en la documentación de uname de GNU Coreutils.
Otros métodos de verificación y manejo de entornos antiguos
Comando lsb_release
Si lsb_release está instalado, se pueden verificar el proveedor de la distribución, la descripción, la versión y el nombre en clave.
lsb_release -a
Sin embargo, no es un comando que esté incluido por defecto en todos los entornos de instalación mínima de las distribuciones. Se puede verificar primero su existencia con command -v lsb_release. La especificación lsb_release de Linux Standard Base describe el significado de cada elemento de salida.
Archivos de release por distribución
En sistemas antiguos que no tienen /etc/os-release, se pueden verificar los archivos por distribución como un medio auxiliar.
cat /etc/redhat-release
cat /etc/debian_version
cat /etc/alpine-release
Estos archivos varían según la existencia y el formato en cada distribución. En la automatización, en lugar de leer sumando ciegamente /etc/*release, es mejor priorizar /etc/os-release y verificar explícitamente solo los archivos de las distribuciones necesarias.
Identificación de la distribución en scripts de shell
En scripts de instalación o automatización operativa, es más confiable usar ID y VERSION_ID en lugar de PRETTY_NAME, que está destinado a ser leído por humanos.
if [ -r /etc/os-release ]; then
. /etc/os-release
printf 'distribution=%s\n' "$ID"
printf 'version=%s\n' "${VERSION_ID:-unknown}"
printf 'family=%s\n' "${ID_LIKE:-unknown}"
else
printf 'distribution=unknown\n'
uname -srm
fi
Guarde el bloque en identify-distro.sh y ejecútelo con bash identify-distro.sh en el sistema que desea identificar. El ejemplo mínimo consulta únicamente /etc/os-release. Si necesita el respaldo de /usr/lib/os-release, seleccione primero el archivo disponible y lea exclusivamente ese archivo; no combine sus campos. ${VERSION_ID:-unknown} utiliza unknown si la variable está vacía o no está definida en el shell. Lea mediante . únicamente el archivo de identificación confiable del sistema, no un archivo recibido de terceros.
Al dividir los comandos de instalación de paquetes según la distribución, primero se compara ID antes que la cadena de versión, y ID_LIKE se usa como condición auxiliar. Aun así, la configuración del repositorio y los nombres de los paquetes pueden variar según la distribución, por lo que no se debe asumir que todos los comandos son compatibles solo porque pertenecen a la misma familia.
Puntos a tener en cuenta en contenedores, WSL y chroot
Contenedor
/etc/os-release dentro de un contenedor generalmente representa la distribución del espacio de usuario de la imagen del contenedor, no del host. En cambio, uname -r puede mostrar información del kernel compartida con el host. Es normal que los resultados de ambos comandos parezcan de diferentes familias.
Windows Subsystem for Linux
En WSL (Windows Subsystem for Linux), /etc/os-release identifica la distribución instalada, por ejemplo Ubuntu o Debian. WSL 2 utiliza un kernel Linux en una máquina virtual administrada; WSL 1 emplea una capa de traducción. Por tanto, no interprete todos los resultados de uname como información del mismo tipo de entorno ni como versión de la distribución. Microsoft explica esta diferencia en su comparación de WSL 1 y WSL 2.
Entorno chroot
Dentro de chroot, /etc/os-release representa la distribución del sistema de archivos chroot, y uname representa el kernel compartido desde el sistema actual. En trabajos de recuperación o en un entorno de compilación cruzada de distribuciones, es necesario conocer esta diferencia para interpretar los resultados.
Preguntas frecuentes
¿Cuál es el comando más confiable para verificar la versión de Linux?
Si el objetivo es verificar la distribución y la versión, primero se usa cat /etc/os-release. La versión del kernel se verifica por separado con uname -r, y la arquitectura de la CPU con uname -m.
¿Es un problema si hostnamectl no existe o no se ejecuta?
No necesariamente es un problema. En entornos mínimos que no utilizan systemd o carecen de componentes necesarios, hostnamectl puede no estar disponible. Se puede verificar la información necesaria utilizando /etc/os-release y uname.
¿Cómo se diferencian CentOS, Rocky Linux y AlmaLinux?
Al verificar ID de /etc/os-release, se puede distinguir cada distribución. Aunque comparten parte de la gestión del mismo grupo, sus políticas de soporte y repositorios son diferentes, por lo que no se debe tratar como la misma distribución solo observando ID_LIKE.
¿x86_64 y aarch64 son versiones de distribución?
No. Estos dos valores representan la arquitectura del hardware. Incluso con la misma distribución y versión, pueden proporcionarse imágenes separadas para x86_64 y para aarch64, que pertenece a la serie ARM de 64 bits, por lo que al elegir programas o imágenes de instalación, se debe verificar juntos.




