Check your machine against the checklist
kind: drill
Go through the seven items of "Before you touch the disk" for your own machine and record for each one: done, or what is still missing. Amount of RAM, free disk space, virtualisation in the BIOS, fast startup, SATA mode, Secure Boot, and where the BitLocker recovery key is kept.
Solution
There is no single right answer — the point is the record. Every open item is your homework before the installation. The two that cost the most time later are the recovery key and free space below 100 GB.
Prove that the setup script is idempotent
kind: drill
Run ./setup-tools.sh, wait for it to finish, then run it a second time. Compare
the output of the two runs.
Solution
The second run reports [ok] for every step and installs nothing — no line
starts with [install]. That is the observable definition of idempotent: same
end state, no damage, no duplicate work.
Interrupt a run with kbd:[Ctrl+C] and start it again — it continues from where the state actually is, not from where it stopped.
This is exactly the property the pipeline of klassen-setup checks on every
push: it runs the script twice in a fresh Ubuntu container and fails if the
second run contains a single [install].
Interrupt a run on purpose
kind: drill
Start ./setup-tools.sh on a machine that still has tools missing, interrupt it
during an installation step, and restart it.
Solution
The restart skips everything already installed and resumes at the first missing tool. If it did not, the script would be unusable in a classroom, where an interrupted run is the normal case rather than the exception.