9atom (amd64 usb image, 386 iso) augments the plan 9 distribution with the addition of a 386 PAE kernel, an amd64 cpu and terminal kernel, nupas, extra pc hardware support, IL and Ken's fs.
Todo and Errata.
Kernel source
9atom man pages
What's new? 2013-04-30
  • ape passwd(2); fix backspace and ^u processing; fix limits
  • aan(8): fix amd64 padding, and marshal header
  • nix: clean up 32-bit mask issues
  • vblade(8): add mask command support
  • dhcpd(8): removing timing information
  • factotum(4): remove babble
  • 8c(1): -W means stop on warning; remove sextern.
  • cfs(4): fix crash on access of cfsctl due to access of bogus memory
  • exifsrv(4): new program from steve simon. parses metadata from jpg images. (missing man page)
  • pc kernels: scheduling fix m is always MACHADDR it needs MACHP(m->machno)
  • ssh2(1): process ignore messages properly
  • venti-conn(2): note $venti environment variable
  • pcipl(8): automaticly set ether0 based on pxe configuration; automaticly set drive0 to reflect bios boot drive
  • etherm10g: fix m10g marshalling for 64 bit
  • /sys/src/9: fix leak in devloopback, devpipe, channel paths
  • ssh2(1): sync with development source
  • nix, 9 kernels: fix ESEG overlap by putting ESEG above the normal stack
  • /sys/src/9: introduce fmtP to all architectures
  • pcc(1): corrections to manual page
  • x509: bad ptr arithmetic
  • devaoe(3):
    1. the config string was grabbed Aoehsz too far into the packet due to using the wrong pointer to start.
    2. never accept a response with tag Tmgmt or Tfree.
    3. defend against "malicious" responses; ones with a response Aoehdr.type != request Aoehdr.type. this previously could cause the initiator to crash.
    4. vendor commands were improperly filtered out.
  • vblade(8): avoid extra copy
  • acid(1): check the return value of malloc
  • P(1): allow apc to be hooked through consoledb
  • libmach: 64-bit elf support; support u-boot for arm
  • 9 ppc kernel: fix elf kernel link
  • 9: move $arch/random.c to port
  • 9: move fpi routines to port
  • fortune(1): new fortunes
  • sdaoe(3): drop sdscsi dependency
  • 9: add sdscsifis, sdatafis; generic ata and scsi routines with tler
  • 9 kirkwood kernel: add sdkw
  • nix: update sdide to fix pio busy detection, discover before first access
  • consoleof(8): consoleof, consoledbof: new commands (no man page yet)
  • nix: restrict segattach to below USEGTOP
  • nix, 9: qio stats in #c/debug
  • pcc(1): modern compiler character set; -W flag; -f flag for 5l; -x flag; note -+ is the default in manual page.
  • ape/bsd: revamp socket support to provide ip6 support, and modern name lookup support via getaddrinfo, etc.
  • ape/bsd: fix warnings and turn on warning flags
  • ape/stdio: fix thread safety issues
  • ape/malloc: fix thread safety issues
  • ape/unlink: fix unused variable issues
  • ape/_notehandler: fix inconsistent declaration
  • ape/_buf: fix don't declare variables you don't use, and don't cast pointers to integers. still need to fix the signature of _RENDEZVOUS to be void* (*)(void*,void*). let segattach pick its own address rather than guessing what might be a free and valid address.
  • ip(2): fix overflow with mixed ip6/ip4 notation. e.g. 1:2:3:4:5:6:7:
  • fossil(4): sync with sources
  • lib9p: do not override client-set msize
  • acme win: do not buffer overflow
  • gethostbyname: declare gethostbyname, and use size_t as required by standard
  • nix: use cheep scheduler hack (idlehands sleeps if not processor 0) to improve tcp performance 50% on some machines
  • dhcpd(8): sync with sources
  • sftpfs(4): manual page: remove documentation for openssh option.
  • devmouse(3): nix: incorrect tests for bad messages
  • nix, plan 9: sw cursor redraw in proc context
  • nix, plan 9: fix blanking. screen activity is registered if the cusor has moved or the buttons have changed, not when the cursor is redrawn.
  • raspberry pi kernel: ethernet update
  • pci(8): replace with c version with support for pci capabilities. opci(8) is the rc-based script
  • 9 initcode: remove warning
  • nix, plan 9: edf.h references move to port
  • nix lockstats: fix crash, and include lockstats in default build
  • imgloop(1): fix resize fail
  • plot(1): allow resize, hiding, etc.
  • getsrvbyaddr(): byte order
  • pcipl: add panic verb
  • nix, plan 9: ether8169: more mac types
  • auth_chuid: better error message when cap is empty
  • nfs(4): fix warnings
  • ipso(1) flush/load factotum keys only if 'factotum' secstore file was indeed in edit list.
  • html2ms(1): ignore span html tag
  • 9load(8): recognize all intel ide
  • nix: allowances for mixed page sizes when faulting
  • nix: audio: allow the bitrate & channels to be manipulated
  • snoopy(8): aoe tag filtering
  • libmach: fix types in symbol(2) mach(2) debugger(2)object(2)
  • ctime(2): handle negative times!? change from sources
  • bio(2): clean up rune handling
  • dict(7): update man page
  • mach(2): include libc.h, and fixup v object
  • sort(1): update man page to match reality
  • frexp: sync style with sources
  • 9load: ide tweek for mac
  • yacc(1): increase size for yytokenname; correct man page. yydebug is automaticly set.
  • telnetd(8): add -c argument to start arbitrary programs and not just rc.
  • pcipl(8): pbs: fix wrong boot file name and size, rename mbr and pbs
  • mkfsconf(8): fix 32-bit dependencies
  • ndb(8): dns dump too slow
  • mkcpuconf(8): new program
  • nix, plan 9: boot using nsb disk
  • paqfs(8): manual page: correct maximum block size
