Thursday, August 31, 2017

6.1 fails to boot on a 486

I recently dug out of the closet my old IBM PS/2E, which had served as
my firewall box from 2000ish-06, and was in fact the very first
machine I ever installed OpenBSD on, to see if it still worked
properly. It did (after changing the CMOS battery), but booted into
OpenBSD 4.1... yeah, just a *bit* out of date there. The machine may
not be of great use nowadays (I'd retired it when it couldn't keep up
with my internet connection), but even as a retro-computing
playground, running a 10-year-old/20-releases-ago version of OpenBSD
is of no benefit. Let's rectify that!

====
>> OpenBSD/i386 BOOT 3.31
boot> hd0a:/bsd61.rd
cannot open hd0a:/etc/random.seed: No such file or directory
booting hd0a:/bsd61.rd: 3208120+1332224+3342348+0+446464
[72+288736+277711]=0x87e694
entry point at 0x2000d4

Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
Copyright (c) 1995-2017 OpenBSD. All rights reserved. https://www.OpenBSD.org

OpenBSD 6.1 (RAMDISK_CD) #289: Sat Apr 1 13:58:25 MDT 2017
deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/RAMDISK_CD
fatal privileged instruction fault (0) in supervisor mode
trap type 0 code 0 eip d03b1f7c cs d09f0008 eflags 10046 cr2 0 cpl 0
panic: trap type 0, code=0, pc=d03b1f7c

The operating system has halted.
Please press any key to reboot.
====

Well, that's not good -- I didn't expect 6.1 to run particularly well
on this, but I figured it would at least boot... how about 6.0?


====
booting hd0a:/bsd60.rd: 3211188+1318224+2061312+0+442368
[72+298576+282894]=0x744144
entry point at 0x2000d4

Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
Copyright (c) 1995-2016 OpenBSD. All rights reserved. http://www.OpenBSD.org

OpenBSD 6.0 (RAMDISK_CD) #1864: Tue Jul 26 12:57:09 MDT 2016
deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/RAMDISK_CD
cpu0: Intel 486DX (486-class)
real mem = 16183296 (15MB)
avail mem = 8122368 (7MB)
mainbus0 at root
bios0 at mainbus0: date 03/31/93
pcibios at bios0 function 0x1a not configured
bios0: ROM list: 0xc8000/0x1000 0xc9000/0x1000 0xca000/0x2000
cpu0 at mainbus0: (uniprocessor)
isa0 at mainbus0
isadma0 at isa0
fdc0 at isa0 port 0x3f0/6 irq 6 drq 2
fd0 at fdc0 drive 0: 1.44MB 80 cyl, 2 head, 18 sec
com0 at isa0 port 0x3f8/8 irq 4: ns16450, no fifo
com0: console
pckbc0 at isa0 port 0x60/5 irq 1 irq 12
pckbd0 at pckbc0 (kbd slot)
wskbd0 at pckbd0: console keyboard
vga0 at isa0 port 0x3b0/48 iomem 0xa0000/131072
wsdisplay0 at vga0 mux 1: console (80x25, vt100 emulation), using wskbd0
wdc0 at isa0 port 0x1f0/8 irq 14
wd0 at wdc0 channel 0 drive 0: <IBM-DARA-206000>
wd0: 16-sector PIO, LBA, 5729MB, 11733120 sectors
wd0(wdc0:0:0): using BIOS timings
npx0 at isa0 port 0xf0/16 irq 13
pcic0 at isa0 port 0x3e0/2 iomem 0xd0000/16384
pcic0 controller 0: <Intel 82365SL rev 1> has sockets A and B
pcic0 controller 1: <Intel 82365SL rev 1> has sockets A and B
pcmcia0 at pcic0 controller 0 socket 0
pcmcia1 at pcic0 controller 0 socket 1
pcmcia2 at pcic0 controller 1 socket 0
ep1 at pcmcia2 function 0 "3Com, 3C574-TX Fast EtherLink PC Card, A"
port 0x340/32, irq 3: address 00:10:4b:5f:20:c0
tqphy0 at ep1 phy 0: 78Q2120 10/100 PHY, rev. 3
pcmcia3 at pcic0 controller 1 socket 1
ep2 at pcmcia3 function 0 "3Com, 3C574-TX Fast EtherLink PC Card, A"
port 0x300/32, irq 9: address 00:60:08:93:80:48
tqphy1 at ep2 phy 0: 78Q2120 10/100 PHY, rev. 3
pcic0: irq 5, polling enabled
softraid0 at root
scsibus0 at softraid0: 256 targets
root on rd0a swap on rd0b dump on rd0b
erase ^?, werase ^W, kill ^U, intr ^C, status ^T

Welcome to the OpenBSD/i386 6.0 installation program.
(I)nstall, (U)pgrade, (A)utoinstall or (S)hell?
====

Seems fairly normal. Did I miss something about 6.1 dropping 486
support? [/me checks i386.html... still says 486 or better!]

Turns out that GENERIC can give us a little more useful information
than RAMDISK_CD, as it drops into ddb:


====
boot> hd0a:/bsd.61
cannot open hd0a:/etc/random.seed: No such file or directory
booting hd0a:/bsd.61: 7678420+2057220+174556+0+1097728
[72+501520+501951]=0xb761b4
entry point at 0x2000d4

[ using 1003956 bytes of bsd ELF symbol table ]
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
Copyright (c) 1995-2017 OpenBSD. All rights reserved. https://www.OpenBSD.org

OpenBSD 6.1 (GENERIC) #291: Sat Apr 1 13:49:08 MDT 2017
deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC
kernel: privileged instruction fault trap, code=0
Stopped at cpuid+0x12: cpuid
ddb> trace
cpuid(80000000,d0d78ef0,d0d78ed8,0,7d) at cpuid+0x12
identifycpu(d0c7d8a0,d09fbb83,10,0,ffffffff) at identifycpu+0x80d
cpu_startup(d09cefed,d09d1680,16c,8,0) at cpu_startup+0xb9
main(d02004c6,d02004ce,0,0,0) at main+0x6a
ddb> ps
PID TID PPID UID S FLAGS WAIT COMMAND
ddb>
====

Looks like it's trying to run the CPUID instruction, which this
processor probably doesn't support. Maybe this was an accidental
breakage, rather than intentionally dropping 486es? Time to examine
the CVS logs, I guess. (A -current snapshot also fails in the same
manner, so something happened between 6.0 & 6.1.)

No comments:

Post a Comment