10 KiB
User
- User: Mike Swanson (mike)
- Machine: GURU-5070
- Role: admin
Session Summary
Investigated a report that Howard "broke all the Linux RMM agents" and found it was already a tracked issue — BUG-024 (GuruRMM). Root cause: the build host .30 was upgraded to Ubuntu 26.04 / glibc 2.43, and build-linux.sh compiles the agent against the host toolchain, so Linux agent binaries >=0.6.77 require GLIBC_2.39. Separately, a 2026-07-04 update-scanner fix enabled Linux update offers for the first time, so every reachable older-distro Linux agent pulled the update and crash-looped on GLIBC_2.39 not found (silent — the crash-looping agents still showed "online" until a status-reconciliation fix). Howard had mitigated it by quarantining Linux binaries out of /var/www/gururmm/downloads and reviving the ACG-internal agents (ix/Jupiter); two client agents remained down (Lonestar, Scileppi), and the permanent fix decision (musl static vs old-glibc build container) was parked on Mike.
Mike chose musl static, and I took over the fix. Restructured agent/Cargo.toml so non-Windows targets use rustls (pure-Rust, no OpenSSL) via cfg(not(windows)) — OpenSSL cannot link cleanly/static on musl, rustls can, and macOS already used this config; Windows kept native-tls/schannel for Win7/2008R2. Updated build-linux.sh to build x86_64-unknown-linux-musl static, set CC_x86_64_unknown_linux_musl=musl-gcc (ring needs a musl C compiler), and added an objdump/readelf gate that refuses to publish if the binary has any GLIBC_* refs or a dynamic interpreter. Installed musl-tools on .30 (the one missing dep). Built + verified in an isolated worktree: static-pie, ldd "statically linked", GLIBC refs = 0, runs (gururmm-agent 0.6.79). Committed to branch fix/linux-musl-glibc-floor, pushed to gururmm.git, and handed the fleet deploy (merge -> rebuild image -> un-quarantine) back to Howard (he owns the build host + quarantine + has in-flight branches).
Recovered Lonestar's down agent as a field test. It's a Docker container (bfcfbc739d23, Debian 12 image) on an Unraid box (192.168.120.177, via VPN), crash-looping on the exact BUG-024 glibc error. docker cp was unusable on that btrfs host (it chokes on the /dev/kvm and libvirt-sock special mounts), and a stale libvirt-sock mount (libvirtd was off) blocked container start until a concurrent session fixed libvirtd. I wrote the musl binary directly into the container's RW-layer btrfs subvolume (which preserved the container's device identity — no re-enroll/duplicate) and started it: the agent came up healthy, online in RMM as v0.6.79. Stashed a persistent copy of the binary on the box.
Attempted Scileppi's down agent (SL-SERVER) but hit a credential wall. Established that the box is a Synology RS2212+ at 192.168.242.5 (reached via a Scileppi VPN Mike connected — GURU-5070 has no direct route, and the neighboring Mac relay was a dead end because Mac-mini-2 runs on an iPhone USB tether, not the office LAN). SSH auth failed: the vaulted sysadmin password is stale (rejected), my GURU-5070 key isn't authorized, and admin/root also failed — I stopped to avoid Synology auto-block. Also diagnosed the Mac-mini-2 tether as the root cause of that user's chronic "can't reach the server" problems. Howard is going on-site to handle the Mac hotspot and can grab the current SL-SERVER credential in the same trip.
Key Decisions
- musl static over an old-glibc build container (Mike's call) — removes the glibc floor entirely, so the agent runs on any Linux distro regardless of the build host's glibc.
- Linux -> rustls (ring), not native-tls/OpenSSL — OpenSSL can't link static/clean on musl; rustls is pure-Rust and mirrors the existing macOS config. Windows keeps native-tls unchanged (Win7/2008R2 compat).
- Built in an isolated
git worktreeon.30(not the production/home/guru/gururmmcheckout) to avoid disturbing the webhook. - Lonestar fix via direct RW-layer FS write, not
docker cp(broken on btrfs) and not a container recreate (which would lose the device identity and re-pull the bad image binary). - Stopped credential guessing on the Synology to avoid tripping DSM auto-block.
- Handed the fleet deploy to Howard — he owns the build host, the quarantine mechanism, and has in-flight branches; two people shouldn't both touch the build pipeline.
Problems Encountered
- Pushed the musl branch to the wrong repo (
guru-rmm.gitwith a hyphen vs the canonicalgururmm.git) — the build host couldn't fetch it. Re-pointed the submodule origin togururmm.gitand re-pushed. (Stray branch onguru-rmm.gitstill needs cleanup.) - musl build failed initially:
ring's build script needsx86_64-linux-musl-gcc, which was missing. Installedmusl-toolsviasudo -Swith the vaultedgurupassword, and setCC_x86_64_unknown_linux_musl=musl-gcc. docker cpon the Lonestar btrfs box failed on the/dev/kvmdevice mount (and earlier thelibvirt-sockdir mount blocked start). Bypassed by writing the binary directly to the container's RW subvolume once libvirtd was fixed by another session.- Repeated a past mistake early — treated "can't reach X from here" as "X is down" — but corrected it by verifying via on-segment/RMM paths (same lesson as the UDM earlier this session).
- Scileppi Mac relay was a dead end (Mac on iPhone tether); resolved when Mike connected a Scileppi VPN, giving GURU-5070 direct access.
Configuration Changes
- guru-rmm submodule, branch
fix/linux-musl-glibc-floor(commits2471946,cd81d44, pushed togururmm.git):agent/Cargo.toml— TLS restructured:cfg(not(windows))-> rustls (rustls-tls-native-roots);cfg(windows)-> native-tls (tokio-tungstenite/reqwestnative-tls +native-tls = "=0.2.11"); macOS keepsblocking+plistvia feature union.deploy/build-pipeline/build-linux.sh—TARGET=x86_64-unknown-linux-musl,rustup target add,CC_x86_64_unknown_linux_musl=musl-gcc+AR, build gate (objdump GLIBC + readelf INTERP must be 0), deploy from the musl target dir.
- Build host
.30—apt-get install musl-tools(installed). Left a/tmp/musl-buildworktree (cleanup pending). - Lonestar Unraid (192.168.120.177) — wrote the musl 0.6.79 binary into container
bfcfbc739d23's RW-layer subvolume (/usr/local/bin/gururmm-agent) and restarted it; stashed a persistent copy at/mnt/user/appdata/gururmm/gururmm-agent-musl-0.6.79. - No main-repo file changes beyond this session log.
Credentials & Secrets
- No new credentials created. Used from vault:
infrastructure/gururmm-server.sops.yaml(guru SSH key auth to.30+ the guru password forsudo -S);clients/lonestar-electrical/unraid-server.sops.yaml(Unraid root, via plink). - STALE CRED FLAG:
clients/scileppi-law/rs2212.sops.yaml— thesysadminpassword is rejected by SSH on SL-SERVER (192.168.242.5). Needs updating once Howard obtains the current login on-site. My GURU-5070 key is NOT authorized there;admin/rootalso failed.
Infrastructure & Servers
- Build host
.30=gururmm= 172.16.3.30, Ubuntu 26.04 / glibc 2.43, Rust build host, repo/home/guru/gururmm, web root/var/www/gururmm/downloads(Linux binaries quarantined). SSHguru@172.16.3.30(key).objdump+ccpresent;musl-toolsnow installed;cmakestill absent (not needed — reqwest uses ring, not aws-lc). - Down/recovered Linux agents: ix (D2TESTNAS, CloudLinux 9), Jupiter (Debian 12 docker), gururmm, GURU-KALI — fine/revived. Lonestar
bfcfbc739d23(Debian 12 container on Unraid "Tower" 192.168.120.177) — RECOVERED to v0.6.79. Scileppi SL-SERVER — Synology RS2212+ at 192.168.242.5 (stale vault IP 172.16.1.59), DSM on 5000/5001, agent v0.5.1 down ~37h. - Scileppi Mac-mini-2 (RMM id
1386d9fd-ac16-423c-ada0-5abad5b61838) — running on an iPhone USB tether (192.0.0.2, gw192.0.0.1) instead of the office LAN; root cause of its chronic server-connection failures. Howard on-site. - AD2 re-enrolled during the broader session: new RMM id
4b9fe588-2a86-4855-912e-d90cf5f5e3e4.
Commands & Outputs
- Build (on
.30, in worktree):CC_x86_64_unknown_linux_musl=musl-gcc AR_x86_64_unknown_linux_musl=ar cargo build --release --target x86_64-unknown-linux-musl. - Verify (gate):
ldd BIN-> "statically linked";objdump -T BIN | grep -c GLIBC_-> 0;readelf -l BIN | grep -c INTERP-> 0;file BIN-> "static-pie linked";BIN --version->gururmm-agent 0.6.79. musl binary sha256538d8bc77a596192be89c4481db3cced12aa81c03cfc0dd1fcb1679f0d352d7f. - Lonestar recovery: derive RW subvol via
cat /var/lib/docker/image/btrfs/layerdb/mounts/<CID>/mount-id;cp musl-bin <subvol>/usr/local/bin/gururmm-agent;docker start. Result: running, restarts=0, logs show server-connected/heartbeat/inventory, RMM last_seen current, v0.6.79. - SL-SERVER auth:
sysadmin/vaulted-pw -> "password not accepted";admin-> "Access denied";root-> connection closed (root SSH disabled); key auth -> denied.
Pending / Incomplete Tasks
- Howard (deploy): merge
fix/linux-musl-glibc-floor-> main -> webhook rebuilds musl (gate-checked) -> un-quarantine Linux downloads in/var/www/gururmm/downloads. - Scileppi SL-SERVER: blocked on the stale credential — Howard to get the current SSH login on-site (or add my key), then it's the same ~2-min fix (container-vs-native check + musl binary + restart). Update the vault entry.
- Scileppi Mac-mini-2 hotspot: Howard on-site (confirm real Ethernet is connected so it stops falling back to the iPhone tether).
- Cleanup: remove
/tmp/musl-buildworktree on.30; delete the strayfix/linux-musl-glibc-floorbranch on the wrongguru-rmm.gitrepo. - Do NOT recreate the Lonestar container until Howard's fixed image ships (fix is in the RW layer; recreate would re-pull the bad image binary).
- Carryover from earlier in the session: Dataforth #32489 John reply (held) + billing (waiting on Howard's line items landing; Dataforth has a 28h prepaid block).
Reference Information
- BUG-024 details:
projects/msp-tools/guru-rmm/docs/FEATURE_ROADMAP.md(entry) + Howard'ssession-logs/2026-07/2026-07-05-howard-*logs. - Branch
fix/linux-musl-glibc-floorHEADcd81d44(parent2471946) ongururmm.git. - Coord messages to HOWARD-HOME:
20daedf9(fix ready),cf35bf16(Lonestar tested), plus the musl-decision relays. - Lonestar: Unraid 7.1.4, container
gururmm-agent/bfcfbc739d23, imagegit.azcomputerguru.com/azcomputerguru/gururmm-agent:latest, config/mnt/user/appdata/gururmm/config.toml.