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.