NeoForge 21.1.x targets Java 21. Fedora 43 ships an early-access JDK 26 as the
default java, which satisfied the ">= 21" check and then failed inside
ModLauncher — the server started, logged "JVM identified as ... 26-ea+32", and
died with no obvious cause.
mc-service-setup.sh now locates a real Java 21 under /usr/lib/jvm, refuses to
continue if there is none, and writes its absolute path into ExecStart so the
service does not follow whatever /usr/bin/java points at later.
install.sh checks for Java 21 specifically rather than for any java, so the
prerequisite step actually installs it on a host that already has a newer JDK.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Deploying from removable media needed a single entry point that does not
require remembering a long flag line at a console.
install.sh reads deploy.conf, installs missing prerequisites with dnf, checks
that the share is actually mounted, optionally caps the ZFS ARC, runs the
deploy and can start the server. It copies itself off read-only media to the
home directory first, since the deploy needs somewhere writable. --check
validates the machine and changes nothing.
ACCEPT_EULA must be set to yes in the config; the installer will not infer it.
build.sh --iso produces a bootable-media image via xorrisofs/genisoimage/
mkisofs, carrying a ready-to-edit deploy.conf and a README.FIRST.txt.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>