mirada-usb: modo hardware nouveau para GTX 1060 (Pascal/GP106)
- Hornea firmware nvidia/gp106 (ctxsw/acr/sec2) descomprimido a .bin (nouveau da GL 3D). - init: modo HARDWARE por defecto (WGPU_BACKEND=gl sobre gallium-nouveau, que da float16 vía unpackHalf2x16; tapa lavapipe). Pascal no tiene NVK ⇒ greeter va por GL, no Vulkan. - cmdline default = hardware; 'mirada.sw nouveau.modeset=0' = fallback software. - CHIP/FW_SRC parametrizables para otras GPUs. Regresión: el fallback software sigue levantando el compositor en la imagen final. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+29
-3
@@ -173,6 +173,24 @@ for round in 1 2 3; do
|
||||
done
|
||||
done
|
||||
|
||||
# 5d) FIRMWARE nouveau (aceleración 3D). Pascal/Maxwell2 (GP10x/GM20x) piden los blobs firmados de
|
||||
# ctxsw (gr/) + acr/sec2 para dar GL por hardware; sin ellos nouveau da display pero NO 3D ⇒ el
|
||||
# greeter caería a software (sin float16). Turing+ (RTX) piden ADEMÁS gsp/. CHIP=gp106 para la GTX
|
||||
# 1060. FW_SRC = árbol linux-firmware del host (o pasá el tuyo). NO es soberano (blob firmado NVIDIA).
|
||||
CHIP="${CHIP:-gp106}"
|
||||
FW_SRC="${FW_SRC:-/lib/firmware}"
|
||||
if [ -n "$CHIP" ] && [ -d "$FW_SRC/nvidia/$CHIP" ]; then
|
||||
echo "==> firmware nouveau nvidia/$CHIP ← $FW_SRC"
|
||||
mkdir -p "$RFS/lib/firmware/nvidia"
|
||||
cp -aL "$FW_SRC/nvidia/$CHIP" "$RFS/lib/firmware/nvidia/$CHIP"
|
||||
# DESCOMPRIMIR .bin.zst/.xz → .bin: el request_firmware de nouveau busca `.bin`; el kernel sólo
|
||||
# descomprime al vuelo si tiene FW_LOADER_COMPRESS (incierto en linux-generic). Descomprimir asegura.
|
||||
find "$RFS/lib/firmware/nvidia/$CHIP" -name '*.zst' -exec sh -c 'zstd -q -d -f "$1" && rm -f "$1"' _ {} \; 2>/dev/null || true
|
||||
find "$RFS/lib/firmware/nvidia/$CHIP" -name '*.xz' -exec sh -c 'xz -q -d -f "$1"' _ {} \; 2>/dev/null || true
|
||||
elif [ -n "$CHIP" ]; then
|
||||
echo " ⚠ no encuentro firmware nvidia/$CHIP en $FW_SRC — nouveau no dará 3D (greeter caerá a sw)" >&2
|
||||
fi
|
||||
|
||||
# 6) /sbin/init = lanzador de mirada (software)
|
||||
echo "==> lanzador /sbin/init"
|
||||
cat > "$RFS/sbin/init" <<'INIT'
|
||||
@@ -208,9 +226,14 @@ if grep -qw 'mirada.sw' /proc/cmdline 2>/dev/null; then
|
||||
export GALLIUM_DRIVER=llvmpipe
|
||||
export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/lvp_icd.x86_64.json
|
||||
export VK_DRIVER_FILES=/usr/share/vulkan/icd.d/lvp_icd.x86_64.json
|
||||
else
|
||||
# HARDWARE (nouveau). En Pascal (GTX 10xx / GP10x) NVK NO existe (sólo Turing+) ⇒ el greeter debe ir
|
||||
# por el backend GL de wgpu sobre gallium-nouveau (que sí da unpackHalf2x16 = float16). Forzamos GL y
|
||||
# tapamos lavapipe: si dejáramos Vulkan, wgpu caería a lavapipe (software, sin float16) y fallaría.
|
||||
echo " ## modo HARDWARE (nouveau GL): greeter por gallium-nouveau"
|
||||
export WGPU_BACKEND=gl
|
||||
export VK_ICD_FILENAMES=/dev/null
|
||||
fi
|
||||
# En modo hardware el loader Vulkan escanea /usr/share/vulkan/icd.d/ y elige el mejor ICD (nouveau NVK
|
||||
# si está, si no lavapipe); no fijamos VK_ICD_FILENAMES para no tapar el hardware.
|
||||
|
||||
echo ""
|
||||
echo " ## hammer · mirada live"
|
||||
@@ -243,8 +266,11 @@ if [ "$PACKAGE" = "1" ]; then
|
||||
# driver ni del firmware. Para el greeter completo (login) hace falta GPU real: en el menú de
|
||||
# systemd-boot, tecla 'e', quitá `mirada.sw nouveau.modeset=0` para que nouveau intente el hardware
|
||||
# (requiere firmware GSP en /lib/firmware — ver FW_SRC).
|
||||
# Default = HARDWARE nouveau (ya horneamos el firmware gp106): nouveau maneja la GTX 1060 y el greeter
|
||||
# pinta por gallium-nouveau GL. Si nouveau diera problemas, en el menú (tecla 'e') agregá
|
||||
# `mirada.sw nouveau.modeset=0` para caer a software (compositor sí, greeter no).
|
||||
ROOTFS="$RFS" KERNEL="$KGEN" IMG="work/hammer-mirada-usb.img" \
|
||||
OPTIONS="${CMDLINE:-mirada.sw nouveau.modeset=0 console=tty0 loglevel=4}" \
|
||||
OPTIONS="${CMDLINE:-console=tty0 loglevel=4}" \
|
||||
scripts/metal-usb-sdboot.sh
|
||||
echo ""
|
||||
echo "✓ imagen: work/hammer-mirada-usb.img"
|
||||
|
||||
Reference in New Issue
Block a user