wandres.dev
C del kernel, tooling y Rust for Linux

Domina Kernel de Linux
hasta nivel dios

El corazón del sistema operativo: Kbuild, módulos, drivers, RCU, memoria del kernel, depuración y el nuevo Rust como lenguaje central.

La ruta

58 niveles, de novato a dios

Cada nivel construye sobre el anterior. Sin saltos, sin huecos.

Ontología Nivel 0 · El mapa del kernel

La visión aérea del kernel: subsistemas, cómo se relacionan, y el mapa mental de todo lo que vas a dominar.

Mapa mentalSubsistemas

Qué es un kernel Nivel 1 · Anillos, monolítico vs micro

El rol del kernel, espacio usuario vs kernel, la cadena de arranque y por qué Linux domina.

AnillosArranqueLinux

El C del kernel Nivel 2 · Freestanding, sin libc

GNU C, freestanding, sin libc, y el arsenal de macros (container_of) que define el kernel.

GNU Ccontainer_offreestanding

El árbol de fuentes Nivel 3 · Estructura y git

Navegar millones de líneas: estructura de directorios y usar git para entender el porqué.

Estructuragit blameNavegación

Configurar (Kconfig) Nivel 4 · menuconfig, y/m/n

El sistema de configuración, escribir tus propias entradas Kconfig, y depends on vs select.

Kconfigmenuconfigy/m/n

Compilar (Kbuild) Nivel 5 · Imagen, módulos, obj-m

El sistema de build del kernel y el Makefile de tu módulo out-of-tree.

Kbuildobj-mmake

Laboratorio (QEMU) Nivel 6 · VM segura y gdb

Montar un entorno seguro con QEMU y depurar el kernel en vivo con gdb.

QEMUgdbSeguro

Tu primer módulo Nivel 7 · LKM y ciclo de vida

module_init/exit, printk, y las herramientas del ciclo de vida de un módulo.

LKMprintkinsmod

Parámetros y /sys Nivel 8 · module_param, sysfs, debugfs

Exponer y controlar tu módulo como archivos: procfs, sysfs y debugfs.

module_paramsysfsdebugfs

Estilo y calidad Nivel 9 · coding style, checkpatch

El estilo estricto del kernel y las herramientas (checkpatch, sparse) que lo verifican.

coding stylecheckpatchsparse

Estructuras de datos Nivel 10 · list_head, rbtree, xarray

Las listas intrusivas, árboles rojo-negro, hashes y xarray que el kernel usa por todas partes.

list_headrbtreexarray

Errores del kernel Nivel 11 · ERR_PTR, goto, -errno

ERR_PTR, el patrón goto de limpieza en cascada, y elegir bien los códigos de error.

ERR_PTRgoto-errno

La frontera con el usuario Nivel 12 · copy_*_user, capabilities

copy_to/from_user, por qué nunca confiar en el usuario, y el sistema de capabilities.

copy_to_usercapabilitiesSeguridad

Char devices Nivel 13 · file_operations, read/write

Registrar un char device y darle vida con open, read, write e ioctl.

file_operations/devioctl

Concurrencia y atomics Nivel 14 · SMP, preempción, atomic_t

Por qué el kernel es concurrente por defecto, y las operaciones atómicas.

SMPatomic_tpreempción

Spinlocks Nivel 15 · spin_lock, irqsave, reglas

La sincronización que no duerme: spinlocks, irqsave, y las reglas de oro.

spinlockirqsavedeadlock

Locks que duermen Nivel 16 · mutex, rwsem, completion

Mutex, semáforos, rwsem y completions: sincronización en contexto que puede dormir.

mutexrwsemcompletion

RCU Nivel 17 · Read-Copy-Update

Lecturas sin bloqueo que escalan a miles de núcleos: grace periods, flavors y listas RCU.

RCUgrace periodlock-free

Memoria compartida y barreras Nivel 18 · per-CPU, seqlock, memory model

per-CPU, seqlocks, el modelo de memoria del kernel y las barreras (smp_mb, acquire/release).

per-CPUseqlockbarreras

lockdep y deadlocks Nivel 19 · depurar el locking

Cómo el kernel detecta deadlocks automáticamente y cómo depurar problemas de sincronización.

lockdepdeadlockdebug

