#!/bin/sh # /usr/bin/mycellium-bootstrap — installed by mycellium-ui.deb # # Wrapper around the mycelium daemon that guarantees a clean start # every time. Without this, an orphan mycelium left over from a # previous run (which the user-space launcher cannot SIGKILL because # the daemon runs as root via pkexec) would block the next start # with one of: # # * EBUSY on TUN device "mycelium" creation # * "Address in use" on the JSON-RPC port (hardcoded 8990 in 0.6.1) # * "Failed to bind multicast discovery socket" on UDP 9650 # # This script runs under the same elevated context as the mycelium # daemon itself (single pkexec call), so polkit's auth_admin_keep # caching only fires one prompt per session. set -e # Best-effort cleanup. Errors ignored so the exec at the end always # runs even on a clean machine. pkill -9 -x mycelium 2>/dev/null || true sleep 0.3 ip link del mycelium 2>/dev/null || true ip link del mycel0 2>/dev/null || true exec /usr/bin/mycelium "$@"