tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1572Shell 203Rust 109Markdown 993728 Definiciones

kde/qemu: system D-Bus — mata el spam udisks2 y completa el escritorio

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) <noreply@anthropic.com>

6e5bc48c58810f82f25638fede4e487d9d2ea868 · por sergio · (hace 3 meses) · padre b53a822b4 · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

2 archivos · +31 −0

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 <user>messagebus</user> ⇒ 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"