gioser

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 1181Shell 82Rust 62Markdown 521515 Sutichaykuna

⎇ 071d7d55b26eea30a25acb4ec6fbe182f6f48ffb recipes/linux.toml TOML · 63 siq'ikuna · 3.8 KB Ñawpa willay ch'uya

kernel-from-source: bzImage BOOTEA + iterar config (fanotify, overlay subfeatures) 071d7d55b · sergio ·

1# Linux kernel 6.16.12 — frente kernel-from-source (soberanía del bootstrap).
2#
3# Hoy la VM del selfhost-verify bootea un kernel importado pinned (/boot/vmlinuz-linux del host). Esta
4# receta lo construye desde fuente con hammer: el último eslabón del bootstrap que no era hammer-built.
5# Misma versión que recipes/linux-headers.toml (6.16.12) ⇒ coherencia headers↔kernel.
6#
7# Criterio de éxito: el bzImage hammer-built bootea el builder de selfhost-verify y la corrida da
8# ✓ REPRODUCIBLE (KERNEL=<este bzImage> ./scripts/selfhost-verify.sh).
9#
10# Compilador: CC=gcc/HOSTCC=gcc (NO zig) — el kernel es el binario más grande del lab y zig 0.16
11# miscompila binarios grandes (lesson binutils/python/cmake/flex); el kernel se compila con la GNU
12# toolchain estándar (gcc + binutils as/ld del toolchain). No es input del 4/4 (es el kernel que
13# BOOTEA la VM, no algo que el 4/4 enlace), así que el compilador da igual mientras el kernel bootee.
14#
15# Config: defconfig x86_64 (base PC booteable en QEMU: 8250 serial, initrd, PCI) + ajustes monolíticos
16#   - E1000/OVERLAY_FS/USER_NS =y (built-in): el builder usa e1000 (vendoring) + overlay (sandbox bwrap)
17#     + user namespaces (bwrap). Built-in ⇒ sin inyección de .ko ni version-magic.
18#   - MODULE_SIG/DEBUG_INFO_BTF off: evitan firma de módulos y pahole (BTF), ausente del toolchain.
19#   - UNWINDER_FRAME_POINTER en vez de ORC: reduce objtool pero NO lo elimina — en x86_64 las
20#     mitigaciones (RETHUNK/retpoline-validation) seleccionan CONFIG_OBJTOOL igual, y objtool necesita
21#     libelf (gelf.h). Además el defconfig fuerza CONFIG_SYSTEM_DATA_VERIFICATION=y (cadena KEYS←NFS/
22#     integrity/dns_resolver, no apagable sin desarmar media config) ⇒ su host-tool certs/extract-cert
23#     #incluye openssl. Por eso libelf + openssl se proveen como BOOTSTRAP-LIBS apk en bootstrap-devfs.sh
24#     (status g++/zlib-dev; SEGUROS para el of_tree: hammerd no usa openssl, arje-zero va preseeded).
25#     deps.build=[flex,bison,m4] son hammer-built; libelf/openssl quedan de-Alpinizables luego con
26#     recipes/{elfutils,openssl}.toml.
27#   - FANOTIFY + OVERLAY_FS_{REDIRECT_DIR,INDEX,XINO_AUTO,METACOPY}: el defconfig los deja off; el
28#     kernel que booteaba (Arch/Artix) los tiene =y. FANOTIFY: hammerd lo usa para el watcher del
29#     diario (sin él: WARN ENOSYS, no fatal). Los overlay sub-features: hipótesis para el bwrap del
30#     sandbox (`--tmp-overlay /` falló con "pivot_root: Invalid argument" en el 1er boot).
31# [WIP 2026-06-19: el bzImage BOOTEA (console ttyS0, arje-zero PID1, hammerd, red e1000 vendorea OK);
32#  falta que el sandbox bwrap pivote — iterando config. Build ~35min (defconfig grande, a optimizar).]
33
34name    = "linux"
35version = "6.16.12"
36
37[source]
38tarball = "https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.16.12.tar.gz"
39sha256  = "ffc6af80b014ddebd55e116aa29a9f7a5256c87a29a8a9dd97270b6d49625109"
40
41[build]
42compiler = "zig-cc"
43target   = "x86_64-linux-musl"
44link     = "dynamic"
45
46[deps]
47# flex (lexer kconfig) + bison (parser kconfig) + m4 (bison lo invoca en runtime). Se materializan como
48# capa overlay en /usr (binarios en /usr/bin, skeletons de bison en /usr/share/bison).
49build = ["flex", "bison", "m4"]
50
51[build.phases]
52configure = """
53make ARCH=x86_64 defconfig && \
54scripts/config -d MODULE_SIG -d MODULE_SIG_ALL -d DEBUG_INFO_BTF -d DEBUG_INFO \
55  -d UNWINDER_ORC -e UNWINDER_FRAME_POINTER \
56  -e BLK_DEV_INITRD -e DEVTMPFS -e DEVTMPFS_MOUNT -e TMPFS \
57  -e E1000 -e OVERLAY_FS -e USER_NS -e NAMESPACES \
58  -e FANOTIFY -e FANOTIFY_ACCESS_PERMISSIONS \
59  -e OVERLAY_FS_REDIRECT_DIR -e OVERLAY_FS_INDEX -e OVERLAY_FS_XINO_AUTO -e OVERLAY_FS_METACOPY && \
60make ARCH=x86_64 olddefconfig
61"""
62compile = "make ARCH=x86_64 CC=gcc HOSTCC=gcc -j\"$(nproc)\" bzImage"
63install = "mkdir -p /out/boot && cp arch/x86/boot/bzImage /out/boot/bzImage && cp .config /out/boot/config-6.16.12"