Add vsock-backed SSH session reminders
Remind users when a VM is still running after hanger vm ssh exits instead of silently dropping them back to the host shell.\n\nAttach a Firecracker vsock device to each VM, persist the host vsock path/CID,\nadd a new guest-side banger-vsock-pingd responder to the runtime bundle and both\nimage-build paths, and expose a vm.ping RPC that the CLI and TUI call after SSH\nreturns. Doctor and start/build preflight now validate the helper plus\n/dev/vhost-vsock so the feature fails early and clearly.\n\nValidated with go mod tidy, bash -n customize.sh, git diff --check, make build,\nand GOCACHE=/tmp/banger-gocache go test ./... outside the sandbox because the\ndaemon tests need real Unix/UDP sockets. Rebuild the image/rootfs used for new\nVMs so the guest ping service is present.
This commit is contained in:
parent
4930d82cb9
commit
08ef706e3f
31 changed files with 912 additions and 75 deletions
14
README.md
14
README.md
|
|
@ -4,6 +4,7 @@ Persistent Firecracker development VMs managed through a Go daemon, CLI, and TUI
|
|||
|
||||
## Requirements
|
||||
- Linux host with KVM (`/dev/kvm` access)
|
||||
- Vsock support for post-SSH liveness reminders (`/dev/vhost-vsock`)
|
||||
- Core VM lifecycle: `sudo`, `ip`, `dmsetup`, `losetup`, `blockdev`, `truncate`, `pgrep`, `chown`, `chmod`, `kill`
|
||||
- Guest rootfs patching: `e2cp`, `e2rm`, `debugfs`
|
||||
- Guest work disk creation/resizing: `mkfs.ext4`, `e2fsck`, `resize2fs`, `mount`, `umount`, `cp`
|
||||
|
|
@ -21,6 +22,7 @@ generated `./runtime/` bundle, while installed binaries use
|
|||
|
||||
The bundle contains:
|
||||
- `firecracker`
|
||||
- `banger-vsock-pingd` for the guest-side SSH reminder responder
|
||||
- `bundle.json` with the bundle's default kernel/initrd/modules/rootfs paths
|
||||
- a kernel, initrd, and modules tree referenced by `bundle.json`
|
||||
- `rootfs-docker.ext4`
|
||||
|
|
@ -64,7 +66,8 @@ URL. `make install` will not fetch artifacts for you.
|
|||
make build
|
||||
```
|
||||
|
||||
Run `make build` after `./runtime/` has been bootstrapped.
|
||||
Run `make build` after `./runtime/` has been bootstrapped. It also rebuilds the
|
||||
bundled `banger-vsock-pingd` guest helper in `./runtime/`.
|
||||
|
||||
Install into `~/.local/bin` by default, with the runtime bundle under
|
||||
`~/.local/lib/banger`:
|
||||
|
|
@ -102,6 +105,9 @@ SSH into a running VM:
|
|||
banger vm ssh calm-otter
|
||||
```
|
||||
|
||||
When the SSH session exits normally, `banger` checks the guest over vsock and
|
||||
reminds you if the VM is still running.
|
||||
|
||||
Stop, restart, kill, or delete it:
|
||||
```bash
|
||||
banger vm stop calm-otter
|
||||
|
|
@ -160,6 +166,7 @@ Useful config keys:
|
|||
- `ssh_key_path`
|
||||
- `namegen_path`
|
||||
- `customize_script` (manual helper compatibility; `banger image build` is Go-native)
|
||||
- `vsock_ping_helper_path`
|
||||
- `default_rootfs`
|
||||
- `default_base_rootfs`
|
||||
- `default_kernel`
|
||||
|
|
@ -197,9 +204,10 @@ banger image build --name docker-dev --docker
|
|||
```
|
||||
|
||||
Rebuilt images install a pinned `mise` at `/usr/local/bin/mise`, activate it
|
||||
for bash login and interactive shells, install `opencode` through `mise`, and
|
||||
for bash login and interactive shells, install `opencode` through `mise`,
|
||||
configure `tmux-resurrect` plus `tmux-continuum` for `root` with periodic
|
||||
autosaves and manual-only restore by default.
|
||||
autosaves and manual-only restore by default, and bake in the
|
||||
`banger-vsock-pingd` systemd service used by the post-SSH reminder path.
|
||||
|
||||
Show or delete images:
|
||||
```bash
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue