Arquitectura del sistema Linux¶
Este módulo explica cómo funciona Linux internamente, desde que enciendes la máquina hasta que tienes un sistema operativo completamente funcional.
Entender esto es clave para hacer troubleshooting.
Visión general¶
Un sistema Linux se divide en dos grandes partes:
Kernel space¶
- Núcleo del sistema
- Acceso directo al hardware
- Máximo privilegio
User space¶
- Programas y procesos del usuario
- Shell, servicios, aplicaciones
Ambos se comunican mediante syscalls (system calls)
Componentes principales¶
Kernel¶
El núcleo del sistema operativo. Se encarga de:
- Gestión de CPU (scheduler)
- Gestión de memoria
- Control de dispositivos (drivers)
- Sistema de archivos
- Red
User space¶
Incluye todo lo que ejecutas:
- Shell (bash)
- Comandos (ls, cp, etc.)
- Servicios (nginx, ssh)
- Aplicaciones
System calls¶
Son la interfaz entre user space y kernel.
Ejemplo:
- Cuando haces
ls, el sistema usa syscalls para leer el filesystem
Proceso de arranque (Boot process)¶
El arranque de Linux sigue esta secuencia:
1. BIOS / UEFI¶
- Inicializa el hardware
- Busca un dispositivo de arranque
2. Bootloader (GRUB)¶
- Carga el kernel en memoria
- Permite elegir sistema operativo
- Puede pasar parámetros al kernel
Archivo clave:
/boot/grub/grub.cfg
3. Kernel¶
- Se descomprime
- Inicializa hardware
- Monta el sistema de archivos raíz (
/) - Lanza el primer proceso
4. Init system (systemd)¶
El primer proceso del sistema:
PID 1
Responsabilidades:
- Arrancar servicios
- Gestionar dependencias
- Mantener el sistema funcionando
Hoy en día, el estándar es systemd
Init systems¶
sysvinit (antiguo)¶
- Scripts en
/etc/init.d - Arranque secuencial
systemd (actual)¶
- Arranque paralelo
- Más rápido y controlable
- Usa unidades (units)
systemd (conceptos básicos)¶
Tipos de unidades:
.service→ servicios.target→ estados del sistema.mount→ montajes.timer→ tareas programadas
Comandos clave:
systemctl start nginx
systemctl stop nginx
systemctl status nginx
systemctl enable nginx
Procesos y jerarquía¶
Todos los procesos en Linux forman un árbol:
init (PID 1)
├─ sshd
├─ nginx
├─ bash
│ └─ vim
Cada proceso tiene:
- PID (Process ID)
- PPID (Parent Process ID)
Gestión de CPU (scheduler)¶
El kernel decide:
- Qué proceso se ejecuta
- Durante cuánto tiempo
Conceptos clave:
- Prioridad
- nice / renice
- multitarea
Gestión de memoria¶
Linux gestiona:
- RAM
- Swap (memoria en disco)
Conceptos:
- Memoria virtual
- Paginación
- OOM Killer (mata procesos si falta memoria)
Sistema de archivos¶
El kernel:
- Gestiona lectura/escritura
- Usa drivers de filesystem (ext4, xfs, etc.)
Todo se monta en:
/
Stack de red¶
El kernel también maneja:
- Interfaces de red
- TCP/IP
- Sockets
Herramientas como ping o ssh usan esto
Niveles de privilegio¶
- root (UID 0) → control total
- Usuarios normales → acceso limitado
El kernel impone seguridad entre procesos
Puntos críticos para sysadmins¶
Si falla el bootloader¶
→ el sistema no arranca
Si falla el kernel¶
→ kernel panic
Si falla systemd¶
→ servicios no arrancan
Si falla PID 1¶
→ sistema inutilizable
Ejercicios prácticos¶
Ver procesos en árbol¶
ps aux --forest
Ver PID 1¶
ps -p 1 -o pid,comm,args
Ver kernel¶
uname -a
Ver tiempo de arranque¶
systemd-analyze
Mentalidad¶
Cuando algo falla, piensa:
- ¿Es hardware?
- ¿Es kernel?
- ¿Es systemd?
- ¿Es un servicio?
Diagnosticar = entender la arquitectura
Resumen¶
- Linux se divide en kernel space y user space
- El kernel controla todo el sistema
- systemd gestiona servicios
- El boot sigue una secuencia clara
- Todo está interconectado
Siguiente paso¶
En el siguiente módulo entrarás en:
Sistema de archivos (filesystem.md)
Donde verás:
- Cómo está organizado Linux
- Qué significa cada directorio
- Cómo navegar el sistema correctamente