-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathiris.toml
More file actions
183 lines (161 loc) · 7.37 KB
/
Copy pathiris.toml
File metadata and controls
183 lines (161 loc) · 7.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# iris.toml — IRIS emulator configuration
# All paths are relative to the directory you run iris from.
# Command-line flags override any value set here.
# Run without graphics: no window, no REX3. Independent of audio.
# Can also be set with the --headless command-line flag.
headless = false
# Disable audio emulation (no HAL2). Independent of graphics/headless.
# Can also be set with --noaudio.
no_audio = false
# PROM ROM image (required).
prom = "prom.bin"
# Window scale factor. Uses logical points (macOS) / DPI-scaled pixels, so
# scale=2 is visibly ~2× bigger than scale=1 on every display.
# Valid: 1, 2, 3, or 4.
# Can also be set with the --2x command-line flag (CLI takes precedence).
scale = 1
# Scroll wheel sensitivity: pixels of trackpad/wheel movement per PS/2 detent.
# Lower = faster scroll; higher = slower. Tune to taste for your hardware.
# 40 works well for most Linux trackpads; try 80–120 if scroll is too fast.
#mouse_scroll_pixels_per_line = 40
# RAM bank sizes in MB.
# Each bank must be 0 (absent), 8, 16, 32, 64, or 128.
# The SGI Indy supports up to two populated banks; banks 2 and 3 are
# typically absent. Total RAM = sum of non-zero banks.
banks = [128, 128, 0, 0]
# NAT subnet for the internal network (CIDR notation).
# The gateway gets host .1 and IRIX gets host .2.
# Change this if 192.168.0.x conflicts with your local network.
#nat_subnet = "192.168.5.0/24"
# SCSI devices.
# Valid IDs: 1–7. The SCSI controller itself occupies ID 0.
# Typical Indy layout:
# ID 1 — internal hard disk
# ID 4 — internal CD-ROM (removable, 512-byte block mode)
# ID 6 — optional second hard disk or tape
# Internal hard disk
[scsi.1]
path = "scsi1.raw"
cdrom = false
#overlay = true
# Internal hard disk
#[scsi.2]
#path = "scsi2.raw"
#cdrom = false
# Scratch volume for host<->guest file injection without networking.
# iris auto-creates the file at `path` if missing — first 4 KB hold a minimal
# SGI Volume Header (so IRIX recognises the device); the rest (size_mb MB
# minus 4 KB) is the host-controlled payload area. The CI socket exposes
# scratch-write/scratch-read/scratch-clear/scratch-info; offsets passed to
# those commands are relative to the payload start, so the VH is never
# touched. The guest reads the same bytes at offset 0 of /dev/rdsk/dks0dNvol.
# No higher-level format is imposed — typical use is a tar stream:
# host: iris CI: scratch-write {host_path: "bundle.tar"}
# guest: dd if=/dev/rdsk/dks0d2s0 bs=512 | tar xf -
# tar cf - /var/log/foo | dd of=/dev/rdsk/dks0d2s0 bs=512 conv=notrunc
# host: iris CI: scratch-read {to_path: "log.tar"}
# IRIX raw block-device reads must be sector-aligned (bs must be a multiple
# of 512); bs=64 etc returns "Read error: I/O error".
# Implies cdrom=false, overlay=false (the volume must be host-writable, and
# scratch contents intentionally survive snapshot rollback so a freshly
# injected bundle isn't reverted).
#[scsi.2]
#path = "scratch.raw"
#cdrom = false
#overlay = false
#scratch = true
#size_mb = 64
# NAT subnet for the internal network (CIDR notation).
# The gateway gets host .1 and IRIX gets host .2.
# Change this if 192.168.0.x conflicts with your local network.
#nat_subnet = "192.168.0.0/24"
# NFS share — requires unfsd on the host.
# The shared directory is exported to the VM at <gateway_ip>:/path (standard NFS port 2049).
# From IRIX: mount <gateway_ip>:/absolute/path /mnt (default gateway: 192.168.0.1)
[nfs]
shared_dir = "./shared"
# Port forwarding rules — forward host ports into the guest (IRIX).
# proto: "tcp" or "udp"
# host_port: port to listen on on the host
# guest_port: port inside the VM to forward to
# bind: "localhost" (loopback only, default) or "any" (all interfaces)
#
# Example: forward host TCP 2323 → IRIX telnet (23), localhost only:
[[port_forward]]
proto = "tcp"
host_port = 2323
guest_port = 23
bind = "localhost"
#
# Example: forward host UDP 5353 → IRIX port 5353, all interfaces:
#[[port_forward]]
#proto = "udp"
#host_port = 5353
#guest_port = 5353
#bind = "any"
#[[port_forward]]
#proto = "udp"
#host_port = 7777
#guest_port = 7
#bind = "localhost"
# Internal CD-ROM.
# For a single disc, set path only.
# For a changer (cycled with "scsi eject 4" in the monitor), list all
# ISO images in `discs`; the first entry is mounted at startup.
#[scsi.4]
#path = "cdrom4.iso"
#cdrom = true
#discs = ["second.iso", "cdrom4.iso", "patches.iso"]
# Runtime disc switching (no extra config needed).
# Load any ISO/CHD at runtime by pressing Ctrl+F12 (RCtrl+F12 in the standalone
# window, Ctrl/Cmd+F12 in the GUI) and picking a file. Behaviour follows the
# number of discs queued for the drive:
# - empty tray: the picked disc simply loads
# - one disc: loading another replaces it
# - two+ discs: ejecting cycles through them; a single disc ejects to empty
# `path` is optional: omit it (or comment it out) to boot with an empty tray and
# insert media later.
#[scsi.4]
#cdrom = true
#path = "cdrom4.iso" # optional — omit to start with an empty tray
#[vino]
#source = "camera"
# ── Networking backend ────────────────────────────────────────────────────────
# mode = "nat" (default) : built-in software NAT gateway (DHCP/DNS/ICMP/TCP/UDP
# + the [[port_forward]] rules above). No host
# privileges or extra libraries needed.
# mode = "pcap" : bridge the guest's raw Ethernet frames onto a real
# host interface (requires building with --features
# pcap and elevated privileges). The guest becomes a
# real L2 host on your LAN; NAT services and port
# forwarding do NOT apply in this mode.
#
# List candidate interfaces: iris --list-net-interfaces
# (or, in the monitor: net interfaces)
#
# pcap_interface accepts EITHER:
# - a 1-based index from --list-net-interfaces, e.g. "1" (easiest, esp. Windows)
# - an exact device name, e.g. "eth0" / "en0"
# - omit it entirely: if launched from a terminal you'll get an interactive
# menu to pick the interface; if there's no console (headless/CI) it
# auto-picks the first up, non-loopback NIC.
#
# IMPORTANT (Windows): device names look like \Device\NPF_{GUID}. Backslashes are
# escape characters inside a normal "double-quoted" TOML string, so you MUST use a
# 'single-quoted' TOML *literal* string (no escaping), or just use the index.
#
# NOTE: the [network] header below is REQUIRED. If you uncomment `mode`/
# `pcap_interface` but leave `[network]` commented out, the keys land in the
# top-level table and are rejected as unknown (the emulator will refuse to
# start) — they only take effect under the [network] table.
# N64 development board (Ultra64 GIO card).
# Requires gopher64 patched with src/device/sgi_dev.rs to be running.
# IRIS creates the POSIX shm (/iris_n64_bridge) and two semaphores on startup.
# gopher64 opens them; it must be started AFTER iris.
[network]
mode = "nat"
#pcap_interface = "1" # by index (recommended)
#pcap_interface = "wlan0" # by name (Linux/macOS)
#pcap_interface = '\Device\NPF_{385F30D0-9166-45D3-BBC6-F1D9C5300AF9}' # Windows (literal '...' string!)
#[ultra64]
#enabled = true