TELEMETRÍA (el pedido): el rootfs de la imagen es un initramfs = RAM pura y los logs iban a /run (tmpfs) ⇒ al apagar la máquina ajena no sobrevivía NADA. Ahora la imagen lleva 2da partición FAT32 MIRADALOG (512M), montada por findfs+LABEL con -o sync (un cuelgue de GPU o corte de luz no se lleva los logs). Cada arranque vuelca run-NNNN/ con: resumen (modo/GPU/driver), hardware (PCI vía sysfs, módulos, DRM, input, firmware), pantallas (status/modes por conector), dmesg ANTES y DESPUÉS de mirada, seatd, y el log del compositor+greeter con RUST_LOG=wgpu_core=debug + EGL_LOG_LEVEL=debug + LIBGL_DEBUG=verbose (para ver por qué wgpu eligió el backend y si hay float16). Shell de rescate + . FAT32 a propósito: el pendrive se lee después desde cualquier SO. metal-usb-sdboot.sh gana DATA_MB/DATA_LABEL genéricos (partición de datos opcional en la GPT). GOTCHAs verificados antes de confiar: el kernel linux-generic SÍ trae VFAT_FS=y + NLS + USB_STORAGE=y (sin eso no montaba); el busybox de Alpine NO trae el applet 00:00.0 Host bridge: Intel Corporation Tiger Lake-UP3/H35 4 cores Host Bridge/DRAM Registers (rev 01) 00:02.0 VGA compatible controller: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] (rev 01) 00:04.0 Signal processing controller: Intel Corporation TigerLake-LP Dynamic Tuning Processor Participant (rev 01) 00:07.0 PCI bridge: Intel Corporation Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #0 (rev 01) 00:08.0 System peripheral: Intel Corporation GNA Scoring Accelerator module (rev 01) 00:0a.0 Signal processing controller: Intel Corporation Tigerlake Telemetry Aggregator Driver (rev 01) 00:0d.0 USB controller: Intel Corporation Tiger Lake-LP Thunderbolt 4 USB Controller (rev 01) 00:0d.2 USB controller: Intel Corporation Tiger Lake-LP Thunderbolt 4 NHI #0 (rev 01) 00:12.0 Serial controller: Intel Corporation 500 Series Chipset Family On-Package Integrated Sensor Hub (rev 20) 00:14.0 USB controller: Intel Corporation 500 Series Chipset Family On-Package USB 3.2 Gen 2x1 (10 Gbs) xHCI Host Controller (rev 20) 00:14.2 RAM memory: Intel Corporation 500 Series Chipset Family On-Package Shared SRAM (rev 20) 00:14.3 Network controller: Intel Corporation Wi-Fi 6 AX201 (rev 20) 00:15.0 Serial bus controller: Intel Corporation 500 Series Chipset Family On-Package I2C Controller #0 (rev 20) 00:15.1 Serial bus controller: Intel Corporation 500 Series Chipset Family On-Package I2C Controller #1 (rev 20) 00:16.0 Communication controller: Intel Corporation 500 Series Chipset Family On-Package CSME HECI #1 (rev 20) 00:1c.0 PCI bridge: Intel Corporation 500 Series Chipset Family On-Package PCI Express Root Port #5 (rev 20) 00:1d.0 PCI bridge: Intel Corporation 500 Series Chipset Family On-Package PCI Express Root Port #9 (rev 20) 00:1f.0 ISA bridge: Intel Corporation 500 Series Chipset Family On-Package eSPI Controller (rev 20) 00:1f.3 Multimedia audio controller: Intel Corporation 500 Series Chipset Family On-Package High Definition Audio (HD Audio) (rev 20) 00:1f.4 SMBus: Intel Corporation 500 Series Chipset Family On-Package System Management Bus (SMBus) (rev 20) 00:1f.5 Serial bus controller: Intel Corporation 500 Series Chipset Family On-Package SPI (flash) Controller (rev 20) 39:00.0 Non-Volatile memory controller: Kingston Technology Company, Inc. NV2 NVMe SSD [SM2267XT] (DRAM-less) (rev 03) 3a:00.0 Non-Volatile memory controller: ADATA Technology Co., Ltd. IM2P33F3 NVMe SSD (DRAM-less) (rev 03) (sí findfs/blkid) ⇒ el dump de PCI lee /sys/bus/pci/devices/*/ directo; sintaxis del init validada con busybox ash (no bash). BUMP mirada: el pin era 9967b02c (18-jun) — 439 commits viejo. Ahora 9a17fefc, que incluye el fix de portabilidad a musl que hice en tawasuyu (ioctl: glibc usa c_ulong, musl c_int ⇒ las constantes DRM casteaban mal y mirada-compositor NO compilaba para musl). mirada-compositor ya selló (87ced528); greeter/ctl en curso. + scripts/kde/{metal-desktop-image,plasma-start-metal}.sh del hilo KDE (imagen de escritorio en metal). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
73 lines
3.1 KiB
Bash
Executable File
73 lines
3.1 KiB
Bash
Executable File
#!/bin/sh
|
|
# plasma-start — arranca la sesión Plasma en METAL (se instala como /usr/bin/plasma-start en el rootfs).
|
|
#
|
|
# Derivado de scripts/kde/run-plasma-headless.sh (la sesión VALIDADA headless en el worker), con dos
|
|
# cambios para hardware real:
|
|
# - kwin_wayland SIN `--virtual`: usa el backend DRM real (/dev/dri/card0, i915 built-in del kernel metal).
|
|
# - SIN los overrides de software (swrast/LIBGL_ALWAYS_SOFTWARE/QT_QUICK_BACKEND=software): en la
|
|
# TigerLake el driver es **iris** (mesa hidratado trae /usr/lib/dri/iris_dri.so).
|
|
#
|
|
# NO se autoarranca desde el seed card de arje-zero a propósito: en un bringup, si Plasma falla querés el
|
|
# shell de la console-getty para leer los logs, no una pantalla negra. Se lanza a mano desde ese shell.
|
|
#
|
|
# Logs: /tmp/{kwin,kamd,plasmashell}.log Salir: Ctrl-C (mata la sesión)
|
|
set -u
|
|
|
|
export LD_LIBRARY_PATH=/usr/lib64:/usr/lib/qt6:/usr/lib:/lib
|
|
export QT_PLUGIN_PATH=/usr/lib64/qt6/plugins:/usr/lib/qt6/plugins
|
|
export QML2_IMPORT_PATH=/usr/lib64/qt6/qml:/usr/lib/qt6/qml
|
|
export QML_IMPORT_PATH=$QML2_IMPORT_PATH
|
|
export XDG_DATA_DIRS=/usr/share
|
|
export XDG_RUNTIME_DIR=/run/user/0
|
|
export XDG_CONFIG_HOME=/root/.config
|
|
export XDG_CACHE_HOME=/root/.cache
|
|
export HOME=/root
|
|
export LIBGL_DRIVERS_PATH=/usr/lib/dri
|
|
export QT_QPA_PLATFORM=wayland
|
|
|
|
mkdir -p "$XDG_RUNTIME_DIR" "$XDG_CONFIG_HOME" "$XDG_CACHE_HOME" /root
|
|
chmod 700 "$XDG_RUNTIME_DIR"
|
|
|
|
echo "== hammer :: sesión Plasma (metal) =="
|
|
echo "-- GPU: $(ls /dev/dri/ 2>/dev/null | tr '\n' ' ')"
|
|
[ -e /dev/dri/card0 ] || echo " !! no hay /dev/dri/card0 — ¿i915 no cargó? (dmesg | grep i915)"
|
|
echo "-- input: $(ls /dev/input/ 2>/dev/null | tr '\n' ' ')"
|
|
|
|
# D-Bus de sesión: kwin/plasmashell lo exigen.
|
|
if [ -z "${DBUS_SESSION_BUS_ADDRESS:-}" ]; then
|
|
DBUS_SESSION_BUS_ADDRESS=$(dbus-daemon --session --fork --print-address 2>/dev/null)
|
|
export DBUS_SESSION_BUS_ADDRESS
|
|
fi
|
|
echo "-- dbus: ${DBUS_SESSION_BUS_ADDRESS:-NO ARRANCÓ}"
|
|
|
|
# Compositor sobre DRM real.
|
|
echo "-- lanzando kwin_wayland (DRM)…"
|
|
/usr/bin/kwin_wayland >/tmp/kwin.log 2>&1 &
|
|
KWIN=$!
|
|
i=0
|
|
while [ $i -lt 40 ]; do
|
|
[ -S "$XDG_RUNTIME_DIR/wayland-0" ] && break
|
|
kill -0 $KWIN 2>/dev/null || { echo " !! kwin murió:"; tail -25 /tmp/kwin.log; exit 1; }
|
|
i=$((i+1)); sleep 0.5
|
|
done
|
|
if [ -S "$XDG_RUNTIME_DIR/wayland-0" ]; then
|
|
echo " compositor OK (wayland-0)"
|
|
else
|
|
echo " !! kwin no expuso wayland-0:"; tail -25 /tmp/kwin.log; exit 1
|
|
fi
|
|
export WAYLAND_DISPLAY=wayland-0
|
|
|
|
# kactivitymanagerd: plasmashell ABORTA si no corre (registra su servicio D-Bus).
|
|
KAMD=$(ls /usr/lib*/libexec/kactivitymanagerd 2>/dev/null | head -1)
|
|
if [ -n "$KAMD" ]; then "$KAMD" >/tmp/kamd.log 2>&1 & sleep 2; echo "-- kactivitymanagerd lanzado"; fi
|
|
|
|
echo "-- lanzando plasmashell…"
|
|
/usr/bin/plasmashell >/tmp/plasmashell.log 2>&1 &
|
|
sleep 8
|
|
echo "-- procesos: $(ps axo comm 2>/dev/null | grep -E 'kwin|plasma' | sort -u | tr '\n' ' ')"
|
|
echo
|
|
echo "Escritorio arriba. Logs en /tmp/{kwin,kamd,plasmashell}.log"
|
|
echo "Apps: konsole, dolphin, systemsettings, spectacle, okular… (lanzalas desde otra tty o krunner)"
|
|
echo "Ctrl-C para terminar la sesión."
|
|
wait $KWIN
|