tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1184Shell 70Rust 62Markdown 501503 Definitions

⎇ 4190c7b43e5bd323a9b166340cfa16cd324ca2e4 scripts/harkaq/vm-abi-probe.c C · 35 lines · 1.5 KB History Who touched what raw

harkaq: el kernel de hammer ya trae Landlock — ABI 7 verificado BOOTEANDO (Fase 1 precond. 1) ee51e5d59 · sergio ·

1// vm-abi-probe — /init de un initramfs mínimo: le pregunta al KERNEL DE HAMMER por el ABI de
2// Landlock y apaga. (SDD 16 §3.2 / Fase 1 precondición 1.)
3//
4// Por qué existe: probar el `.config` NO basta — dice lo que se compiló, no lo que el kernel hace
5// al arrancar. Es la misma disciplina de §3.1 (el ABI se consulta por syscall, jamás por versión)
6// llevada a la verificación: el único que sabe si Landlock está vivo es el kernel vivo.
7//
8//   gcc -O1 -static -o init vm-abi-probe.c
9//   printf 'init\n' | cpio -o -H newc | gzip > initramfs.cpio.gz
10//   qemu-system-x86_64 -kernel <bzImage> -initrd initramfs.cpio.gz \
11//       -append "console=ttyS0 rdinit=/init quiet" -nographic -m 512 -no-reboot
12//
13// Resultado con el kernel 6.16.12 de hammer + SECURITY_LANDLOCK (2026-07-15): ABI = 7 ⇒ audit de
14// denegaciones ⇒ harkaq corre DENTRO de hammer, no sólo en el laptop y la granja.
15#define _GNU_SOURCE
16#include <stdio.h>
17#include <unistd.h>
18#include <sys/syscall.h>
19#include <sys/reboot.h>
20#include <errno.h>
21int main(void) {
22    long abi = syscall(444, NULL, 0, 1);  // landlock_create_ruleset(NULL,0,VERSION)
23    printf("\n\n===== HARKAQ EN EL KERNEL DE HAMMER =====\n");
24    if (abi > 0) {
25        printf("LANDLOCK ABI = %ld\n", abi);
26        printf("audit de denegaciones (>=7): %s\n", abi >= 7 ? "SI" : "NO");
27    } else {
28        printf("LANDLOCK NO DISPONIBLE (errno=%d)\n", errno);
29    }
30    printf("=========================================\n\n");
31    fflush(stdout);
32    sleep(1);
33    reboot(RB_POWER_OFF);
34    return 0;
35}