El desarrollador Farid Zakaria anuncia una colaboración con el mantenedor de VFS Christian Brauner que incorporará al kernel Linux un mecanismo programable, basado en eBPF y binfmt_misc, para resolver dinámicamente el intérprete de los binarios. El objetivo es habilitar el soporte de $ORIGIN (la ruta del propio ejecutable) en PT_INTERP y en los shebangs (#!), lo que durante años ha supuesto un obstáculo para conseguir binarios reubicables en Nix y, por extensión, en sistemas como Buck o Bazel.
La solución evita parchear el VFS directamente y aprovecha un programa eBPF que identifica el binario (por ejemplo, cualquier ELF) y calcula la ruta de su cargador a partir de su propia ubicación, para después inyectarla como intérprete mediante bpf_binprm_set_interp. Una vez registrada la struct_ops en /sys/fs/bpf, basta con una línea en /proc/sys/fs/binfmt_misc/register para que el kernel invoque el handler en cada ejecución. El mismo enfoque puede sustituir al script tradicional de registro de QEMU en binfmt_misc y permitir incluso shebangs del tipo #!$ORIGIN/bin/ld.so, analizando los primeros 256 bytes del archivo.
El acuerdo pendiente es que la entrega clásica de binfmt_misc convertía al intérprete en el proceso principal, ocultando el binario original en argv[0], /proc//cmdline y /proc/self/exe, algo problemático cuando el intérprete es un ld.so. Para cerrar esa brecha, Brauner ha enviado una nueva serie de parches que añade modos de dispatch adicionales; entre ellos, el flag L ejecuta el binario como imagen principal y solo sustituye el campo PT_INTERP, funcionando como un simple override sin alterar la identidad del proceso. La intención de Zakaria es esperar a que estos cambios lleguen a -next y a una versión etiquetada del kernel para enviar después un módulo de NixOS que registre el soporte de $ORIGIN en el arranque, gateado por un nuevo segmento PT_INTERP_NIX que permita la opt-in sin romper la compatibilidad.