El page allocator Nivel 20 · buddy, órdenes, GFP

El asignador de páginas (buddy system), las órdenes de páginas y los flags GFP.

buddypáginasGFP

slab y slub Nivel 21 · kmalloc, caches de objetos

kmalloc/kfree por dentro: el slab allocator, slub, y crear tus propios caches (kmem_cache).

slabslubkmem_cache

vmalloc y direcciones del kernel Nivel 22 · el espacio virtual del kernel

vmalloc vs kmalloc, y el mapa del espacio de direcciones virtual del kernel.

vmallocaddress spacecontiguo

mmap y memoria de procesos Nivel 23 · VMA, page faults

Cómo el kernel gestiona la memoria virtual de los procesos: VMA, page faults y demand paging.

mmapVMApage fault

El page cache Nivel 24 · address_space, E/S

Cómo el kernel cachea archivos en memoria y realiza la E/S a través del page cache.

page cacheaddress_spacewriteback

Reclaim y presión de memoria Nivel 25 · LRU, kswapd, OOM

Cómo el kernel recupera memoria bajo presión: LRU, kswapd, swap y el OOM killer.

reclaimkswapdOOM

NUMA y per-CPU Nivel 26 · localidad y memoria por núcleo

Memoria no uniforme (NUMA), localidad, y estructuras de datos por CPU.

NUMAper-CPUlocalidad

DMA e IOMMU Nivel 27 · transferencias a dispositivos

DMA coherente y streaming, direcciones de bus, y el IOMMU que protege la memoria.

DMAIOMMUcoherencia

El device model Nivel 28 · kobject, bus/class/driver

El modelo de dispositivos unificado: kobject, sysfs, y la tríada bus/class/driver.

device modelkobjectsysfs

Platform y device tree Nivel 29 · platform_driver, DT, probe

Dispositivos sin bus de descubrimiento: platform drivers, device tree y el ciclo probe/remove.

platformdevice treeprobe

PCI Nivel 30 · config space, BAR, MSI

El bus PCI/PCIe a fondo: espacio de configuración, BARs, e interrupciones MSI/MSI-X.

PCIBARMSI

USB Nivel 31 · URB, endpoints, drivers

La pila USB: endpoints, URBs, y escribir un driver USB.

USBURBendpoints

I2C, SPI y regmap Nivel 32 · buses lentos, regmap

Los buses de dispositivos embebidos (I2C, SPI) y la abstracción regmap para registros.

I2CSPIregmap

GPIO e IIO Nivel 33 · pines, sensores, IRQ

Control de pines (GPIO), el subsistema de sensores (IIO), y mapear interrupciones de dispositivo.

GPIOIIOIRQ

Interrupciones a fondo Nivel 34 · threaded IRQ, softirq, workqueue

Manejar interrupciones, el trabajo diferido (softirq, tasklet, workqueue) y threaded IRQ.

IRQsoftirqworkqueue

El block layer Nivel 35 · bio, request, blk-mq

La capa de bloques: bio, request queues, y la arquitectura multi-cola blk-mq.

bioblk-mqrequest

I/O schedulers y block drivers Nivel 36 · mq-deadline, un block driver

Los planificadores de E/S (mq-deadline, BFQ, Kyber) y escribir un driver de bloques.

I/O schedBFQblock driver

VFS a fondo Nivel 37 · superblock, inode, dentry, file

El Virtual File System por dentro: sus cuatro objetos y cómo abstrae cualquier sistema de archivos.

VFSinodedentry

Escribir un filesystem Nivel 38 · libfs, un FS en memoria

Registrar un sistema de archivos y construir uno mínimo en memoria con libfs.

filesystemlibfsmount

E/S multiplexada Nivel 39 · select, poll, epoll

La E/S basada en readiness: select, poll, y epoll a fondo (el motor de la red de alto rendimiento).

epollpollreadiness

io_uring Nivel 40 · rings SQ/CQ

La interfaz de E/S asíncrona por anillos: submission/completion queues y el modelo de completado.

io_uringSQ/CQasync

io_uring avanzado Nivel 41 · buffers registrados, liburing

Buffers y descriptores registrados, modos de sondeo, multishot y liburing.

io_uringregisteredliburing

Zero-copy y mmap de drivers Nivel 42 · DMA a userspace

