packaging/windows: fix BTRFS+QEMU boot-loop, document what's confirmed #3
@ -6,12 +6,28 @@ machine and no GitHub, by booting a real Windows VM inside a container
|
|||||||
hood, no license key needed for the eval install it fetches automatically)
|
hood, no license key needed for the eval install it fetches automatically)
|
||||||
and driving the whole build over a shared folder.
|
and driving the whole build over a shared folder.
|
||||||
|
|
||||||
**Status: written, not yet run against a real boot.** Everything here
|
**Status: has actually been run.** Two real environment issues hit and
|
||||||
follows dockur/windows's and WiX's documented mechanics, but there's no
|
fixed so far (both already applied in this directory, see "Confirmed
|
||||||
KVM/Windows available in the environment this was authored in to actually
|
issues hit" below); Windows install itself was still in progress as of
|
||||||
exercise it end to end. Treat the first run as a debugging session, not a
|
last check. `oem/install.bat` onward (MSYS2/GTK4/WiX provisioning, the
|
||||||
push-button success — watch it happen at http://localhost:8006 (dockur's
|
actual .msi packaging) has NOT been reached/exercised yet — treat that
|
||||||
noVNC viewer) so you can see where it's stuck if it stalls.
|
part as still a debugging session, not a push-button success. Watch it
|
||||||
|
happen at http://localhost:8006 (dockur's noVNC viewer) if it stalls.
|
||||||
|
|
||||||
|
## Confirmed issues hit (on Fedora + BTRFS)
|
||||||
|
|
||||||
|
- **SELinux blocks the bind mounts** ("Storage folder (/storage) is not
|
||||||
|
writeable!") — fixed with `:Z` on every volume in `docker-compose.yml`.
|
||||||
|
Harmless no-op on a host without SELinux.
|
||||||
|
- **BTRFS + QEMU disk images boot-loop Windows Setup for hours** with no
|
||||||
|
error, just the same boot-manager log lines repeating forever and the
|
||||||
|
disk barely growing — dockur/windows warns about this itself
|
||||||
|
("you are using the BTRFS filesystem for /storage, this might
|
||||||
|
introduce issues with Windows Setup!"), and on this host it wasn't
|
||||||
|
idle chatter. Fixed by disabling copy-on-write on `storage/` before
|
||||||
|
the VM ever writes to it (`chattr +C`, only affects files created
|
||||||
|
after it's set, so it needs an empty directory) — `build_windows.sh`
|
||||||
|
now does this itself on every run. No-op on a non-btrfs filesystem.
|
||||||
|
|
||||||
## How it fits together
|
## How it fits together
|
||||||
|
|
||||||
|
|||||||
@ -30,6 +30,17 @@ fi
|
|||||||
command -v docker >/dev/null 2>&1 || { echo "docker not found." >&2; exit 1; }
|
command -v docker >/dev/null 2>&1 || { echo "docker not found." >&2; exit 1; }
|
||||||
|
|
||||||
mkdir -p storage oem shared/src shared/dist "$OUT_DIR"
|
mkdir -p storage oem shared/src shared/dist "$OUT_DIR"
|
||||||
|
# dockur/windows itself warns about this ("you are using the BTRFS
|
||||||
|
# filesystem for /storage, this might introduce issues with Windows
|
||||||
|
# Setup!") and it's not idle: confirmed on this host as a genuine
|
||||||
|
# multi-hour Windows Setup boot-loop (repeating the same boot-manager
|
||||||
|
# log lines forever, disk barely growing) -- QEMU disk images on a
|
||||||
|
# copy-on-write filesystem are a known bad combination. +C only takes
|
||||||
|
# effect for files created AFTER it's set on an empty directory, so
|
||||||
|
# this only helps on a fresh/emptied storage/; it's a no-op (harmless,
|
||||||
|
# chattr just errors quietly) on a non-btrfs filesystem or an
|
||||||
|
# already-populated storage/ from a previous run.
|
||||||
|
chattr +C storage 2>/dev/null || true
|
||||||
|
|
||||||
echo "==> starting the Windows build VM (docker compose up -d)"
|
echo "==> starting the Windows build VM (docker compose up -d)"
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user