Todo es un archivo
El kernel se deja leer como si fuera una carpeta. Al terminar sabrás espiar cualquier proceso y dispositivo con cat y ls.
Primero, la idea completa
Mira el video entero o salta a la parte que quieras repasar. Después, cada idea tiene su propia escena para tocarla.
Pseudo sistemas de archivos
Un pseudo sistema de archivos no guarda nada en disco: expone interfaces del kernel con forma de archivos y carpetas. Cada vez que lees uno de esos archivos, el kernel genera el contenido en ese momento. Por eso se exploran con las herramientas de siempre: ls, cd y cat.
Exponen, por ejemplo, información de los procesos, la forma de hablar con dispositivos como el teclado y utilidades como dispositivos especiales. Los tres principales son /proc, /sys y /dev.
procfs: /proc
Linux heredó /proc de Unix. Su función original era publicar la información de los procesos para que la leyeran herramientas como ps y free: ps no tiene magia, lee /proc. Es de solo lectura y tiene pocas reglas de estructura, pero casi siempre hay:
- Una carpeta
/proc/IDpor cada proceso, donde ID es su PID. - Información general: montajes, red, memoria (
/proc/meminfo), versión del kernel (/proc/version) y tiempo encendido (/proc/uptime).
Elige un proceso y una entrada de su carpeta en /proc. Es lo mismo que verías con cat o ls.
sysfs: /sys
/sys es propio de Linux: una forma estructurada en la que el kernel expone información, sobre todo de dispositivos, con una organización estándar. Parte de lo que hay en /sys también está en /proc, pero hay cosas que solo están en /proc, como la información de memoria. La raíz de /sys está bien documentada; las carpetas de adentro no siempre.
Recorre la raíz de /sys. Toca una carpeta para ver qué guarda y un ejemplo de lo que hay adentro.
devfs: /dev
En /dev están los archivos especiales de los dispositivos. Hay de tres clases:
- De bloques (
benls -l): manejan los datos en bloques, como los discos./dev/sdaes un disco y/dev/sda1,/dev/sda2sus particiones. - De caracteres (
c): manejan los datos carácter por carácter, como una terminal, un teclado o un ratón. - Especiales: generan datos o permiten manipularlos, como
/dev/null(todo lo que se escribe desaparece) o/dev/random(números aleatorios).
ampliación Los dos números que muestra ls -l en lugar del tamaño son el número mayor (qué controlador lo atiende) y el menor (cuál de sus dispositivos).
Escribe o lee en un dispositivo y mira qué hace el kernel con los datos.
Otros sistemas de archivos en memoria
tmpfs: de propósito general, guarda los archivos en las cachés del kernel. Es rápido pero no persiste: al apagar se pierde todo. Se usa en/tmpy/run.debugfs: para depurar; suele montarse conmount -t debugfs none /sys/kernel/debug.pipefs: el que hace posibles las tuberías (|).sockfs: hace que los sockets de red parezcan archivos, entre las llamadas al sistema y los sockets.swapfs: se usa para el intercambio a disco; no se puede montar.loop: permite usar un archivo como si fuera un dispositivo de bloques.
Con mount se ve cada sistema de archivos montado y su tipo.
Antes de leer la respuesta
Tu turno: lee el kernel
En esta máquina corre un programa en Python con PID 1234. Sin usar ps, descubre qué ejecuta y qué archivos tiene abiertos. Luego identifica los tipos de dispositivo y encuentra la dirección física de la tarjeta de red.
Comprueba lo que entendiste
Cada respuesta incorrecta explica por qué parece correcta y en qué falla.