Quirks & Gotchas¶
Amix is a "quick and dirty" 1990โ1992 SVR4 port โ , and it shows: the kernel hard-codes SCSI IDs and a RAM ceiling, the bootstrap predates the 68040 and Zorro III, the clock breaks in 2000, and the userland is pre-POSIX. This page is the checklist of port-specific surprises โ the things that are technically correct, technically broken, or just unexpected, that cost people hours before they realize "it's just Amix."
Each item is one line: what it is, the โ /๐ก confidence tag carried from the research brief ยง12 (and ยง2/ยง9/ยง11), and a cross-link to the page that covers it in depth.
TL;DR checklist¶
| # | Quirk | Tag | Deeper coverage |
|---|---|---|---|
| 1 | Tape must be ID 4 (hard-coded /dev/rmt/4h); disk ID 6 by convention โ installer prompts for the target, but the ID is baked into device names, so don't change it post-install |
โ /๐ก | Hardware, Filesystems & disks |
| 2 | 16 MB Fast RAM ceiling; more mis-maps the SCSI drive | โ | Hardware |
| 3 | No Zorro III โ memory-mapping layer can't address it; unfixable | โ | Hardware, Zorro autoconfig |
| 4 | No 68040/68060 โ the A4000 can't officially run Amix | โ | Hardware |
| 5 | Superkickstart dual-boot by holding the right mouse button at power-on | โ | Boot process |
| 6 | DNS resolution is OFF by default (/etc/hosts only) |
โ /๐ก | Networking |
| 7 | Y2K bugs: setclk %02d year + kernel date cap at 1999 |
โ /๐ก | Versions, Patch ADF anatomy |
| 8 | SLIP is buggy โ reboot between sessions; no PPP at all | ๐ก | Networking |
| 9 | X keymap is wrong: y/z swapped, / is SHIFT-8 |
๐ก | X11 & desktop |
| 10 | amixpkg is widely reported broken (the wrapper, not pkgadd) |
๐ก | Install walkthrough |
| 11 | Clock drift via SCSI interaction | ๐ก | Networking |
| 12 | /bin/sh is pre-POSIX: no $(...), no grep -q |
โ | Driver model, Writing a char driver |
| 13 | Enabling DNS adds ~3 min to every boot unless the boot-time ifconfigs (S69inet lo0, network-config aen0) use literal IPs instead of hostnames |
โ | Networking, Networking on the LAN |
The rest of this page expands each item.
Hardware & addressing quirks¶
1. SCSI IDs: tape fixed at 4, disk 6 by convention โ /๐ก¶
The tape drive must sit at ID 4 โ the root-floppy install scripts hard-reference the literal /dev/rmt/4h and look nowhere else for it โ
. The hard disk is ID 6 by convention, not by kernel mandate: the installer prompts for the disk target and computes the boot partition from a $SCSI variable (BPART=/dev/dsk/c${SCSI}d0s${BOOTPART}), reserving only ID 4 for the tape โ so Amix will install on a disk at another target ๐ก. The catch is that the chosen ID is baked into the device names (c6d0sโฆ) the installed system records in /etc/vfstab (the SVR4 mount table) and the boot partition, so you can't change the disk's SCSI ID after install without editing /etc/vfstab to match ๐ก (amix_21_root.adf analysis via tools/inspect-adf.sh; see hardware).
Consequence for emulation: attach your tape image at SCSI ID 4 (the installer looks only there) and your hardfile (RDB) at SCSI ID 6 โ any target works for the disk, but 6 is the convention and saves you re-pointing /etc/vfstab later. See the mapping in the WinUAE setup and the FS-UAE setup. Disk geometry and partitioning are covered in filesystems & disks.
2. The 16 MB Fast RAM ceiling โ ¶
The kernel hard-codes a Fast RAM ceiling of 16 MB (minimum 4 MB) โ . Going above 16 MB mis-maps the SCSI drive โ โ the symptom is disk corruption / failure rather than an honest "too much RAM" error, which makes it a nasty trap. Set your emulator's Fast RAM to โค 16 MB. Background in hardware.
3. No Zorro III โ ¶
Amix's memory-mapping layer cannot address Zorro III space โ
. It is Zorro II only. Worse, the relevant kernel source was never shipped, so this can't be patched by the community โ
โ there is no community fix and there won't be one. Any expansion board you intend to use must present a Zorro II window; see Zorro autoconfig for how boards are discovered via the AUTOCONFIG / autocon() path, and hardware for the supported-board list.
4. No 68040/68060 โ the A4000 is out โ ¶
The kernel predates the 68040 MMU โ
, so it runs only on a 68020 or 68030 with a real MMU plus a 68881/68882 FPU โ
. There is no soft-float and the MMU-less 68EC020/030 variants cannot run Amix โ
. Practical upshot: an A4000 cannot officially run Amix โ
. Targets are the A3000(UX) and the A2500UX. See hardware.
5. Superkickstart dual-boot via the right mouse button โ ¶
A3000UX machines ship a "Superkickstart 1.4" bootstrap ROM โ . At power-on:
- Default (do nothing) โ boot Amix from the SCSI disk.
- Hold the right mouse button at power-on โ load an AmigaOS Kickstart instead.
So the "gotcha" is the inverse of what AmigaOS users expect: the machine boots Unix by default, and you reach AmigaOS only by holding a mouse button. Details in the boot process.
Networking quirks¶
6. DNS resolution is off by default โ /๐ก¶
Out of the box, name resolution uses /etc/hosts only โ DNS is disabled โ
/๐ก. To turn DNS on you relink the socket library and add config:
ln -f /usr/lib/libsockdns.so /usr/lib/libsocket.so # swap in the DNS-capable socket lib
# then provide /etc/netconfig, start in.named (or point elsewhere), and write /etc/resolv.conf
Also note the routing gotcha: the default route needs an explicit metric โ route add default <gw> 1 (the trailing 1 is required) โ
/๐ก. Full procedure in networking.
8. SLIP is buggy; no PPP ๐ก¶
SLIP works but is buggy: you must reboot between SLIP sessions ๐ก, and there is no PPP at all ๐ก. If you need a serial IP link, plan for a reboot cycle rather than re-dialing. See networking.
11. Clock drift via SCSI interaction ๐ก¶
The system clock drifts, reportedly because of an interaction with SCSI activity ๐ก. On a networked box you'll want a time-sync workaround; combined with the Y2K issues below, treat timekeeping as something to actively manage rather than trust. See networking.
13. Enabling DNS adds ~3 minutes to every boot โ ¶
Turning DNS on (quirk 6 above) drops a hidden tax on the boot path: with DNS enabled the box stalls ~3 minutes at The system is coming up. Please wait. on every boot โ
(reproduced locally on Amix 2.1c under Amiberry). Stock Amix, with DNS off, does not.
The cause is two boot-time ifconfig calls that take hostnames, each forcing a gethostbyname() โ
:
ifconfig lo0 localhost upโ in/etc/rc2.d/S69inetifconfig aen0 `uname -n` up -trailersโ in/etc/inet/network-config
Both run before the default route is installed (route add default โฆ happens later, in /etc/inet/rc.inet). With DNS on, gethostbyname() tries DNS first, but there is no route to the nameservers yet, so each lookup burns the full resolver retransmit schedule โ ~90 s each, ~180 s total โ before falling back to /etc/hosts โ
. With DNS off the same names resolve instantly from /etc/hosts, which is exactly why this trap appears only after you enable DNS.
This is independent of the /etc/domain weirdness โ
: a box with an already-empty /etc/domain still hangs the full 180 s โ the domain-append bug and this no-route hang are two different problems.
Fix (boot 210 s โ 29 s; runtime DNS unaffected): give both boot-time ifconfigs a literal IP so no resolver call happens before the network is up โ
:
# /etc/rc2.d/S69inet
- /usr/sbin/ifconfig lo0 localhost up
+ /usr/sbin/ifconfig lo0 127.0.0.1 up
# /etc/inet/network-config
- /usr/sbin/ifconfig aen0 `uname -n` up -trailers
+ /usr/sbin/ifconfig aen0 <this-host-static-ip> up -trailers
lo0 is always 127.0.0.1; aen0 uses the host's own static address (the one already in /etc/hosts). Configuring your own interface should never depend on a name service, so this is the correct design regardless โ and DNS for clients/mail/etc. is untouched. Full procedure in networking and networking on the LAN.
Time & Y2K quirks¶
7. Y2K: setclk and the kernel's 1999 date cap โ
/๐ก¶
Amix has two millennium problems โ /๐ก:
- The
setclkutility uses a%02dformat for the year, so it mishandles dates โฅ 2000. - The kernel caps the date at 1999 โ even the finishing-touches install step (
amixadm) only accepts a date โค 1999 โ .
These are community-patched โ
/๐ก: applying the patch disk (which upgrades to 2.1p2a / kernel 2.1c) ships Y2K fixes, after which you run the corrected setclk โ
. See the patch mechanism in the patch ADF anatomy and the version timeline in versions.
X11 & desktop quirks¶
9. The X keymap is wrong ๐ก¶
Under X11 the default keymap is mis-mapped ๐ก:
- y and z are swapped.
/is produced by SHIFT-8.
There are other X annoyances in the same family โ xload crashes and the X11R4 server leaks memory ๐ก. The modern RTG path (Xrtg / VA2000) sidesteps the old server but not the keymap mapping itself. Full X11 notes (mono tvtwm, A2410 color via TIGA, OpenLook font-path breakage on the R5 upgrade) are in X11 & desktop.
Userland & packaging quirks¶
10. amixpkg is flaky ๐ก¶
The amixpkg wrapper around the SVR4 packaging tools is widely reported to be broken ๐ก โ note this is the wrapper, not the underlying pkgadd/pkgmk/pkgtrans, which work. Despite the reputation, the official install path does drive it: the root-floppy installer runs amixpkg -i -m -d -r /mnt -y standard โ
. A related packaging gotcha: pkgproto omits symlinks ๐ก. See the install walkthrough.
12. /bin/sh is pre-POSIX โ
¶
Amix's /bin/sh predates POSIX โ
. The two bites that catch driver authors and scripters:
- No command substitution with
$(...)โ you must use backticks`...`. - No
grep -qโ redirect to/dev/nulland test$?instead.
This was discovered the hard way porting the VA2000 driver: install scripts written with modern shell syntax silently misbehave โ
. The default interactive shell is ksh (with sh/csh/tcsh also present), but build and install scripts that run under /sbin/sh or /bin/sh must stay pre-POSIX โ
. See the driver model and writing a char driver for the driver-build implications, including the companion rule to rm -f stale objects before relinking the kernel.
See also¶
- Hardware โ the machines, RAM ceiling, Zorro II, FPU/MMU requirements in full.
- Boot process โ Superkickstart, the bootstrap, and on-disk layout.
- Networking โ DNS, routing, SLIP, NFS, and clock notes.
- X11 & desktop โ the X server, window managers, and keymap.
- Glossary โ RDB, AUTOCONFIG, STREAMS, Superkickstart, and other terms used here.
Sources¶
- Research brief ยง12 (quirks checklist), with specifics pulled from ยง2 (hardware & limits), ยง9 (install flow +
viper_kludge/Y2K), and ยง11 (networking, X11, userland). amix_21_root.adfanalysis viatools/inspect-adf.shโ/dev/rmt/4h,BPART=/dev/dsk/c${SCSI}d0s${BOOTPART},amixpkg -i -m -d -r /mnt -y standard.amix_21_patch.adfanalysis viatools/inspect-adf.shโ patch-disk Y2K/inet fixes (โ 2.1p2a / kernel 2.1c).asokero/va2000-amix(pre-POSIX/bin/sh, no$(...), nogrep -q; relink hygiene) โ https://github.com/asokero/va2000-amix.- Michael Ditto, Writing Amix Device Drivers, 1990 European Amiga Developer's Conference (driver/kernel model behind the SCSI-ID and
/bin/shnotes). - amigaunix.com DokuWiki โ requirements, networking, x11, patch-disk, y2k-dst, tips-tricks, dual-boot pages (community-reported items): https://www.amigaunix.com/doku.php/home.
- BlitterStudio/amiberry issue #1376 and WinUAE/FS-UAE docs (emulation consequences of the SCSI IDs and RAM ceiling).
- The A4091-on-Amix project โ networking investigation, 2026-06-07 (reproduced locally โ
): instrumented
/etc/rc2per-script timing on Amix 2.1c under Amiberry isolatedS69inetat 180 s; boot 210 s โ 29 s after switching the boot-timeifconfigs to literal IPs. Files:/etc/rc2.d/S69inet,/etc/inet/network-config,/etc/inet/rc.ineton the running system (quirk 13).