project-nomad/admin/docs
Ken Eucker f0c2269a01 fix(install): build bundles from Windows and onto removable drives
Running ./install/build_offline_bundle_docker.sh from a checkout on a USB stick
failed with "No Docker socket at /var/run/docker.sock" — advice that cannot be
followed, since Docker Desktop is reached over a named pipe. Three separate
faults sat behind it.

1. Windows was never supported despite the docs claiming otherwise. The socket
   test only means something where a socket file is what gets mounted; MSYS also
   rewrites the Unix-looking paths in every -v argument. Guard the test, convert
   mount sources with cygpath, and set MSYS_NO_PATHCONV so targets, the socket
   path and the workdir survive verbatim.

2. Identity mapping broke on Windows. The build starts further containers whose
   bind mounts are resolved by the host daemon, so a path must mean the same
   thing on both sides. On Linux that is free. On Windows it is not: the daemon
   speaks Windows paths and a Linux container cannot have a directory called
   C:/Users. Mount inside the container at /run/desktop/mnt/host/<drive>/… —
   the form Docker Desktop's VM resolves — and hand the inner script the same.

   Without this the APT resolver wrote 106 .debs into a phantom directory and
   the build died with "no package index was produced". That check happens to
   run host-side; had it run in the container, the result would have been a
   bundle that built, self-verified, and was empty.

3. Docker Desktop shares only fixed drives. Removable and exFAT volumes mount as
   an EMPTY directory instead of failing. Probe each path with a marker file, and
   work around what is found: stage the checkout when the source is unmountable,
   and build into staging then copy across when the output is. Writing a bundle
   straight to the USB stick it will travel on is the whole point of the tool, and
   the host can write there even when the daemon cannot read there.

Verified end to end on Windows/Git Bash from an exFAT checkout: a 978 MB bundle
with 106 .debs and 6 images landed on the removable drive, and
verify_offline_bundle.sh passes against that copy.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 22:47:45 -07:00
..
about.md chore: standardize brand name to Project NOMAD, retire backronym 2026-08-04 03:37:32 +00:00
api-reference.md feat: auto-generating OpenAPI docs with Scalar UI (#1128) 2026-08-04 03:38:33 +00:00
community-add-ons.md chore: standardize brand name to Project NOMAD, retire backronym 2026-08-04 03:37:32 +00:00
drug-reference.md docs: add an in-app Drug Reference guide (#1161) 2026-08-04 03:39:58 +00:00
faq.md docs: document Ubuntu 26.04 LTS as the recommended OS in the in-app docs (#1159) 2026-08-04 03:39:59 +00:00
getting-started.md docs: document Ubuntu 26.04 LTS as the recommended OS in the in-app docs (#1159) 2026-08-04 03:39:59 +00:00
home.md chore: standardize brand name to Project NOMAD, retire backronym 2026-08-04 03:37:32 +00:00
offline-install.md fix(install): build bundles from Windows and onto removable drives 2026-08-15 22:47:45 -07:00
release-notes.md docs(release): finalize v1.34.0 release notes [skip ci] 2026-08-04 03:46:26 +00:00
supply-depot-apps.md docs: point MeshCore Web to the official meshcore.io site (#1142) 2026-08-04 03:38:41 +00:00
updates.md chore: standardize brand name to Project NOMAD, retire backronym 2026-08-04 03:37:32 +00:00
use-cases.md chore: standardize brand name to Project NOMAD, retire backronym 2026-08-04 03:37:32 +00:00