From 6e5bc48c58810f82f25638fede4e487d9d2ea868 Mon Sep 17 00:00:00 2001 From: sergio Date: Mon, 20 Jul 2026 11:43:34 -0400 Subject: [PATCH] =?UTF-8?q?kde/qemu:=20system=20D-Bus=20=E2=80=94=20mata?= =?UTF-8?q?=20el=20spam=20udisks2=20y=20completa=20el=20escritorio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit plasmashell/solid spameaba "kf.solid.backends.udisks2: Not connected to D-Bus server" en cada poll: sólo había bus de sesión, no de sistema. Ahora plasma-start levanta dbus-daemon --system (socket estándar /run/dbus/system_bus_socket). - qemu-desktop-image.sh: siembra el usuario messagebus:81 en passwd/group (system.conf hace setuid a él; el passwd base no lo traía). Rompe el hardlink read-only con `mv` de un temp, como el patch del seed. - plasma-start-qemu.sh: arranca el system bus antes del de sesión + copia machine-id a /var/lib/dbus. No hay udisksd/upowerd reales en el rootfs ⇒ sin discos/batería, pero el bus existe y solid deja de errorear. Verificado: "Not connected" pasó de spam continuo a 0; system bus ON; kwin+plasmashell+KSplash+kioworker vivos; 139=0. Co-Authored-By: Claude Opus 4.8 (1M context) --- scripts/kde/plasma-start-qemu.sh | 15 +++++++++++++++ scripts/kde/qemu-desktop-image.sh | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/scripts/kde/plasma-start-qemu.sh b/scripts/kde/plasma-start-qemu.sh index f1567a9f..29293725 100644 --- a/scripts/kde/plasma-start-qemu.sh +++ b/scripts/kde/plasma-start-qemu.sh @@ -88,6 +88,21 @@ EOF say "GPU DRM: $(ls /dev/dri/ 2>/dev/null | tr '\n' ' ')" [ -e /dev/dri/card0 ] || say "!! no hay /dev/dri/card0 — ¿virtio-gpu no cargó? (dmesg | grep -i drm)" +# D-Bus de SISTEMA: sin él, kf.solid/udisks2 spamea "Not connected to D-Bus server" y powerdevil + los +# applets de dispositivos/energía no inician. Escucha en el path estándar /run/dbus/system_bus_socket +# (los clientes lo hallan por DBUS_SYSTEM_BUS_ADDRESS por defecto ⇒ no exportamos nada). Corre como root +# y hace setuid a messagebus (uid 81, sembrado en el passwd de la imagen). No hay udisksd/upowerd reales +# en el rootfs ⇒ no habrá discos/batería, pero el bus existe y solid deja de errorear en cada poll. +mkdir -p /run/dbus /var/lib/dbus +cp -f /etc/machine-id /var/lib/dbus/machine-id 2>/dev/null || true +if [ ! -S /run/dbus/system_bus_socket ]; then + if dbus-daemon --system --fork 2>/tmp/dbus-system.log; then + say "system bus ON (/run/dbus/system_bus_socket)" + else + say "!! system bus NO arrancó:"; dump /tmp/dbus-system.log + fi +fi + # D-Bus de sesión if [ -z "${DBUS_SESSION_BUS_ADDRESS:-}" ]; then DBUS_SESSION_BUS_ADDRESS=$(dbus-daemon --session --fork --print-address 2>/dev/null) diff --git a/scripts/kde/qemu-desktop-image.sh b/scripts/kde/qemu-desktop-image.sh index 5ec67228..7687227f 100755 --- a/scripts/kde/qemu-desktop-image.sh +++ b/scripts/kde/qemu-desktop-image.sh @@ -71,6 +71,22 @@ ln -sf /usr/lib/musl/lib/libc.so "$MERGED/lib/ld-musl-x86_64.so.1" # intérpre ln -sf /usr/lib/musl/lib/libc.so "$MERGED/usr/lib/libc.so" # NEEDED soname en el search path echo " ✓ musl inyectado ($(du -h "$MERGED/usr/lib/musl/lib/libc.so" | cut -f1))" +echo "==> usuario messagebus (el system bus de dbus hace setuid a él; falta en el passwd base)" +# dbus-daemon --system lee system.conf que hace messagebus ⇒ sin ese uid, arrancado como +# root, falla el setuid. Lo agregamos rompiendo el hardlink read-only del passwd/group base con `mv` +# (rename reemplaza la entrada de directorio sin tocar el inode fuente). uid/gid 81 = convención Alpine. +if ! grep -q '^messagebus:' "$MERGED/etc/passwd"; then + tmp="$MERGED/etc/passwd.new" + { cat "$MERGED/etc/passwd"; echo 'messagebus:x:81:81:messagebus:/dev/null:/sbin/nologin'; } > "$tmp" + chmod 644 "$tmp"; mv "$tmp" "$MERGED/etc/passwd" +fi +if ! grep -q '^messagebus:' "$MERGED/etc/group"; then + tmp="$MERGED/etc/group.new" + { cat "$MERGED/etc/group"; echo 'messagebus:x:81:'; } > "$tmp" + chmod 644 "$tmp"; mv "$tmp" "$MERGED/etc/group" +fi +echo " ✓ messagebus:81 en passwd/group" + echo "==> instalando /usr/bin/plasma-start (variante QEMU software-GL)" install -Dm755 scripts/kde/plasma-start-qemu.sh "$MERGED/usr/bin/plasma-start"