older changes
Some in production motherboards, sockets and chipsets
Intel Atom
  • Supermicro X7SLA-H (Atom 330; 940GC) PAE/Nix
  • Supermicro X7SPA-H (Atom d510; NM10) PAE/Nix
  • Supermicro X7SPE-H (Atom d510; NM10) PAE/Nix
  • Supermicro X7SPA-HF-D525 (Atom d525; NM10) PAE/Nix
  • Elitegroup IC890GMX-A (socket AM3; SB890) PAE/Nix
  • Foxconn A7VMX-K (socket AM2+; SB680); retired
  • Gigabyte K9AGNeo2 (socket AM2; SB680); retired
  • Intel S5520HCT (socket 1366; 5520)
  • Supermicro X9SCL (socket 1155; C200) Nix
  • Supermicro X9SCM (socket 1155; C204) PAE/Nix
  • Supermicro X8STE (socket 1366; X58) PAE
  • Supermicro X8SIL (socket 1156; 3400) PAE
  • Supermicro X8DTU (socket 1366; Core i7) Nix
  • Supermicro X9DRW (socket lga2011; E5-2640 x 2) Nix
  • Supermicro X7DVL* (socket 775; intel 5000v); retired
Marvell ARM
  • Globalscale OpenRD (Marvell 88f6281)
  • Globalscale SheevaPlug (Marvell 88f6281)
Other ARM
  • Raspberry Pi
Selected additional hardware
  • 1 port gbe: D-Link DGE-560T (Marvell 88e5057 Yukon 2; beta)
  • 1 port gbe: Intel Pro/1000 PT (Intel 82572)
  • 4 port gbe: Intel Gigabit ET e1g44et (Intel 82580)
  • 1/2 port 10gbe: Myricom (any card)
  • 8 port sata: Supermicro AOC-SAT2-MV8 (marvell 88sx6081)
  • 8 port sata/sas: Supermicro AOC-SASLP-MV8 (marvell 88sx6485)
  • 2 port sata: HighPoint Rocket 620a (marvell 88se9120)
Reported Working
Intel Atom
  • Intel Desktop Board D510MO—missing mp table (Pavel Klinkovsky)
Selected Differences from the distribution
overall differences
  • 32-bit Rune support
  • p9p memdraw code; fixes some 32bpp bugs
  • nix source (/sys/src/nix)
new programs
enhanced programs
  • awk(1) — new import from bwk
  • abaco(1) — font specifications
  • cpu(1) — remove pre-9p2000 support
  • faces(1) — acme-like actions
  • grep(1) — add -I grep for base rune (folding)
  • kprof(1) — pc resolution of 1 byte (Steve Stallion)
  • ramfs(4) — truely limit memory consumption. support arbitrarly-many files
library additions
?c differences
  • Runes supported in macros
  • allow comma operator to work with 64-bit types in 32-bit compilers
  • 8c: error when vlong botch is detected (BOTCH: fix underlying error)
  • 8c: (dubious; x86 only) correct packed structure assignment (with warning)
Iplpxe(8)—BIOS based bootloader
  • Written by cinap_lenrek
  • Executable less than 8KB.
  • Export *e820 map in configuration; avoid need for realmode in kernel.
  • Supports NIX kernels
9load differences
  • No BIOS boot. Seems to be too unreliable.
  • Export *e820 map in configuration; avoid need for realmode in kernel.
  • Supports NIX kernels
  • Same ethernet and disk hardware support as 9atom kernel
  • plan9.ini(8) parameters may be used as paramaters; in particular $bootdev is used to boot robustly from cds attached to any recognized controller
  • accept "console=0 b19200" (compatabile with kernel syntax).
  • pci: scan busses up to 255.
