Installing Amix (Emulation-First Walkthrough)¶
This page walks the complete Amix 2.1 install, from the two install floppies through partitioning, streaming the distribution off a SCSI tape, building the kernel into the boot partition, first boot, and finally applying the patch disk to reach kernel 2.1c (2.1p2a). The flow below is reconstructed from the actual scripts on the install floppies ✅ — every step maps to something the installer really does.
Before you start: stand up an emulator first. This page assumes a working virtual A3000 with the correct CPU/MMU/FPU and two SCSI targets (a disk on ID 6, a tape on ID 4). Set that up with the WinUAE setup guide (the reference target) or the FS-UAE setup guide, or Amiberry 8.x — which also emulates the A3000 SCSI disk + tape Amix needs. There is no working QEMU recipe 🟡. For period-correct real hardware instead of emulation, see installing on real hardware.
Licensing: the boot/root/patch floppies and the distribution are Commodore material. Since 2026-09-23 the Amix release restriction is lifted (Amiga Corporation's approval — see
AGENTS.md§5); until then this project treated them as abandonware, not licensed for redistribution. This repo does not ship them. Obtain the images yourself from amigaunix.com / archive.org. Verify them againstsources/CHECKSUMS.txtbefore use.
The three floppies and what each does¶
Amix 2.1 installs from three 880 KB Amiga floppy images. Their internals are documented in detail on the boot disk anatomy, root disk anatomy, and patch disk anatomy pages; the short version:
| Floppy | Role | Contents (✅) |
|---|---|---|
amix_21_boot.adf |
Bootstrap | AmigaDOS OFS bootblock (DOS\0 + checksum + 68k bootstrap) → loads and decompresses a checksummed install kernel. No AmigaDOS filesystem on the disk. |
amix_21_root.adf |
Miniroot | An s5 miniroot image: the installer ELF binaries (cpio, fsck, dd, amixpkg, …), the /bin/sh install scripts, and viper.README. |
amix_21_patch.adf |
Patch | Self-extracting "Patch Disks 1 & 2" → brings 2.1 up to 2.1p2a / kernel 2.1c. |
The distribution itself (the actual OS packages) does not live on a floppy — it streams from a SCSI tape at ID 4 (see Stage 4).
Prerequisites checklist¶
These are hard constraints baked into the kernel and the install scripts ✅. Get them wrong and the install will not complete.
- CPU: 68020 or 68030 with a real MMU (not 68EC020/030) plus a 68881/68882 FPU. No soft-float.
- Emulator: MMU ON, JIT OFF (JIT causes kernel panics), FPU 68882. See the WinUAE config table.
- SCSI hard disk on ID 6 — the conventional disk target (the installer prompts for it; ID 6 is the
default everything assumes, and the ID is baked into the device names once installed). The installer's
BPARTderives from/dev/dsk/c${SCSI}d0s${BOOTPART}✅. - SCSI tape on ID 4 — the distribution device is
/dev/rmt/4h✅. - Fast RAM: 4 MB minimum; on an A3000, 16 MB of motherboard RAM for the stock install
kernel — a bigger bank loads the kernel below
0x07000000, where the stock kernel never registers the internal SCSI and cannot mount root (quirks §57) ✅. The 040/060 kernels run 128 MB ✅ (measured on a 68060; the 68040 uses the same 4 KiB-page kernel, not yet measured 🟡). (The old "16 MB maximum" rule had the mechanism wrong, not the advice.) The real limit is total describable RAM, which fails silently — the RAM ceiling. - Disk image size: roughly 450–900 MB is the usual range for the ID 6 hardfile 🟡; keep individual partitions ≲ 1 GB 🟡.
Stage 0 — wire up the virtual disks¶
In your emulator, attach:
- a writable RDB hardfile on SCSI ID 6 (this becomes the system disk);
- a tape image on SCSI ID 4 holding the distribution as a cpio stream;
amix_21_boot.adfin DF0.
The exact knobs differ per emulator — for WinUAE map ID 6 to the hardfile and ID 4 to the tape image
(WinUAE table); for FS-UAE use hard_drive_0_controller = scsi6 and
hard_drive_0_type = rdb (FS-UAE snippet).
Tape-free alternative 🟡: if you cannot present a tape, the community documents dd-ing a cpio
distribution image onto the swap area (or another partition) from Linux/AmigaDOS and extracting it
with cpio directly — discussed on comp.unix.amiga. That bypasses Stage 4's
tape read but is fiddlier; the tape path below is the documented default.
Stage 1 — boot the install kernel¶
Power on with amix_21_boot.adf in DF0. The Superkickstart ROM reads the OFS bootblock, runs the 68k
bootstrap, which then loads and decompresses the install kernel, verifying its checksum ✅. You may
see bootstrap messages like Load boot volume %d; failures surface as Decompression failed! or
WARNING! Kernel file checksum mismatch. (these strings are embedded in the bootstrap ✅).
The install kernel is NFS/RPC-capable — it carries a full RPC client string table — which is what lets a networked install pull packages, though the tape path is what we use here.
Stage 2 — mount the miniroot¶
When prompted, insert amix_21_root.adf. Its body is an SVR4 s5 filesystem (superblock at byte
0x200, s5 magic 0xfd187e20 ✅; the lost+found and fsck strings in the image once suggested UFS,
but they are not a UFS fingerprint — see the root disk anatomy),
and it mounts as the miniroot. The installer — a set of m68k
ELF binaries plus /bin/sh scripts living on that miniroot — now takes over.
Note: the Amix /bin/sh is pre-POSIX ✅ — no $(...) command substitution, no grep -q.
This matters if you ever read or edit the install scripts: they use backticks and explicit redirection.
Stage 3 — partition the disk (RDB)¶
The installer inspects the ID 6 disk's Rigid Disk Block (RDB) scheme, looks for a "suitable UNIX rdb," and either computes "obvious" partition choices or asks you ✅. The default layout it builds:
| Partition | Purpose | Sizing rule (from the root.adf scripts ✅) |
|---|---|---|
/ (root) |
Root filesystem | Remainder / user choice |
| swap | Paging | Larger when the disk is bigger than BREAKPT=120 MB |
| boot/bootstrap | Holds the bootable kernel | BOOTSIZE=2 MB → BOOTLEN = BOOTSIZE * 2048 blocks |
| data | Additional storage | User choice |
Filesystem type is asked per filesystem. The choices are s5 (System V — likely a 3B2-lineage
holdover) and ufs (Berkeley FFS — recommended 🟡, on community consensus). The scripts
default to s5, not ufs ✅ — so do NOT just press RETURN if you want UFS; you must type ufs
explicitly. The root partition prompt is:
readask "What file system type is the root partition? [s5] "
case $ask in
""|"s5") ANS="s5" ;; # empty input -> s5
"ufs") ANS="ufs"; ROOT_OPT="$UFS_OPT" ;; # only when typed explicitly
esac
There is no [ufs] prompt anywhere in amix_21_root.adf (0 occurrences of [ufs], 2 of [s5])
✅. Note also the sibling branch ROOT_FSYS="s5" # Johann ROM can only boot s5 filesystem, so on
some ROM/controller combinations s5 is not merely the default but the only bootable choice 🟡.
Why these numbers matter:
BOOTSIZE=2and the ID-6/ID-4 wiring are not cosmetic —make bootpartin Stage 5 writes the kernel into exactly this 2 MB boot partition, and the distribution read in Stage 4 targets/dev/rmt/4h. The exact RDB partition type IDs Amix stamps (boot vs swap vs UFS) are not publicly documented 🔴.
Stage 4 — stream the distribution from tape (SCSI ID 4)¶
With the target partitions created and mounted under /mnt, the installer streams the distribution off
the tape. The core command (driven by amixpkg -b/-i -r /mnt) is ✅:
/dev/rmt/4hn is the no-rewind, high-density tape at SCSI ID 4; bs=256k is the block size;
cpio -imdcu extracts (-i) in copy-in mode, preserving modification times (-m), creating
directories (-d), copying unconditionally (-u), with a portable header (-c). Some package members
arrive compressed, handled by a zcat variant of the same pipe ✅:
The package install is orchestrated by amixpkg. The root.adf scripts invoke it as ✅:
That installs (-i) the standard package set, moving/deleting per the package's directives,
rooted at /mnt, answering yes non-interactively. (amixpkg is widely reported to be flaky
🟡; the scripted invocation above is the reliable path, and it is what the installer itself uses.)
Non-standard tape drives — viper_kludge¶
If your tape drive is an Archive Viper 2150S (a common period substitute), the standard Amix tape
driver mis-handles it. The root.adf ships viper_kludge by Frank "Crash" Edwards ✅ — it patches
kernel memory at install time so the non-standard drive works (see viper.README on the miniroot).
Warning:
viper_kludgeis incompatible with the standard A3070 and with Caliper/Wangtek/ Sankyo drives — its own README explicitly warns not to use it with those ✅. Only apply it for the drives it names. In emulation you generally present a standard A3070-style tape, so you will not needviper_kludge— leave it alone.
Stage 5 — build the kernel and write the boot partition¶
After the files land on disk, you build the runnable kernel and write it into the 2 MB boot partition ✅.
The kernel sources/objects live in /usr/sys; you build there with make, producing the kernel image
(modern 2.1 systems call it relocunix; the 1990 Ditto paper called the equivalent image
rdbunix — a historical rename 🟡). Then write it to the boot partition:
make bootpart copies the kernel into the BOOTSIZE=2 MB boot partition created in
Stage 3 so the Superkickstart ROM can boot it directly from the SCSI
disk on next power-on. (The general kernel build/relink flow — /usr/sys, editing master.d/kernel.c,
make install, copying to /stand, then make bootpart — is covered in depth on the
kernel build page.)
Then shut down and reboot:
Remove the floppy so the machine boots from the SCSI disk (ID 6).
Stage 6 — first boot: Commodore's system.setup¶
The machine now boots relocunix from the boot partition. At every boot /etc/sysinit runs
Commodore's /usr/amiga/bin/system.setup for as long as that script is executable ✅ (the stock
files). It asks, in order:
- nodename (hostname) and domain;
- the date and time — the date is typed as
mmddyy, so only a year ≤ 1999 fits ✅ (a limit of the tool, not the kernel; set the real date afterwards — see the Y2K step); - "Would you like to assign a password to all of the system accounts? [y]" — yes sets root's
password and copies it to the other system accounts, and a second question covers
guest(details: accounts and remote logins); - a first user account, the monitor type, X11 for a colour card, an xdm login screen, and Netnews.
It then shows a summary; answering that nothing needs changing clears the script's execute bit, so
it does not run again. amixadm is the same steps as a menu, for later use ✅.
Default password lore 🟡: community sources report a post-install login password of
waspon pre-built images. A system you installed has the password you typed here — or none, if you declined the password questions. Set one withpasswd.
After this, you have a running Amix 2.1. For a guided look around your new system — virtual consoles
(Alt+F1..F8), the default ksh, and starting X — see the
first login and tour page.
Stage 7 — apply the patch disk (→ 2.1p2a / kernel 2.1c)¶
The retail 2.1 is not the end state. The patch disk brings it to 2.1p2a / kernel 2.1c, the
release widely considered definitive (it carries the inet/NFS fixes) ✅. Our patch.adf
self-identifies as "Patch Disks 1 and 2 for International, USA-Only, 2-user, and Unlimited-User Amiga
UNIX System V Release 4.0 Version 2.1." ✅
The patch disk is a self-extracting hybrid ✅: the first 1 KB is a #!/sbin/sh bootstrap script,
and everything after byte 1024 is a single SVR4 ASCII cpio (070701) archive whose payload is an
LHA-compressed archive.lha. To apply it, run the patch image's bootstrap as a root shell script on
the running system. Internally that script (paraphrased from the decoded header ✅):
# starts flopd, sleeps 10s (REQUIRED), verifies you are root,
# and checks that `uname -v` matches ^2\.1.* 08004..$ (else "USE AT YOUR OWN RISK")
QUIETDD=y dd if="$0" bs=1k iseek=1 2>/dev/null | (cd /; QUIETCPIO=y cpio -icdmuv)
uncompress -f /var/patch/*.Z
exec /var/patch/apply
apply then uses the bundled lha to unpack archive.lha, honoring the patch's
replace.list / modify.list / delete.list plus changes/preload. The full mechanism is dissected
on the patch disk anatomy page.
Version-check guard: the patch refuses to run unless
uname -valready matches^2\.1.* 08004..$✅. If it prints "USE AT YOUR OWN RISK," you are not on a clean 2.1 — stop and recheck your install rather than forcing it.
After the patch completes and you reboot, uname should reflect the patched 2.1c kernel.
Stage 8 — Y2K: make the clock work past 1999¶
Stock 2.1 has one Y2K bug, in the tooling, not the kernel ✅ (corrected 2026-09-29). setclk,
which /etc/sysinit runs at every boot, hands the battery-clock year to date as %02d of
years-since-1900 (126 for 2026); date rejects it (date: bad conversion), so the box never takes
its time from the battery clock. The kernel itself has no year cap — date MMDDhhmmCCYY with a
4-digit year sets 2026 — but amixadm accepts only ≤ 1999, which is why
Stage 6 asked for such a date. The patch disk does
not fix this (its cpio carries no setclk). The fix is the community-patched setclk (the
AmigaUnix wiki's y2k-dst page), plus /etc/clkzone naming the zone the battery clock holds — AmigaOS
keeps it in local time. Details: quirks §7. The community Y2K/DST notes on
amigaunix.com cover the corner cases.
Recap: the install in one screen¶
1. DF0 = boot.adf → bootstrap loads & decompresses the install kernel
2. insert root.adf → s5 miniroot mounts; installer runs
3. partition the ID 6 disk → BOOTSIZE=2 MB boot part, swap (BREAKPT=120), FS: type ufs (default s5)
4. tape @ SCSI ID 4: dd if=/dev/rmt/4hn bs=256k | cpio -imdcu
amixpkg -i -m -d -r /mnt -y standard
(viper_kludge only for nonstandard tape drives)
5. make bootpart KERNEL=relocunix ; shutdown -i6 ; remove floppy
6. first boot → system.setup: nodename/domain/date+time (≤1999)/system-account pw/guest pw/user/X11
7. apply patch disk → 2.1p2a / kernel 2.1c
8. Y2K: community setclk + /etc/clkzone → clock from the RTC
See also¶
- WinUAE emulator setup — the reference config (MMU on, JIT off, SCSI ID 6/4).
- FS-UAE emulator setup — verified A3000 snippet.
- Installing on real hardware — A3000UX / A2500UX specifics.
- First login and tour — what to do after the install finishes.
- Root disk anatomy — the s5 miniroot and install scripts in detail.
- Boot disk anatomy — the bootblock and compressed install kernel.
- Patch disk anatomy — how the self-extracting patch works.
- Kernel build —
/usr/sys,make bootpart, and relinking/unix. - Quirks checklist — the Y2K, SCSI-ID, and RAM-ceiling gotchas in one place.
Sources¶
- The first-boot
system.setup(read 2026-11-02) ✅ — the stocketc/sysinitandusr/amiga/bin/system.setup,passwdallandamixadmin amigaux/amix-system (761a82e). This replaces the earlier "amixadmwalks you through" reading. - The 2026-09-29 stock-kernel RAM-layout measurement ✅ — on the emulated bench the same 64 MB A3000 motherboard bank boots a kernel that probes for the A3000 SCSI and stops the pinned stock kernel at
s5mountroot VOP_OPEN error 6(no card 0), symbolised against the stockautocon()load-address guess (first-party record, 2026-09-29; quirks §57). - The 2026-09-29 Y2K correction ✅ —
date 092912002026accepted on a stock 2.1c box; the stocksetclkboot run ending indate: bad conversion; the patch disk's 103-member cpio carrying nosetclk(quirks §7; first-party record, 2026-09-29). sources/research-brief.md§9 (installation flow) and §10 (boot/root/patch disk anatomy) — the primary grounding for every stage on this page.amix_21_root.adfanalysis viatools/inspect-adf.sh— partition logic (BOOTSIZE=2,BREAKPT=120,ANS="ufs",BPART=/dev/dsk/c${SCSI}d0s${BOOTPART}), the tape pipe (dd if=/dev/rmt/4hn bs=256k | cpio -imdcu),amixpkg -i -m -d -r /mnt -y standard, andviper.README.amix_21_boot.adfanalysis viatools/inspect-adf.sh— OFS bootblock, compressed checksummed install kernel, embedded bootstrap/NFS-RPC strings.amix_21_patch.adfanalysis viatools/inspect-adf.sh— the 1 KB#!/sbin/shbootstrap, theuname -v^2\.1.* 08004..$guard, the070701cpio +archive.lhapayload, and the self-identifying "Patch Disks 1 and 2 … Version 2.1" string.- Ditto, Writing Amix Device Drivers, 1990 European Amiga Developer's Conference — kernel build flow
(
/usr/sys→make→ boot partition;rdbunix/relocunixnaming). - amigaunix.com — installation, patch-disk, and Y2K/DST notes; default-password lore (🟡 community-reported).
- comp.unix.amiga (archived) — tape-free install discussion (🟡).