From 122cd39cb1be5fce21c7f5d6a2b7eff90ab20124 Mon Sep 17 00:00:00 2001 From: Breadway Date: Sun, 14 Jun 2026 19:17:46 +0800 Subject: [PATCH] TEMP: route live diag to serial via sudo (revert after) --- iso/airootfs/usr/local/bin/bos-live-diag | 34 ++++++++++++----------- iso/airootfs/usr/local/bin/bos-live-setup | 4 +-- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/iso/airootfs/usr/local/bin/bos-live-diag b/iso/airootfs/usr/local/bin/bos-live-diag index 5bb9a81..550508b 100755 --- a/iso/airootfs/usr/local/bin/bos-live-diag +++ b/iso/airootfs/usr/local/bin/bos-live-diag @@ -1,19 +1,21 @@ #!/bin/bash # TEMPORARY live-session diagnostic. Reports why the bread desktop components -# do/don't start, to the serial port (/dev/ttyS0) so it can be read on the VM -# host. Launched as a Hyprland exec-once, so it inherits the Wayland env. -exec >/dev/ttyS0 2>&1 +# do/don't start. Runs as liveuser (Hyprland exec-once, so it has the Wayland +# env), and writes the report to the serial port via sudo (the port is +# root-only) so it can be read on the VM host. sleep 7 -echo "================ BOS LIVE DIAG ================" -echo "user=$(id -un) WAYLAND_DISPLAY=$WAYLAND_DISPLAY XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR" -echo "--- which bread bins ---" -for b in breadd breadbar breadbox breadbox-sync breadcrumbs breadpad bos-settings; do - printf '%s: ' "$b"; command -v "$b" || echo MISSING -done -echo "--- running bread procs ---"; pgrep -a bread || echo "(none running)" -echo "--- ldd breadbar (missing libs) ---" -ldd "$(command -v breadbar 2>/dev/null)" 2>&1 | grep -i "not found" || echo "(all libs resolved)" -echo "--- breadbar foreground test (6s) ---"; timeout 6 breadbar; echo "breadbar rc=$?" -echo "--- breadd foreground test (4s) ---"; timeout 4 breadd; echo "breadd rc=$?" -echo "--- tail hyprland-live.log ---"; tail -50 /tmp/hyprland-live.log 2>/dev/null -echo "================ END DIAG ================" +{ + echo "================ BOS LIVE DIAG ================" + echo "user=$(id -un) WAYLAND_DISPLAY=$WAYLAND_DISPLAY XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR" + echo "--- which bread bins ---" + for b in breadd breadbar breadbox breadbox-sync breadcrumbs breadpad bos-settings; do + printf '%s: ' "$b"; command -v "$b" || echo MISSING + done + echo "--- running bread procs ---"; pgrep -a bread || echo "(none running)" + echo "--- ldd breadbar (missing libs) ---" + ldd "$(command -v breadbar 2>/dev/null)" 2>&1 | grep -i "not found" || echo "(all libs resolved)" + echo "--- breadbar foreground test (6s) ---"; timeout 6 breadbar 2>&1; echo "breadbar rc=$?" + echo "--- breadd foreground test (4s) ---"; timeout 4 breadd 2>&1; echo "breadd rc=$?" + echo "--- tail hyprland-live.log ---"; tail -60 /tmp/hyprland-live.log 2>/dev/null + echo "================ END DIAG ================" +} 2>&1 | sudo tee /dev/ttyS0 >/dev/null diff --git a/iso/airootfs/usr/local/bin/bos-live-setup b/iso/airootfs/usr/local/bin/bos-live-setup index fb52d3e..346ecb3 100644 --- a/iso/airootfs/usr/local/bin/bos-live-setup +++ b/iso/airootfs/usr/local/bin/bos-live-setup @@ -41,8 +41,8 @@ if [[ "$(tty)" == /dev/tty1 ]] && [[ -z "$WAYLAND_DISPLAY" ]]; then export WLR_NO_HARDWARE_CURSORS=1 # Log to a user-writable path (/var/log is root-only; redirecting there # would fail and silently keep the compositor from ever launching). - Hyprland &>/tmp/hyprland-live.log - echo "Hyprland exited (rc=$?). Log: /tmp/hyprland-live.log" + Hyprland 2>&1 | sudo tee /tmp/hyprland-live.log /dev/ttyS0 >/dev/null + echo "Hyprland exited. Log: /tmp/hyprland-live.log" | sudo tee /dev/ttyS0 exec bash -i fi EOF