Exponer memoria de dispositivo a userspace con mmap y técnicas de copia cero.

mmapzero-copyDMA

La pila de red Nivel 43 · sk_buff, net_device

El corazón del networking: sk_buff, net_device, y el viaje de un paquete por el kernel.

sk_buffnet_devicepaquetes

NAPI, sockets y XDP Nivel 44 · recepción, protocolos, fast path

La recepción eficiente (NAPI), la API de sockets por dentro, y el fast path con XDP/eBPF.

NAPIsocketsXDP

Tiempo Nivel 45 · jiffies, hrtimers, NO_HZ

Cómo el kernel mide y programa el tiempo: jiffies, hrtimers, clocksource y el modo tickless.

jiffieshrtimerNO_HZ

El scheduler (EEVDF) Nivel 46 · task_struct, context switch

El planificador moderno EEVDF, el task_struct, y la mecánica del cambio de contexto.

EEVDFtask_structcontext switch

SMP, RT y cgroups Nivel 47 · balanceo, tiempo real, recursos

Balanceo de carga entre núcleos, scheduling de tiempo real y deadline, y control de recursos con cgroups.

load balanceRTcgroups

ftrace y tracepoints Nivel 48 · seguir la ejecución

El function tracer, los tracepoints estáticos, y la infraestructura de trazado del kernel.

ftracetracepointstrace

kprobes y perf Nivel 49 · sondas dinámicas, perfilado

Instrumentar cualquier función en caliente con kprobes, y perfilar el kernel con perf.

kprobesperfprofiling

eBPF Nivel 50 · programas en el kernel

Ejecutar programas seguros dentro del kernel: el verifier, los mapas, y sus mil usos.

eBPFverifiermaps

Sanitizers y depuración Nivel 51 · KASAN, KCSAN, kgdb

Los sanitizers del kernel (KASAN, KCSAN, KMSAN), kmemleak, y depurar oops y panics.

KASANKCSANkgdb

Aislamiento y seguridad Nivel 52 · namespaces, cgroups, LSM

La base de los contenedores (namespaces, cgroups) y los módulos de seguridad (seccomp, LSM/SELinux).

namespacesseccompLSM

Virtualización Nivel 53 · KVM, virtio

Cómo el kernel es un hipervisor: KVM, y los drivers paravirtualizados virtio.

KVMvirtiohypervisor

Rust for Linux Nivel 54 · el modelo, abstracciones

Por qué Rust entró en el kernel, cómo conviven Rust y C, y las abstracciones seguras.

Rustabstraccionesseguro

Un driver en Rust Nivel 55 · un driver real y seguro

Escribir un driver completo en Rust for Linux, aprovechando su seguridad de memoria.

Rustdrivermemory-safe

Contribuir upstream Nivel 56 · el proceso de parches

Preparar y enviar un parche: git format-patch, send-email, las listas y la revisión.

parchessend-emailreview

PhD: mantener y el futuro Nivel 57 · ser maintainer, el futuro

El rol de mantenedor, sostener un subsistema, y hacia dónde va el kernel.

maintainerfuturocomunidad
247lecciones
58niveles
0→∞de cero a dios
Qué vas a dominar

Todo lo que hace a un experto

🐧

El C del kernel

GNU C freestanding, sin libc, con su propio universo de APIs y reglas.

🔧

Kbuild y módulos

Configurar y compilar el kernel, y escribir módulos cargables (LKM).

📟

Drivers y char devices

file_operations, el device model y hablar con el hardware.

🔒

Concurrencia extrema

Spinlocks, mutexes, RCU y las barreras de memoria que escalan a miles de núcleos.

🧠

Memoria del kernel

kmalloc, el slab allocator, páginas y memoria física.

Interrupciones

IRQ handlers, softirqs, tasklets, workqueues y el planificador.

🐞

Depuración

ftrace, KASAN, lockdep, kgdb: cazar bugs en el corazón del sistema.

🦀

Rust for Linux

El nuevo lenguaje central del kernel: drivers seguros en Rust.

LKMKbuildRCUkmallocIRQftraceRustQEMU

¿Listo para dominar Kernel de Linux?

Empieza por los fundamentos y sube nivel a nivel hasta el dominio total.

Comenzar el camino →