diff --git a/scripts/cosmic/metal-desktop-image.sh b/scripts/cosmic/metal-desktop-image.sh index 18212bdc..bdc635c3 100755 --- a/scripts/cosmic/metal-desktop-image.sh +++ b/scripts/cosmic/metal-desktop-image.sh @@ -163,6 +163,30 @@ else echo " ⚠ sin $AKEY ⇒ sshd escuchará pero será inalcanzable (depuración sólo a ciegas)" fi +# ── cosmic-diag: UN comando que deja toda la evidencia en disco ───────────────────────────────── +# Depurar en metal cuesta un viaje físico por iteración, así que el objetivo es que una corrida +# capture TODO de una vez y sin que nadie tenga que acordarse de los pasos. Lo que importa acá y no +# se estaba capturando: el `dmesg` DESPUÉS de la sesión. Si cosmic-comp muere por SIGSEGV —que es lo +# que indica su log cortado a los 0,4 s, sin panic y con RUST_BACKTRACE=1— el kernel imprime +# `cosmic-comp[PID]: segfault at ... in `, y esa biblioteca ES el diagnóstico. +cat > "$MERGED/usr/bin/cosmic-diag" <<'DIAG' +#!/bin/sh +export PATH=/usr/bin:/bin:/usr/sbin:/sbin +L=/var/log/cosmic +mkdir -p "$L" +echo "== cosmic-diag: corriendo la sesión y capturando todo en $L (unos 60s) ==" +/bin/busybox dmesg > "$L/dmesg-antes.txt" 2>&1 +cosmic-start > "$L/run.txt" 2>&1 & +sleep 50 +/bin/busybox dmesg > "$L/dmesg-despues.txt" 2>&1 +/bin/busybox sync +echo "== listo. Lo que importa: ==" +grep -aiE "segfault|general protection|trap |Code: " "$L/dmesg-despues.txt" | tail -5 || true +echo "== (si no salió nada arriba, no fue SIGSEGV: cosmic-comp salió por su cuenta) ==" +echo "== evidencia completa en $L — apagá y traé el USB ==" +DIAG +chmod 0755 "$MERGED/usr/bin/cosmic-diag" + # ── getty en tty1: el prompt TIENE que salir por la PANTALLA ──────────────────────────────────── # Lección del 1er viaje físico de KDE, que costó un USB quemado: el CMDLINE horneado es # `console=tty0 console=ttyS0,115200 …` y el kernel hace /dev/console = la ÚLTIMA `console=` ⇒ ttyS0. @@ -244,6 +268,9 @@ cat > "$MERGED/etc/motd" <<'MOTD' Arrancar el escritorio: cosmic-start ⇒ tiene que decir "GL por HARDWARE". Si dice SOFTWARE, el viaje no sirve: ScreenCast fallaría igual que en QEMU. + Si NO levanta: cosmic-diag <-- UN comando, deja todo en + /var/log/cosmic/ (incluido el dmesg de después, + que es donde el kernel nombra el segfault) Probar el portal: portal-probe version portal-probe screencast <-- LO QUE VINIMOS A VER GPU detectada: ls /dev/dri ; dmesg | grep -iE 'i915|drm'