SunOS 5.6 (aka Solaris 2.6) and Later on 4/6x0's

Compiled by Craig Dewick

Original Solution from Richard Deal


Note: Sun does not support the 4/6x0 machines (part of the sun-4m family) anymore, and software support (basically the entire code-base for supporting the VME sub-system hardware) was dropped after SunOS 5.5.1 (Solaris 2.5.1)! All responsibility for damage to filesystems and data rests solely with you!
If you have any experience modifying the SunOS 5.7 (Solaris 7) and/or SunOS 5.8 (Solaris 8) kernels to run on the 4/6x0 platform, please forward the details to me so I can make additions to this page to cover those OS releases... Due credit will of course be given!


The last release of SunOS that was officially supported on the 4/6x0 sun-4m family of VME-based machines was 5.5.1 (aka Solaris 2.5.1). From 5.6 (aka Solaris 2.6) onward, VME bus support was removed along with support for the older Ross-type Mbus CPU modules, and a machine type check routine added to detect when a 4/6x0 machine was being used and abort the kernel startup.

Richard Deal worked on the problem and came up with a solution that works...

It is possible to patch the kernel and code-out the machine type check, which makes SunOS 5.6 run on the 4/6x0 machines fitted with non-Ross Mbus CPU modules (SM-41's, SM-51's and SM-61's are suitable candidates), turning them into excellent stand-alone servers, etc.

To do this, you will have to set up an install server with a copy of the cdrom on disk. In the boot area alter '/platform/sun4m/kernel/unix'. This can be done from the cdrom if you just boot the system from the boot device, specifying 'kadb -d', hit return until it loads kernel/unix and go from there.

Basically, just modify the routine startup(). After the call to iam_ss600() and the call to printf, change the call to halt() to a nop instruction instead. Here's a sample session:



prompt > cd /platform/sun4m/kernel
prompt > adb -w unix
startup+0x73c,10?ai
startup+0x73c:
startup+0x73c:  nop
startup+0x740:  call    iam_ss600
startup+0x744:  nop
startup+0x748:  orcc    %g0, %o0, %g0
startup+0x74c:  be      startup+0x768
startup+0x750:  nop
startup+0x754:  sethi  %hi(0xf0268c00), %l0
startup+0x758:  call    startup+0x758
startup+0x75c:  add    %l0, 0x234, %o0
startup+0x760:  call    halt
startup+0x764:  clr    %o0
startup+0x768:  call    param_init
startup+0x76c:  sethi  %hi(0x0), %l0
startup+0x770:  ld      [%l0], %l0
startup+0x774:  cmp    %l0, 0x0
startup+0x778:  sethi  %hi(0xf025ec00), %l0
startup+0x760?ai
startup+0x760:
startup+0x760:  call    halt
startup+0x73c/X
startup+0x73c:  0
startup+0x73c?X
startup+0x73c:  1000000
startup+0x760?W 1000000
startup+0x760:  0x7fffea1c      =      0x1000000
startup+0x760?ai
startup+0x760:
startup+0x760:  nop
$q
prompt > 

SunOS 5.6 Kernel Modification Capture

A similar process should work for SunOS 5.7 (aka Solaris [2.]7) and later as well.

Note: The last version of the bootROM's for the 4/6x0's was 2.14v3, but I have no information about whether or not this version added support for the SM-71 and SM-81 Supersparc-2 CPU modules. The ROM's do definitely support most of the higher-end Hypersparc modules however.


This page has been accessed times.

Sun Shack data archive