user@homelab:~/docs$ cat troubleshooting.md
Troubleshooting
Technical problems hit while building the homelab: symptom, cause and fix
# contents
| # | Symptom | Cause | Fix |
|---|---|---|---|
| 1 | Windows installer requires network and a Microsoft account | default Win11 Home behaviour | Shift+F10 → start ms-cxh:localonly, Ventoy VTOY_WIN11_BYPASS_NRO |
| 2 | After installing Windows, USB no longer boots | Windows Boot Manager first in UEFI | Novo → Boot Menu → EFI USB Device |
| 3 | Ubuntu: Probing for devices to install to failed, Invalid dep_id (disk-dm-1) | Ventoy maps the ISO via device-mapper | Ventoy → Boot in grub2 mode |
| 4 | Ubuntu: no Add GPT Partition and no free space | in grub2 mode the installer did not scan gaps between partitions | sgdisk -n 0:0:0 … in the installer shell, then reboot |
| 5 | Wi-Fi does not work (not even a hotspot) | rfkill soft=1 + empty wifis: {} in netplan | unblock via /sys/class/rfkill/*/soft + 50-wifi.yaml |
| 6 | No rfkill in the installer | minimal environment | install without network, fix in the installed system |
| 7 | GRUB menu not shown | Ubuntu Server has GRUB_TIMEOUT=0 | GRUB_TIMEOUT_STYLE=menu, GRUB_TIMEOUT=5 |
| 8 | Windows listed twice in GRUB | os-prober + a manual entry in 40_custom | remove the manual entry |
| 9 | Reservation on the ISP router has no effect | addresses are handed out by the own Wi-Fi router behind it | DHCP reservation on the router that is the gateway (route -n get default) |
| 10 | Flux: apps reports dependency ‘flux-system/infra’ is not ready | after a new commit infra syncs first (dependsOn) | nothing, it resolves shortly; to speed up: flux reconcile kustomization apps |
Useful diagnostic commands
lsblk -o NAME,SIZE,MODEL,MOUNTPOINTS # disks and partitions
sudo parted /dev/sda unit GiB print free # including free space
grep . /sys/class/rfkill/*/{name,soft,hard} # radio blocks
ip -br addr ; ip route # addresses and gateway
networkctl status wlp3s0 --no-pager # Wi-Fi state
sudo journalctl -u ssh -n 20 --no-pager # why SSH rejected a login
sudo sshd -T | grep -i auth # effective sshd config
sudo ufw status verbose # firewall
k get pods -A ; k get events -A --sort-by=.lastTimestamp | tailLessons learned
- No network? Scripts on a USB disk: diagnostics and configuration as a script, with output saved to a file instead of retyping.
- Test key login before disabling passwords, and keep a second SSH session open as a safety net.
- Fixed IP before k3s: k3s writes the address into its certificates and kubeconfig.