⌘ REFERENCIA · 63 elementos
Cheatsheet de Kernel de Linux
Las APIs, comandos y herramientas del kernel en un solo sitio. Busca por función o por lo que quieres hacer.
🧩 Módulos (LKM) 6
Puntos de entrada/salida del módulomodule_init(fn) / module_exit(fn)
Log del kernel (ver con dmesg)printk(KERN_INFO ...) · pr_info()
Obligatorio (si no, tainted)MODULE_LICENSE("GPL")
Parámetro configurable (/sys)module_param(x, int, 0644)
Cargar / descargar módulosinsmod / rmmod / modprobe
Inspeccionar módulos y logslsmod · modinfo · dmesg
🧠 Memoria 7
Reserva pequeña, físicamente contiguakmalloc(n, GFP_KERNEL) / kfree
Reserva puesta a cerokzalloc / kcalloc
Puede dormir vs contexto atómicoGFP_KERNEL vs GFP_ATOMIC
Páginas del buddy allocatoralloc_pages(gfp, order)
Grande, virtualmente contiguovmalloc / vfree
Cache de objetos (slab)kmem_cache_create/alloc/free
Memoria gestionada (auto-free)devm_kmalloc(dev, ...)
🔒 Concurrencia 6
Spinlock (no duerme)spin_lock / spin_unlock
Spinlock seguro ante IRQspin_lock_irqsave(&l, flags)
Lock que puede dormirmutex_lock / mutex_unlock
Operaciones atómicasatomic_t · atomic_inc/dec
RCU: lecturas lock-freercu_read_lock · synchronize_rcu
Barreras y accesos ordenadosREAD_ONCE / WRITE_ONCE · smp_mb
🧱 Estructuras y macros 5
Del campo al struct contenedorcontainer_of(ptr, tipo, campo)
Listas intrusivasLIST_HEAD · list_add · list_for_each_entry
Errores codificados en punterosERR_PTR / PTR_ERR / IS_ERR
Pistas al predictor de saltoslikely() / unlikely()
Fallar la compilación si condBUILD_BUG_ON(cond)
📟 Drivers y dispositivos 7
Tabla open/read/write/ioctlstruct file_operations
Registrar char devicealloc_chrdev_region · cdev_add
Cruzar la frontera con userspacecopy_to_user / copy_from_user
Driver de plataforma (device tree)struct platform_driver · probe/remove
Driver PCIstruct pci_driver · pci_enable_device
Manejador de interrupción (moderno)request_threaded_irq(...)
Diferir trabajo a un workqueueINIT_WORK · schedule_work
🗄️ VFS y block 5
Los cuatro objetos del VFSsuper_block · inode · dentry · file
Registrar un sistema de archivosregister_filesystem · mount
Unidad de E/S de bloquesstruct bio · submit_bio
Driver de bloques multi-colablk_mq_ops · queue_rq
Caché de archivos en RAMaddress_space · page cache
🌐 Red e I/O async 6
Un paquete de redstruct sk_buff
Un interfaz de redstruct net_device · netdev_ops
E/S multiplexada O(1)epoll_create1 / epoll_ctl / epoll_wait
E/S por anillos (SQ/CQ)io_uring_setup · io_uring_enter
liburing (completion-based)io_uring_prep_read · io_uring_submit
Procesar paquetes en el driverXDP + eBPF
🔍 Depuración y trazado 6
Ver los mensajes del kerneldmesg · /var/log/kern.log
Trazar funciones y eventos/sys/kernel/tracing (ftrace)
Perfilar el kernelperf record / report / stat
Observabilidad con eBPF (one-liners)bpftrace -e ...
Detectar corrupción de memoriaCONFIG_KASAN
Detectar deadlockslockdep · CONFIG_PROVE_LOCKING
🔧 Build, config y QEMU 6
Configurar el kernel (y/m/n)make menuconfig · .config
Compilar la imagen y módulosmake -j$(nproc)
Makefile de módulo out-of-treeobj-m += mod.o · M=$(PWD)
Arrancar en VM (seguro)qemu-system-x86_64 -kernel bzImage
Depurar el kernel con gdbqemu ... -s -S · gdb vmlinux
Estilo (checkpatch) y sparsescripts/checkpatch.pl · make C=1
🦀 Rust for Linux 5
Declarar un módulo en Rustmodule! { ... }
El tipo del módulo, con initimpl kernel::Module
Errores sin panics ni -errnoResult<T> · ?
Concurrencia segura por tiposArc · Mutex (crate kernel)
Data races imposibles en compilaciónSend / Sync
✉️ Contribuir 4
Generar el parchegit format-patch -1
A quién y a qué lista enviarscripts/get_maintainer.pl
Enviar el parche (texto plano)git send-email
Los tags obligatoriosSigned-off-by: · Fixes: · Cc: stable