Skip to content

Releases

v0.5.1

Choose a tag to compare

@github-actions github-actions released this 30 Oct 10:26

Installs over a private QEMU network no longer stall for minutes after the guest drops packets.

Fixes

  • Installs no longer stall for minutes after lost packets. When an emulated machine's network card drops a burst, Instigator now resends the rest straight away instead of waiting longer after every retry. Before, one install could sit idle for more than ten minutes in total.
  • The install shell sends directory listings and other short output in fewer, fuller packets, so emulated machines drop them less often.

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 07:19

Instigator can now share host folders with IRIX as well as serve installation media. The release also includes ready-made IRIX configurations and guides for installing, sharing, extracting files, and troubleshooting.

File sharing

  • instigator share exports host directories, read-write, over NFSv2 and NFSv3 on UDP and TCP, with portmap and MOUNT. It can listen on the host network or a private QEMU network. Private-network mode needs no root privileges.
  • serve --share NAME=DIR adds shares alongside installation media on a private network. Repeat --share for several exports.
  • Shares stay inside their host directory, including when resolving symlinks. Guest writes run as the user who started Instigator. File handles survive restarts, with a persistent path table on Windows and filesystems without file birth times.

Installation and networking

  • Shipped configs cover IRIX 6.5.30 standard and minimal installations, and IRIX 6.5.22 standard installations. Media URLs are filled in. Change the server and client addresses before use. The general addons: list adds the supplied MIPSpro or RAD4 installation files.
  • IP22 sets print the 32-bit fx.ARCS partitioner boot command. The hardware guide explains returning to the maintenance menu to boot the installer. Indy and Indigo2 installation remains untested on hardware.
  • Private networks answer DHCP alongside BOOTP and can offer a hostname. share --client MAC=IP,HOSTNAME supplies those settings without an installation config.
  • dhcp_server_id and share --dhcp-server-id let a guest keep the same DHCP server identity when moving between private and QEMU user networks. For Origami's default user network, use 192.0.2.2. The server's own address and BOOTP replies stay unchanged. Long-term lease renewal has not been observed from IRIX.

Fixes

  • Remote image reads retry transient range-request failures.
  • NFS UDP socket buffers are raised for macOS transfers.
  • Private share shutdown no longer blocks on failure reports.

NFS has no NLM locking or NFSv4 support. Path-table handles cannot detect a host process replacing a file at the same path. See the sharing guide for permissions, ports, and limitations.

v0.4.2

Choose a tag to compare

@github-actions github-actions released this 29 Oct 17:38

Changelog

  • 9dae95b nfs: record RPC transcripts of the read-only server
  • 77ecc48 nfsexport: export symlinks and read past the end as empty
  • a76f901 qemunet: emit firmware-compatible Ethernet datagrams

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 28 Oct 05:21

Changelog

  • 06c9fad check: probe remote sources instead of reading them

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 03:39

Source builds require Go 1.27.1 or newer.

Instigator can now extract files from SGI install media and run add-on installation and post-install commands from generated scripts.

  • instigator extract reads products from images, directories, or configured install sets and writes their files with a JSONL manifest. --manifest-only inspects entries without reading archives. --unpack removes installed .Z and .z compression. Extraction combines ordered sets into an installed view, but it does not apply every replacement rule that IRIX inst uses. Check the manifest before using the output as an exact installed system.
  • Mark third-party media addon: true and select it in an install script's then pass to install it after the operating system. This preserves operating-system links that a driver could otherwise replace with directories during the first pass. Each go is timed separately.
  • An install script's post_install commands run through shroot after its last go. The completion line appears only after every command succeeds. Instigator restores the default /bin/csh shell preference on success. If a command fails, inst stops the command file and leaves /bin/sh selected.

Release archives include the third-party notices for the extraction decoders. Binaries: Linux and macOS (amd64/arm64), Windows (amd64).

v0.3.2

Choose a tag to compare

@github-actions github-actions released this 04 Oct 02:36

Source builds require Go 1.27.1 or newer.

Instigator reports its executable version and records elapsed time for generated install attempts.

  • instigator --version reports the module version embedded by Go. Submodule and worktree builds record Instigator's own revision and dirty state.
  • Generated install scripts log timestamped starts and returns from go, including the script, client, attempt and elapsed time. Captures retain these events, and trace summaries pair them by attempt. Missing returns remain incomplete.
  • Command-line failures include a timestamp and error severity.

Install timing includes marker fetch overhead and prompts during go. A return confirms that execution reached the command after go. Verify installation success from guest output and first boot. Handwritten scripts have no timing markers.

Generated handoffs were tested with installed IRIX 6.5 inst 4.1. A complete successful miniroot installation with the timing markers has not been verified.

Binaries: Linux and macOS (amd64/arm64), Windows (amd64).

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 03 Oct 09:40

Private-network installs use fewer backing reads, allocations, and socket writes.

  • Small dd blocks are grouped into about 32 KiB transfers while preserving count, skip, record accounting, and foreground interruption.
  • QEMU private networking batches up to 32 frames already queued and flushes immediately when the queue empties. Receive scratch is reused after packets are copied into gVisor-owned storage.
  • IRIX SIGINT requests interrupt supported foreground file transfers, allowing the installer to seek without first receiving the rest of each file. Background sessions and unsupported pipelines keep their previous signal behavior.
  • A complete QEMU frame header with a missing body is reported as a truncated frame.

