Etapa metal: stack de red WiFi — libnl + wpa_supplicant (pieza 3)
- recipes/libnl.toml: netlink lib (libnl-3 + libnl-genl-3), estática, deps flex/bison/m4 (regenera parsers). Base nl80211 del kernel metal. - recipes/wpa_supplicant.toml: supplicant WPA2 2.11, driver nl80211 sobre libnl, CONFIG_TLS=internal (sin dep openssl; suficiente WPA2-PSK). Compila a la 1ra con zig-cc/musl ⇒ wpa_supplicant/wpa_cli/wpa_passphrase ESTÁTICOS x86-64. udhcpc de busybox da el DHCP. (iw omitido: wpa_cli scanea.) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# libnl 3.11.0 — librería netlink (base del stack WiFi del kernel metal).
|
||||
#
|
||||
# wpa_supplicant habla con el kernel (cfg80211/nl80211) vía netlink genérico; el driver `nl80211` de
|
||||
# wpa_supplicant enlaza libnl-3 + libnl-genl-3 (pkg-config libnl-3.0/libnl-genl-3.0). Es la única forma
|
||||
# de manejar iwlwifi (el viejo wext está muerto en kernels modernos). Sólo se usa para el WiFi del medio
|
||||
# live en hardware real — no toca el camino del selfhost/QEMU.
|
||||
#
|
||||
# Autotools con parsers pre-generados en el tarball (no necesita flex/bison). Estático (.a) como openssl:
|
||||
# evita el lío de nombres .so musl y deja que wpa_supplicant enlace en duro. $CBUILD/$CHOST los exporta
|
||||
# el lab (Etapa G Fase 3).
|
||||
|
||||
name = "libnl"
|
||||
version = "3.11.0"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/thom311/libnl/releases/download/libnl3_11_0/libnl-3.11.0.tar.gz"
|
||||
sha256 = "2a56e1edefa3e68a7c00879496736fdbf62fc94ed3232c0baba127ecfa76874d"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
|
||||
[deps]
|
||||
# libnl 3.11 regenera sus parsers netlink ⇒ flex (lexer) + bison (parser) + m4 (bison lo invoca).
|
||||
build = ["flex", "bison", "m4"]
|
||||
|
||||
[build.phases]
|
||||
configure = "./configure --build=$CBUILD --host=$CHOST --prefix=/usr --libdir=/usr/lib --disable-shared --enable-static --disable-cli"
|
||||
compile = "make -j\"$(nproc)\""
|
||||
install = "make DESTDIR=/out install"
|
||||
@@ -0,0 +1,44 @@
|
||||
# wpa_supplicant 2.11 — supplicant WPA2 para asociar el WiFi del medio live al AP (kernel metal).
|
||||
#
|
||||
# El handshake WPA2 de 4 vías lo hace un supplicant en userspace; busybox NO lo trae. Habla con iwlwifi
|
||||
# vía el driver nl80211 (netlink), que enlaza libnl-3/libnl-genl-3 (recipes/libnl.toml). DHCP lo da
|
||||
# udhcpc de busybox (ya en el producto) una vez asociada la interfaz.
|
||||
#
|
||||
# Crypto: CONFIG_TLS=internal ⇒ NO depende de openssl (suficiente para WPA2-PSK, el WiFi de casa). Para
|
||||
# WPA-Enterprise/EAP-TLS habría que pasar a CONFIG_TLS=openssl + dep openssl. Sólo medio live en metal.
|
||||
#
|
||||
# wpa_supplicant usa un build propio: un `.config` con CONFIG_* en el subdir wpa_supplicant/, luego make.
|
||||
# Los binarios (wpa_supplicant/wpa_cli/wpa_passphrase) se copian a /usr/sbin (no `make install`).
|
||||
|
||||
name = "wpa_supplicant"
|
||||
version = "2.11"
|
||||
|
||||
[source]
|
||||
tarball = "https://w1.fi/releases/wpa_supplicant-2.11.tar.gz"
|
||||
sha256 = "912ea06f74e30a8e36fbb68064d6cdff218d8d591db0fc5d75dee6c81ac7fc0a"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
|
||||
[deps]
|
||||
build = ["libnl"]
|
||||
|
||||
[build.phases]
|
||||
configure = '''
|
||||
cat > wpa_supplicant/.config <<'EOF'
|
||||
CONFIG_DRIVER_NL80211=y
|
||||
CONFIG_LIBNL32=y
|
||||
CONFIG_CTRL_IFACE=y
|
||||
CONFIG_CTRL_IFACE_UNIX=y
|
||||
CONFIG_BACKEND=file
|
||||
CONFIG_TLS=internal
|
||||
CONFIG_INTERNAL_LIBTOMMATH=y
|
||||
CONFIG_INTERNAL_LIBTOMMATH_FAST=y
|
||||
CONFIG_IEEE8021X_EAPOL=y
|
||||
CONFIG_PEERKEY=y
|
||||
EOF
|
||||
'''
|
||||
compile = "cd wpa_supplicant && make -j\"$(nproc)\" wpa_supplicant wpa_cli wpa_passphrase"
|
||||
install = "mkdir -p /out/usr/sbin && cd wpa_supplicant && cp wpa_supplicant wpa_cli wpa_passphrase /out/usr/sbin/"
|
||||
Reference in New Issue
Block a user