Restore the libvirt/virsh ISO testing script that was deleted in commit
c1d8c5d ("will fold into run.sh" but never was). run.sh still references
test-iso.sh via the test:iso command, so it must exist.
The original script had several issues preventing it from running on
this host. This commit restores it from git history (commit 241510c)
with the following fixes:
- Disk path: Changed from /var/lib/libvirt/images/ (root-owned) to
./tmp/ (writable by user), avoiding permission denied errors
- CPU model: Changed from deprecated "host" to "host-model" per
virt-install warning
- Graphics: Simplified from Spice with channel to plain VNC, fixing
"virtio-serial-bus: A port already exists" error
- Networking: Removed --network flag (no libvirt default network
available on this host; not needed for ISO boot testing)
- Sudo: Removed unnecessary sudo from qemu-img and rm commands
(user is in libvirt group and disk is in local tmp/)
- Startup: Removed redundant virsh start after virt-install (which
already starts the domain), fixing "Domain is already active" error
Commands:
./run.sh test:iso create Create and boot test VM from ISO
./run.sh test:iso console Connect to VM serial console
./run.sh test:iso status Show VM status
./run.sh test:iso destroy Stop and remove VM
Tested: VM boots successfully from the 450M ISO artifact.
💘 Generated with Crush
Assisted-by: GLM-4.7 via Crush <crush@charm.land>
This commit addresses every shellcheck warning (severity: warning and
above) across the project's shell scripts. Only SC1091 info-level
notices remain (sourced files not available during static analysis),
which is expected and unavoidable in the Docker build workflow.
Changes by file:
src/build-iso.sh
- Replace Unicode checkmark/cross characters (✓, ✗) with ASCII
equivalents (PASS:, FAIL:) to eliminate commitBuffer encoding errors
- Replace useless `cat | cut` pipeline with direct file redirect
(`cut -d' ' -f1 < file`), resolving SC2002
src/security-hardening.sh
- Pass optional arguments through the function call chain in
apply_security_hardening() to resolve SC2119/SC2120 (functions
reference $1 but are called without arguments)
src/firewall-setup.sh
- Pass optional arguments through apply_firewall() in main() to
resolve SC2119/SC2120
config/hooks/installed/encryption-setup.sh
- Consolidate four individual `echo >> file` redirects into a single
`{ cmd1; cmd2; } >> file` block, resolving SC2129
- Add shellcheck disable directive for intentional SC2016 in sed
command (single quotes are required by sed, not a mistake)
config/hooks/installed/encryption-validation.sh
- Replace remaining Unicode checkmark characters with ASCII
Verification:
shellcheck --severity=warning src/*.sh config/hooks/**/*.sh
=> zero warnings, zero errors
💘 Generated with Crush
Assisted-by: GLM-4.7 via Crush <crush@charm.land>