In one fresh-disk QEMU/IRIX comparison on macOS, the grouped-transfer and framing
changes reduced the package phase from 27m45s to 22m51s. Median fixed-transfer
throughput increased from 25.3 to 31.9 MB/s. All six guest checksums matched, and
both installations rebooted to serial login.

This comparison predates the SIGINT fix and does not measure its additional
effect. Both installers logged the same package diagnostics. Details and limits
are in docs/qemu-network-performance.md.

Binaries: Linux and macOS (amd64/arm64), Windows (amd64).

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 08:03

IRIX media validation, V7 archives, and Windows private-network installs.

  • instigator check assembles and validates the configured media tree before service ports are bound. It accepts a config file or standard input. Local .tar, .tardist, and compressed archive sources are supported. Ordered replacements entries let a named later layer replace files from one earlier layer. Unrelated conflicts still require an exact collision winner.
  • V7 tar archives inside gzip now unpack through the bounded extraction path. Named install selections are checked against served .sw or .man files, including the selected package type.
  • Windows QEMU installs can use --network-tcp with an explicit loopback IP and port. It uses the same framed private network as the Unix socket mode. The first local process to connect takes the single install session.
  • When inst opens its numbered distribution menu after the primary source is reopened, choose the done item on the guest console. The sourced install script then continues with its package selections.
  • Private install shells remain open during long quiet transfers. If the QEMU machine disconnects, Instigator stops serving and records that reason in the capture.

Binaries: Linux and macOS (amd64/arm64), Windows (amd64).

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 05 Sep 22:06

Readiness signalling, always-lazy raw images, and multi-homed BOOTP.

  • Readiness over sd_notify. serve reports ready once the install sets are built and the listeners are bound, so a Type=notify unit or systemd-notify --fork learns when it is serving. The operational log moves to stderr, and a readiness report that cannot be delivered is now fatal rather than ignored.
  • Raw images are always read by HTTP byte-range. The per-layer sha256 key is gone, and ignored if still present, so a full disc is never downloaded just to verify it.
  • BOOTP replies leave by the interface the request arrived on, which is correct on a multi-homed host.
  • The command line is parsed with urfave/cli.

Binaries: Linux and macOS (amd64/arm64), Windows (amd64).

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 02 Sep 15:49

Changelog

  • d775c41 Merge pull request 'serve: keep setuid, setgid, and sticky bits on served files' (#13) from efs-mode-bits into main
  • cdb8bc9 bootp: enable SO_BROADCAST on Windows
  • cb5990e config: source/base/stand/sha256 layers and a credentials block
  • 7b92398 efs: add read-only io/fs.FS view over an image
  • 351a47f efs: carry the inode mode in the fs view's Stat
  • a147ddb efs: report special-file types through the fs view
  • 03503b9 efs: separate a missing entry from a read error, and sort dir entries
  • 62fe0ae rcmd: match Winsock error codes on Windows
  • 5b5a2e2 release: build macOS and Windows binaries
  • 1cefb14 serve: hint at privilege when a bind is refused
  • 9347504 serve: keep setuid, setgid, and sticky bits on served files
  • eca0f7d serve: redact URL sources in logs and run.json
  • ee62486 serve: resolve layer sources through a configured source resolver
  • 5ca0f36 source: add fetch timeouts
  • 768a2c9 source: bound the range reader's chunk cache
  • 510497e source: check the cache file close before verifying
  • 1fbbf97 source: chunk-caching byte-range reader with a consistency pin
  • 2b18933 source: content-identity cache with atomic install
  • bf14356 source: end-to-end test of a remote set served through Build
  • f8b0e22 source: guard the range reader for concurrent reads
  • 480cfba source: harden and test the tar extractor's symlink checks
  • 741fc02 source: harden the credential redirect check and the fallback store
  • c67f456 source: host-matched basic auth credentials from config
  • a8d3e45 source: key the fetch cache on the full url
  • 983196f source: prove ForceWhole takes the whole-file branch
  • 72df917 source: reject a 200 to a ranged chunk GET instead of caching it
  • 675fb64 source: remove dead ExpandEnv
  • ac7951c source: replace buf-readerat with an owned concurrency-safe chunk cache
  • 1619510 source: resolve a local or remote source to a read-only filesystem
  • e9a27a8 source: rework fetch, extract and range reads onto libraries
  • 82a2678 source: safe extractor for raw, gzip and tar archives
  • 69b956b source: signal EOF only on a short range read
  • 70d8f89 source: strip auth on cross-host redirect
  • 322cf31 source: test the whole-file fetch fallback and cache reuse
  • ea744af source: whole-file fetch with optional sha256 verification
  • c665c16 vfs: assemble the tree through one io/fs.FS walker
  • c5c31ae vfs: build install sets from a resolved source, with base and stand
  • 798f7cc vfs: document the over-climbing-symlink divergence in resolveLink
  • 2dc6b6c vfs: drop the dead source.closer field
  • dacce88 vfs: fix ownerOf's comment on directory-layer permissions
  • 6dfaa0b vfs: generalize Close's doc, fix a test that skipped its own check
  • b646fd3 vfs: guard the directory-layer symlink origin invariant
  • 0853a78 vfs: move the mkfifo test to a unix-tagged file
  • bd32a9d vfs: open an image from any reader and add the resolver seam
  • 1571f5d vfs: preserve setuid, setgid, and sticky bits on image files
  • fc22ae5 vfs: verify a shared source against every layer's digest