radagast (radagast.critchley.biz) is a FreeBSD host running as a QEMU/KVM guest on pomelo. Its storage is a two-disk ZFS mirror (pool zroot, two WDC WD10EZEX-00MFCA0 931.5G disks, USB-attached to pomelo as sda/sdb). See hosts/radagast/source-upgrade for the full OS upgrade history.
/home/john/extdrive/vm/start-radagast-fast.sh — KVM, 12 GB RAM, 12 vCPUs, SLIRP NAT, two virtio-serial ports for UUCPssh radagast (pomelo ~/.ssh/config → localhost:2222 with ~/.ssh/id_rsa_radagast)Full detail: uucp/radagast.
FreeBSD ports tree is populated. Several data-science ports (matplotlib, pillow, pandas, etc.) failed the initial bulk install due to binary/ports conflicts; rebuild in progress. Build log streamed to pomelo via syslog: /var/log/radagast-builds.log.
Pending pip packages (not in ports): catboost, imbalanced-learn, scikeras. tensorflow after pytorch stabilises.
Full log at hosts/radagast/source-upgrade. Started at FreeBSD 10.4-STABLE (original disk install). Source-based upgrade sequence through 11.4 → 13.4 (completed 2026-09-20) → 15.1-RELEASE (completed; guest confirmed running 15.1-RELEASE across sessions through 2026-10-26). No binary upgrades; no clean reinstall.
This section records the ZFS pool layout discovered before the VM was first started, when the disks were mounted on pomelo as a Linux ZFS import.
Two SCSI/USB-attached disks (sda, sdb). Each has partition 2 (4G, PARTLABEL swap0/swap1) belonging to pool obj (left untouched) and partition 3 (927.5G, PARTLABEL disk0/disk1) belonging to pool zroot (two-way mirror).
Pool root dataset zroot mounts at /zroot; child datasets at /zroot/home, /zroot/p, /zroot/q, /zroot/tmp, /zroot/usr. Dataset zroot/linux has no mountpoint. Pool scrub history: last scrub 2024-09-08, 0 errors, both members ONLINE.
Import note: zpool import -R /zroot zroot doubled up to /zroot/zroot because mountpoints were already set. Fixed with: sudo zpool export zroot && sudo zpool import zroot.
Searched full find /zroot listing for a PhD certificate scan for Kathy (Katherine Louise Hudson). Not found. Educational certificate scans for Canada immigration are at /zroot/p/http/canadaforms/ (BEng, MSc, PGD — but no PhD). Kathy's PhD thesis drafts are at /zroot/q/other/q/home/kathy/thesis/THESIS1/. A Swiss Wohnsitzbescheinigung dated 2006 confirms she held the Dr. title by then, but is not the certificate itself. If a physical certificate exists, it needs a fresh scan.
No pomelo keys matched radagast's authorized_keys at that time. Used /zroot/home/john/.ssh/id_rsa (self-trusted in authorized_keys, RSA 2048, comment john@banana). Copied to pomelo as ~/.ssh/id_rsa_radagast and id_rsa_radagast.pub.
ML ports build guide (options files, dep chains, pkg bootstrap): radagast/ml-ports-build
QMP monitor socket, fast NVMe swap hot-add/remove procedure, and the swapoff-before-unplug lesson: radagast/fast-swap-and-qmp
2026-10-17 startup: Radagast was stopped; both WD mirror disks were present and zroot was not imported on pomelo. Started the existing launch script under a transient systemd unit with sudo systemd-run --unit=radagast-vm --description='Radagast FreeBSD VM' --property=Type=exec /home/john/extdrive/vm/start-radagast-fast.sh. This supervises the current VM without enabling host-boot autostart. Logs: sudo journalctl -u radagast-vm. Preserve graceful guest shutdown via ssh radagast shutdown -p now rather than stopping the QEMU service. Verified SSH via ssh radagast; guest reports FreeBSD 15.1-RELEASE and all pools healthy. Existing launch configuration remains 12 GiB RAM, 12 vCPUs, NAT and fast NVMe swap detached.
2026-10-17: Installed stunnel 5.82 from ports; enabled its rc.d service. Radagast has its own RSA-4096 client key and CA-signed certificate (expires 2035-01-03) for mutually authenticated kelp connections. Loopback 1080 forwards to kelp:11080; loopback 12081 forwards to kelp's Dante TLS endpoint :12080. Both authenticated paths were verified and a client without a certificate was rejected. Configuration, identity paths and checks: Radagast stunnel setup.
2026-10-17: Added persistent, supervised reverse SSH/VNC SOCKS5 BIND clients through kelp. Public SSH: kelp.critchley.biz:2225 -> kelp loopback 22225 -> Radagast :22. Public VNC: mTLS kelp.critchley.biz:15905 -> kelp loopback 5905 -> Radagast Xvnc :5902. Both verified externally and listeners re-established after disconnect. Services: socks5_bind_ssh and socks5_bind_vnc (FreeBSD rc.d/daemon). Details: Radagast remote SSH and VNC through kelp.
2026-10-20 — shut down and disks spun down at John's request. Verified the running guest's pools healthy and ZVOL swap unused, then issued ssh radagast /sbin/shutdown -p now from pomelo. QEMU exited cleanly; radagast-vm.service reported Result=success, inactive/dead, no QEMU process or open disk users remained, and the SSH/console forwards were gone. Confirmed the two WD10EZEX disks were /dev/sda (WD-WCC6Y2AP9Y0J) and /dev/sdb (WD-WCC6Y5HCVF3L); no host ZFS pools were imported. Flushed each host block device with blockdev --flushbufs, then ran sudo hdparm -y /dev/sda /dev/sdb. Verified with sudo hdparm -C /dev/sda /dev/sdb that BOTH reported standby. Left Radagast stopped and both mirror disks in standby.
2026-10-21 — restarted for a session, then shut down and disks spun down again the same day. Found stopped as left on 2026-10-20; disks present and in standby, zroot not imported on pomelo. Started with the 2026-10-17 transient-unit method (sudo systemd-run --unit=radagast-vm --property=Type=exec /home/john/extdrive/vm/start-radagast-fast.sh); guest answered SSH ~30 s later (FreeBSD 15.1-RELEASE, zroot ONLINE/healthy, 564G/920G). Shut back down at John's request: ssh radagast /sbin/shutdown -p now from pomelo → QEMU exited ~15 s later, radagast-vm.service inactive, zroot exported (not imported on host). Then blockdev --flushbufs + hdparm -y on /dev/sda (WD-WCC6Y2AP9Y0J) and /dev/sdb (WD-WCC6Y5HCVF3L); hdparm -C confirmed BOTH in standby. Left stopped, disks spun down. Pomelo access this session was via the kelp:2222 relay with the unencrypted lab-id viewer key (the old admin@kelp id_ed25519 passphrase is lost — see the private infrastructure/authorized-keys-remediation note).
2026-10-22 — started at John's request. Verified stopped, both expected WD mirror disks present (/dev/sda WD-WCC6Y2AP9Y0J and /dev/sdb WD-WCC6Y5HCVF3L), no ZFS pool imported on pomelo and no conflicting SSH/console forwards. Started the existing launch script using the transient radagast-vm.service method. Both disks became active/idle. Verified SSH via ssh radagast: FreeBSD 15.1-RELEASE, all ZFS pools healthy. Guest stunnel, socks5_bind_ssh and socks5_bind_vnc services are running. Left Radagast running with the existing 12 GiB RAM/12 vCPU configuration.