pc 386/PAE kernel
  • base work by Charles H. Forsyth
  • PAE support; can support 64GB of memory in default configuration
  • supports 4KB, 2MB pages.
  • uses qmalloc(9nix); no pool library
  • drops support for most ancient hardware.
pc architecture differences
  • infastructure to support multiple page sizes
  • more robust APIC support, including support for arbitrary apic ids, and overlapping I/O APIC and LAPIC ids
  • MSI support
  • rudamentary ACPI support
  • more robust /dev/reboot. unfortunately it still hangs with ATAPI devices and ICH7
  • CPU temperature montoring AMD and Intel, #P/cputemp arch(3)
  • Count of interrupts in #P/irqalloc, total cycles in interrupt and interrupt type arch(3) (TODO: update docs to reflect current state)
  • PAT (page attribute tables) used instead of MTRR. vmappat(9nix)
  • vgavesa support screen blanking through realemu(8)
  • some support for certain Winbond chips via io space
  • clear num lock (important for some keyboards); make num lock key work
  • ignore left CTL+ALT+SHIFT sequence (i/o gear kvm)
  • pc ports: better numlock and scrolllock handling
  • sdmv50xx: revamped driver; many bugfixes
  • mp: various /dev/*mp* files. (TODO: finalized and document)
  • pci
    • scan busses up to 255
    • support for pci capabilities
all architecture differences
  • ether(3)/netif support setting layer 2 MTU and /net/ethern/mtu
  • ether supports layer 2 bridge mode
  • atazz support in sd(3) drivers
port differences
  • support for multiple page sizes (Charles Forsyth)
  • qmalloc(9) (Charles Forsyth and Jim McKie)
  • physalloc(9) (Charles Forsyth)
  • updated aoe(3) driver
  • updated cons(3) driver; backspace on console deletes Rune not byte (console output still wrong, due to pc/cga.c) and add cec(3) support
  • updated keyboard(6) with Compose+Y+6 hex digits for 32-bit Runes. (Undocumented because entry method to be replaced.)
  • new portable 8250-compatable uart driver
  • updated uart(6) "y" starts console; "z" terminates console. Allow console on pc uarts other than 0 and 1.
  • new cec(3) driver
  • new sd loopback sdloop(3) driver
  • new trace(3)
  • 9atom's Block* has no Ref (rationale)
  • led.c generic IBPI support
cmd differences
  • rc(1): full support for runes, support for break statement and support for arbitrary-length words in backquote operations
  • telnet(1): don't mess with consctl when given -s option
additional serial hardware supported
  • Oxford Semi Ox958 for Startech PEX16S952LP (uartox958.c); (Steve Stallion)
additional sound hardware supported (cinap)
  • Intel HDA Audio (aka azalia)
  • AC'97
additional pc ethernet hardware supported
  • Intel gigabit controllers (ether82563.c):
    • 82567
    • 82574
    • 82576
    • 82579
    • 82580
    • 82583
    • i350
  • Some Marvell Yukon II 88e8057 cards (etheryuk.c)
  • Some Broadcomm 57xx cards (etherbcm.c)
  • Intel 10 gigabit controllers
    • 82599
    • x540
additional disk hardware supported (* for just vid/did differences)
  • AHCI devices
    • AMD SB[678]00 with misset PCI registers
    • AMD SB6xx workaround for ATAPI bugs
    • Intel 82801GB (ich7)*
    • Intel PCH did 3b2[23]*
    • JMicron (all)
    • Marvell 88se91xx*
  • IDE devices
    • AMD SB4xx sata/pata*
    • AMD Rx6xx pata*
    • AMD SB7xx pata*
    • ATI 4379 SATA*
    • Intel ICH5 82801er
    • Intel 6300ESB (75xx chipset)
    • Intel 63xx00ESB (5000[pvx] chipset)
    • Intel ICH6m
    • Intel ICH7 in combined SATA/PATA modes
    • Intel ICH9[m], ICH10
    • Intel PCH 34x0
    • nVidia nForce 51 MCP*
    • nVidia nForce 61 MCP PATA*
  • Marvell 88se64xx controllers (sdodin.c; was: sdorion.c (sic))
additional southbridges supported (all just vid/did additions)
  • Intel 632xesb
  • Intel 82801HB/HR (ich8/r)
  • Intel 82801HH (ich8dh)
  • Intel 82801ih ich9dh
  • Intel 82801io ich9do
  • Intel 82801iem ich9m-e
  • Intel 82801ib ich9
  • Intel 82801? ich9m
  • Intel 82801? ich10r
  • Intel 82801? ibex peak
  • Intel 82801? 3420
  • AMD SB710