How to find out density of memory chips without openning machine

2007-12-25 11:49:00

Please see attachment for summary. Thanks again to everyone for their recommendations.

===

   Ju

   julienlim@rocketmail.com

__________________________________________________________________

Sent by Yahoo! Mail. Get your free e-mail at http://mail.yahoo.com


Summary: How to find out density of memory chips without openning machine

My thanks to the following people for their recommendations/suggestions:

Greg Coleman (G-tech Corp.) <greg@crusoe.crusoe.net>

Dan Penrod <dan@paradyne.com>

Matthew Stier <Matthew.Stier@tddny.fujitsu.com>

Anderson McCammont <and@ms.com>

Jim Harmon <jim@telecnnct.com>

Jim McVey <jmcvey@nhgri.nih.gov>

Brad Young <bbyoung@amoco.com>

Audrey Taylor <axt@gam.com>

Howard Modell <howie@warlok.ds.boeing.com>

Rick Reineman <rick@lunger.llnl.gov>

David S. Foster <foster@bial1.ucsd.edu>

Bismark Espinoza <bismark@alta.jpl.nasa.gov>

Sun System Admin <sysadm@its.brooklyn.cuny.edu>

Wes Pfarner - 5736 <wrpfarn@csua35.sandia.gov>

Deepak Wilson <Deepak_D_Wilson@notes.seagate.com>

Jeff Wasilko <jeffw@smoe.org>

Virginia Coffindaffer <Virginia.Coffindaffer@wang.com>

artur <artur@compugen.co.il>

Joel Lee <jlee@thomas.com>

Jens Fischer <jefi@su00330.kat.ina.de>

Matt Reynolds <reynolmd@aston.ac.uk>

Mick Morgan <sun-managers@open.gov.uk>

        Ju

        julienlim@rocketmail.com

--------------- Original Question ---------------

I was wondering if there was a way besides openning up the

machine to find out the density of the SIMMs in my Sun Sparc5

running Solaris 2.5.1. I know I can use the command "prtdiag"

but I cannot seem to find the command. Is there some other

way for me to find this information out *without openning up

the box*?

[And yes... I did try the find for prtdiag prtdiag [but

SUNWkvm is not installed]... Also, I should have mentioned

that I could not bring the system down since the computer is

physically at a different part of the country]

--------------- Summary ---------------

as root

/usr/platform/`uname -m`/sbin/prtdiag

-----

If your /var/adm/messages file is configured like most, there will be a

record of boot messages in that file, one of which is the result of the

memory diagnostics, which tells you the amount of memory installed, and

how much was tested.

----- cut here -----

#!/bin/perl

#

@config = `/usr/sbin/prtconf -pv`;

$i = 0;

foreach $line (@config)

{

        if ( $line =~ /\sname:\s+'memory'/ )

        {

                $j = $i - 2;

                if ($config[$j] =~ /\sreg:/)

                {

                        $gotit = $config[$j];

                        chop $gotit;

                        goto GotIt;

                }

        }

        $i = $i + 1;

}

printf "no 'memory' line?\n";

exit;

GotIt:

$gotit =~ s/\s+reg:\s+//;

$gotit =~ s/'//g;

@slots = split(/\./, $gotit);

$slot = 1;

$totmem = 0;

$machine = `/usr/bin/uname -m`;

chop $machine;

print "On this $machine machine ...\n";

if ("$machine" =~ /sun4u/)

{

        $val0 = 3;

        $valinc = 4;

        $cardtype = "DIMM";

}

else

{

        $val0 = 2;

        $valinc = 3;

        $cardtype = "SIMM";

}

$OneMeg = 0x00100000;

@banks = ("J201", "J303", "J202", "J301", "J305", "J203", "J302",

"J304");

for($val=$val0; $val < scalar(@slots); $val = $val + $valinc)

{

        $simm = $slots[$val];

        $simmsize = hex($simm) / $OneMeg;

        $totmem += $simmsize;

        if ("$cardtype" =~ /SIMM/)

        {

                printf "slot $slot has a " . $simmsize . "M $cardtype \n";

        }

        else

        {

                printf "bank $slot has 2 " . ($simmsize / 2) . "M SIMMs \n";

        }

        $slot = $slot + 1;

}

printf "total memory = " . $totmem . "M\n";

----- cut here -----

I've attached a script that works well to identify the size of the

SIMMs in your system. I've also attached 'whatami.sh'; I use it a lot.

#!/usr/bin/ksh

    /usr/sbin/prtconf -pv | grep -v translations > /tmp/prtconf.tmp

    type=`grep banner-name /tmp/prtconf.tmp |

      sed -e 's/.*'\''\(.*\)'\''/\1/'`

    ss20=false

    case "$type" in

        "Sun Ultra"*)

                groups=4

                ;;

        "SPARCstation 20"*)

                groups=3

                ss20=true

                ;;

        "SPARCstation LX"*)

                groups=3

                ;;

        "SPARCstation 5"*)

                groups=3

                ;;

        "") # IPX shows no banner name, don't no about other sun4c machines

                groups=3

                ;;

        default)

                echo "unknown machine type $banner-name for $var"

                ;;

    esac

# for debugging:

# echo "$type $groups"

# echo $reg

    banks=`awk '

      BEGIN { groups='$groups' }

      /reg:/ {reg=$2}

      /name:.*'\''memory'\''/ {

        nreg=split(reg,regar,".")

        for(i=groups;i<=nreg;i+=groups) print substr(regar[i],1,3)

      }' /tmp/prtconf.tmp | (echo 'ibase=16';cat) | bc`

    if [ $ss20 = true ]

    then

      echo $banks | awk '{for(i=1;i<=NF;i++) printf("%5s",$i)} END {print}' |

        sed -e 's/16 16/32/g'

    else

      echo $banks | awk '{for(i=1;i<=NF;i++) printf("%5s",$i)} END {print}'

    fi

#rm /tmp/prtconf.tmp

----------

X-Sun-Data-Type: shell-script

X-Sun-Data-Description: shell-script

X-Sun-Data-Name: whatami.sh

X-Sun-Charset: us-ascii

X-Sun-Content-Lines: 2298

#! /bin/sh

#

# @(#)whatami,v3.0 (Wayne.Thompson@Sun.COM) 07/21/92

#

MYNAME=`/bin/basename $0`

#

# Author:

# Wayne Thompson (w/contributions from Wolfgang Bachhuber)

#

# Synopsis:

usage=`/bin/sed -e "s/^ *//" << endusage

      usage: $MYNAME [-h]

endusage`

#

# Description:

# This script outputs various system/user specific bits of information

# which may be useful to System Administrators.

#

# Example Output:

#

# SunOS 5.x:

# DATE: Sun Jul 5 11:05:30 PDT 1992

# USER: root

# HOSTNAME: le0 = anywhere

# IP ADDRESS: le0 = 129.150.30.23

# MODEL: SUNW,Sun 4/75

# FRAME BUFFER(S): cgthree

# SunOS RELEASE: 5.0.1

# TYPE: homeless

# HOME FILESERVER: mirrors

# MEMORY: 32MB

# SWAP: 53.4MB total, 25.6MB used, 27.8MB available

# LOAD AVERAGE: 1.01, 0.58, 0.58

# DNS DOMAINNAME: EBay.Sun.COM

# NIS DOMAINNAME: mlpirws.EBay.Sun.COM

# SOFTWARE SERVER(S): speedo1

# DEFAULT PRINTER: pug

# ETHERNET ADDRESS: 8:0:20:e:47:6d

# HOSTID: 5540a99d

# DISK: c0t3d0 "SUN0207" (208MB unformatted)

# PARTITION: c0t3d0s0 mounted on / (11MB, 87% full)

# PARTITION: c0t3d0s6 mounted on /usr (127MB, 100% full)

# SWAP PARTITION: c0t3d0s1 (32MB)

# CDROM: c0t6d0

# FLOPPY: fd0 (3.5-inch floppy)

# TAPE: rst4 - Archive QIC-150 tape drive (150MB)

#

# SunOS 4.x:

# DATE: Sun Jul 5 11:04:37 PDT 1992

# USER: me

# HOSTNAME: le0 = mirrors

# IP ADDRESS: le0 = 129.150.30.117

# MODEL: Sun 4/60

# FRAME BUFFER(S): cgsix

# SunOS RELEASE: 4.1.1

# KERNEL ID: GENERIC.md

# TYPE: standalone

# MEMORY: 16MB

# SWAP: 47.9MB total, 21.4MB used, 26.5MB available

# LOAD AVERAGE: 0.50, 0.14, 0.04

# DNS DOMAINNAME: EBay.Sun.COM

# NIS DOMAINNAME: mlpirws.EBay.Sun.COM

# SOFTWARE SERVER(S): speedo1

# DEFAULT PRINTER: pug

# ETHERNET ADDRESS: 8:0:20:7:e9:d8

# HOSTID: 5100745b

# METAPARTITION: md0h mounted on /home (1487MB, 89% full)

# DISK: sd0 "SUN0207" (208MB unformatted)

# PARTITION: sd0a mounted on / (13MB, 75% full)

# PARTITION: sd0g mounted on /usr (112MB, 80% full)

# DISK: sd1 "SUN0327" (327MB unformatted)

# PARTITION: sd1c part of md0h

# DISK: sd2 "SUN0669" (669MB unformatted)

# PARTITION: sd2c part of md0h

# DISK: sd3 "SUN0669" (669MB unformatted)

# PARTITION: sd3c part of md0h

# FLOPPY: fd0 (3.5-inch floppy)

# TAPE: rst0 - Archive QIC-150 tape drive (150MB)

#

# Both HOSTNAME and IP ADDRESS contain the network interface (i.e. le0).

# Should a machine be configured for more than one interface, there would

# be multiple entries for HOSTNAME and IP ADDRESS.

#

# TYPE knows about the "official" definitions:

#

# disk-resource STANDALONE DATALESS DISKLESS

#

# / ufs ufs nfs

# swap spec spec nfs

# /usr ufs nfs nfs

# /home ufs nfs nfs

#

# And the following "unofficial" definitions:

#

# disk-resource HOMELESS SWAPFUL SERVER

#

# / ufs nfs (exports

# swap spec spec /export

# /usr ufs nfs /exec

# /home nfs nfs /*)

#

# If whatami can't determine the disk resource type of any of the

# four resources, type will be "unknown".

#

# TYPE: unknown (/=ufs, swap=unknown, /usr=ufs, /home=nfs)

#

# If all the resource types can be identified and they don't match

# any of the above definitions, then type will be "undefined".

#

# TYPE: undefined (/=ufs, swap=nfs, /usr=ufs, /home=ufs)

#

# SOFTWARE SERVER(S) is path-order sensitive. For example, my PATH:

# . /home/me/bin /home/me/.dist

# /usr/ucb /bin /usr/bin

# /usr/dist/exe /usr/dist/local/exe = hologram:/usr/dist

# /usr/sds/exe /usr/sds/local/exe = eb1sds1:/usr/sds

# ...

#

# NOTE:

# SOFTWARE SERVER(S) will only show up if they are referenced

# by the current path.

#

# Options:

# -h print command description.

#

# Environment:

# PRINTER default printer.

# HOME user's home directory.

#

# Files:

# /usr/include/mon/idprom.h : unknown

#

# SunOS 5.x: Root privilege is required to obtain some information.

# Don't know exactly where 5.x metastat will live or what

# its output will look like.

#

# >> BEGIN parse options >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #

while [ $# -gt 0 ]

do

    case $1 in

        -h) # help

            /bin/awk '

                /^$/ {

                    exit;

                }

                /^[# :]/ && NR > 1 {

                    print substr ($0, 3);

                }

            ' $0 |

            /bin/sed "

                /^$/{

                    N

                    /^\n$/D

                }

                s/\$MYNAME/$MYNAME/

            "

            exit 0

            ;;

        --) # end of options

            shift

            break

            ;;

        -*)

            echo >&2 "$MYNAME: error: $1: unknown option."

            echo >&2 "$usage"

            exit 1

            ;;

        *) # end of options

            break

            ;;

    esac

done

# << END parse options <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< #

# >> BEGIN parse arguments >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #

case $# in

    0)

        ;;

    *)

        echo >&2 "$MYNAME: error: unexpected argument(s)."

        echo >&2 "$usage"

        exit 1

        ;;

esac

# << END parse arguments <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< #

# >> BEGIN initialization >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #

## >> BEGIN function: arch >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ##

# Function:

# @(#)arch,v1.1 (Wayne.Thompson@Sun.COM) 05/14/92

#

# Description:

# This function emulates 4.x arch(1).

#

# Variables:

#

# Usage:

# arch

# arch -k

# arch archname

#

# Return:

# 0 success

# 1 non-success

#

# Dependencies:

# This function works under SunOs 3.x - 5.x.

#

# Bugs:

#

arch () {

    case $1 in

        '')

            /bin/arch $* 2>&- || /bin/expr `/bin/uname -m` : '\(sun[0-9]*\)'

            ;;

        -k)

            /bin/arch $* 2>&- || /bin/uname -m

            ;;

        *)

            if [ -x /bin/arch ]

            then

                /bin/arch $*

            else

                [ $* = `/bin/expr \`/bin/uname -m\` : '\(sun[0-9]*\)'` ]

            fi

            ;;

    esac

}

## << END function: arch <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ##

DF () {

    /bin/df $1 2>&- |

    /bin/awk '

        /^[Ff]ilesystem/ {

            getline;

            print "DF", "'"$1"'", $1;

        }

    '

}

## >> BEGIN function: hostname >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ##

# Function:

# @(#)hostname,v1.0 (Wayne.Thompson@Sun.COM) 02/15/92

#

# Description:

# This function emulates 4.x hostname(1) given no arguments.

#

# Variables:

#

# Usage:

# hostname

#

# Return:

#

# Dependencies:

# This funcion works under SunOs 3.x - 5.x.

#

# Bugs:

#

hostname () {

    /bin/hostname 2>&- || /bin/uname -n

}

## << END function: hostname <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ##

## >> BEGIN function: osr >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ##

# Function:

# @(#)osr,v1.0 (Wayne.Thompson@Sun.COM) 02/08/92

#

# Description:

# This function outputs the numeric portion of the current OS release.

#

# Variables:

#

# Usage:

# os=`osr`

#

# Return:

# 0 success

# 1 non-success

#

# Dependencies:

# This funcion works under SunOs 3.x - 5.x.

#

# Bugs:

#

osr () {

    /bin/expr `

        {

            /bin/uname -r ||

            /bin/cat /usr/sys/conf*/RELEASE

        } 2>&- ||

        /etc/dmesg |

        /bin/awk '

            BEGIN { status = 1 }

            /^SunOS Release/ { print $3; status = 0; exit }

            END { exit status }

        ' ||

        /bin/expr "\`

            /usr/ucb/strings -50 /vmunix |

            /bin/egrep '^SunOS Release'

        \`" : 'SunOS Release \([^ ]*\)'

    ` : '\([.0-9]*\)'

}

## << END function: osr <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ##

## >> BEGIN function: whoami >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ##

# Function:

# @(#)whoami,v1.0 (Wayne.Thompson@Sun.COM) 03/20/92

#

# Description:

# This function emulates 4.x whoami(1).

#

# Variables:

#

# Usage:

# whoami

#

# Return:

#

# Dependencies:

# This funcion works under SunOs 3.x - 5.x.

#

# Bugs:

#

whoami () {

    /usr/ucb/whoami 2>&- ||

    /bin/expr "`/bin/id`" : '[^(]*(\([^)]*\)'

}

## << END function: whoami <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ##

tab="`/bin/awk 'BEGIN {printf ("\""%c"\"", 9);exit;}'`"

os=`osr`

case $os in

    5*)

        SVR4=1

        ARP=/usr/sbin/arp

        PING=/usr/sbin/ping

        NETSTAT=/usr/bin/netstat

        IFCONFIG=/usr/sbin/ifconfig

        UPTIME=/usr/bin/uptime

        SHOWMOUNT=/usr/lib/fs/nfs/showmount

        sysdef=`/usr/sbin/sysdef 2>&-`

        devinfo=`/usr/sbin/sysdef -d 2>&-`

        prtconf=`/usr/sbin/prtconf -v 2>&-`

        ;;

    *)

        ARP=/etc/arp

        PING=/usr/etc/ping

        NETSTAT=/usr/ucb/netstat

        IFCONFIG=/etc/ifconfig

        UPTIME=/usr/ucb/uptime

        SHOWMOUNT=/usr/etc/showmount

        devinfo=`/usr/etc/devinfo 2>&-`

        ;;

esac

login=`whoami`

hostname=`hostname`

hostid=`

    /bin/hostid 2>&- || {

        /etc/sysdef -h 2>&- |

        /bin/awk '$1 != "*" {print $1}'

    }

`

archk=`arch -k`

domainname=`/bin/domainname`

namesvc=files

if rpcinfo -u $hostname ypbind 2>&- 1>&-

then

    nis=true

    namesvc=nis

fi

if /bin/nistest org_dir.$domainname 2>&-

then

    nisplus=true

    namesvc=nisplus

fi

offset=20 # info offset

fbs=

ETHER=unknown

KERNELID=unknown

MEM=unknown

RELEASE=unknown

SWAP=unknown

FB=unknown

eval `

    /etc/dmesg 2>&- |

    /bin/awk '

        /^Ethernet address =/ {

            ether = $NF;

            next;

        }

        /^mem =/ {

            mem = $3;

            next;

        }

        /\) #[1-9]/ {

            for (i = 1; i <= NF; i++)

                if ($i ~ /^\(/) break;

            release = $(i-1);

            kernelid = $i;

            next;

        }

        /^swap on/ {

            for (i = 1; i <= NF; i++)

                if ($i == "fstype") break;

            swap = $++i;

            next;

        }

        /^(((cg|bw|gp).*[0-9])|taac[0-9]) at/ {

            fbs[$1]++;

            if (fb) {

                if (fbs[$1] == 1)

                    fb = fb", "$1;

            }

            else {

                fb = $1;

            }

            next;

        }

        /^fd[0-9] at obio/ {

            floppy[++fdi] = $1;

            next;

        }

        /: 1 && $1 != "lo0" {

            print $1;

        }

    '

`

for iface in $ifaces

do

    ip=`

        $IFCONFIG $iface 2>&- |

        /bin/awk '

            $1 == "inet" {

                print $2;

            }

        '

    `

    [ $ip ] &&

    case $namesvc in

        nisplus)

            /usr/bin/nismatch addr=$ip hosts.org_dir.$domainname

            ;;

        nis)

            /bin/ypmatch $ip hosts.byaddr 2>&- ||

            /bin/grep -w $ip /etc/hosts

            ;;

        files)

            /bin/grep -w $ip /etc/hosts

            ;;

    esac |

    /bin/awk '

        {

            printf ("%'$offset's %s = %s\n"\

                , "HOSTNAME:" \

                , "'"$iface"'" \

                , $2 \

            );

        }

        END {

            printf ("%'$offset's %s = %s\n"\

                , "IP ADDRESS:" \

                , "'"$iface"'" \

                , "'"$ip"'" \

            );

        }

    '

done

## << END hostname(s) and IP addresse(s) <<<<<<<<<<<<<<<<<<<<<<<<<< ##

## >> BEGIN model/cpu type >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ##

if [ "$devinfo" ]

then

    echo "$devinfo" |

    /bin/awk '

        /^Node / {

            split($0, x, "'\''");

            if (split (x[2], y, "_") > 1) {

                model = y[1]"/"y[2];

            }

            else {

                model = y[1];

            }

            printf("%'"$offset"'s %s\n"\

                , "MODEL:" \

                , model \

            );

            next;

        }

       /^'"$tab"'Node '\''[A-Z][a-zA-Z]*,/ {

            split($0, x, "'\''");

            printf("%'"$offset"'s %s\n"\

                , "CPU:" \

                , x[2] \

            );

            next;

       }

    '

else

    idprom_h=/usr/include/mon/idprom.h

    [ -f /usr/include/mon/idprom.h ] || idprom_h=-

    echo "

        /* @(#)idprom.h 1.20 5/22/91 SMI */

        /*

         * Copyright (c) 1986,1990 by Sun Microsystems, Inc.

         */

        #ifndef _mon_idprom_h

        #define _mon_idprom_h

        #ifndef LOCORE

        /*

         * Structure declaration for ID prom in CPU and Ethernet boards

         */

        struct idprom {

                unsigned char id_format; /* format identifier */

                /* The following fields are valid only in format IDFORM_1. */

                unsigned char id_machine; /* machine type */

                unsigned char id_ether[6]; /* ethernet address */

                long id_date; /* date of manufacture */

                unsigned id_serial:24; /* serial number */

                unsigned char id_xsum; /* xor checksum */

                unsigned char id_undef[16]; /* undefined */

        };

        #endif LOCORE

        #define IDFORM_1 1 /* Format number for first ID proms */

        /*

         * The machine type field assignments are constrained such that the

         * IDM_ARCH_MASK bits define the CPU architecture and the remaining bits

         * identify the individual implementation of that architecture.

         */

        #define IDM_ARCH_MASK 0xf0 /* mask for architecture bits */

        #define IDM_ARCH_SUN2 0x00 /* arch value for Sun-2 */

        #define IDM_ARCH_SUN3 0x10 /* arch value for Sun-3 */

        #define IDM_ARCH_SUN4 0x20 /* arch value for Sun-4 */

        #define IDM_ARCH_SUN3X 0x40 /* arch value for Sun-3x */

        #define IDM_ARCH_SUN4C 0x50 /* arch value for Sun-4c */

        #define IDM_ARCH_SUN4M 0x60 /* arch value for Sun-4m */

        /*

         * All possible values of the id_machine field (so far):

         */

        #define IDM_SUN2_MULTI 1 /* Machine type for Multibus CPU brd */

        #define IDM_SUN2_VME 2 /* Machine type for VME CPU board */

        #define IDM_SUN3_CARRERA 0x11 /* Carrera CPU */

        #define IDM_SUN3_M25 0x12 /* M25 CPU */

        #define IDM_SUN3_SIRIUS 0x13 /* Sirius CPU */

        #define IDM_SUN3_PRISM 0x14 /* Prism CPU */

        #define IDM_SUN3_F 0x17 /* Sun3F CPU */

        #define IDM_SUN3_E 0x18 /* Sun3E CPU */

        #define IDM_SUN4 0x21 /* Sparc CPU */

        #define IDM_SUN4_COBRA 0x22 /* Cobra CPU */

        #define IDM_SUN4_STINGRAY 0x23 /* Stingray CPU */

        #define IDM_SUN4_SUNRAY 0x24 /* Sunray CPU */

        #define IDM_SUN3X_PEGASUS 0x41 /* Pegasus CPU */

        #define IDM_SUN3X_HYDRA 0x42 /* Hydra CPU */

        #define IDM_SUN4C 0x51 /* Campus CPU */

        #define IDM_SUN4C_60 0x51 /* Campus-1 CPU */

        #define IDM_SUN4C_40 0x52 /* Reserve some names */

        #define IDM_SUN4C_65 0x53 /* That we might do */

        #define IDM_SUN4C_20 0x54 /* It might be bigger */

        #define IDM_SUN4C_75 0x55 /* It might be smaller */

        #define IDM_SUN4C_30 0x56 /* It might be faster */

        #define IDM_SUN4C_50 0x57 /* It might be slower */

        #define IDM_SUN4C_70 0x58 /* It might cost more */

        #define IDM_SUN4C_80 0x59 /* It might cost less */

        #define IDM_SUN4C_10 0x5a /* It might sell well */

        #define IDM_SUN4C_45 0x5b /* And then it might not */

        #define IDM_SUN4C_05 0x5c /* It might be pink */

        #define IDM_SUN4C_85 0x5d /* It might be blue */

        #define IDM_SUN4C_32 0x5e /* I certainly don't know */

        #define IDM_SUN4C_HIKE 0x5f /* Do you? */

        #define IDM_SUN4M_690 0x61 /* SPARCsystem 600 series */

        #endif /*!_mon_idprom_h*/

    " |

    /bin/awk '

        BEGIN {

            mtype = sprintf ("0x%s", substr ("'"$hostid"'", 1, 2));

            cpu = "unknown";

        }

        $3 == mtype {

            if (split ($2, x, "_") > 2) {

                cpu = x[2]"/"x[3];

            }

            else {

                cpu = x[2];

            }

            exit;

        }

        END {

            printf ("%'"$offset"'s %s\n"\

                , "MODEL:" \

                , cpu \

            );

        }

    ' $idrpom_h

fi

## << END model/cpu type <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ##

## >> BEGIN frame buffer >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ##

if [ "$devinfo" ]

then

    for fb in `

        echo "$devinfo" |

        /bin/awk '

            /Node '\''(bw|cg|gp|gt|taac|vx)(one|two|three|four|five|six|seven|eight|nine)/ {

                for (i = 1; i <= NF; i++) {

                    if ($i == "unit") unit = $(i+1);

                }

                split($0, x, "'\''");

                print x[2];

            }

        '

    `

    do

        fbs=${fbs:+"$fbs, "}$fb

    done

else

    cd /dev

    for fb in bw* cg* gp* gt* taac* vx*

    do

        [ -c $fb ] && { <$fb; } 2>&- && fbs=${fbs:+"$fbs, "}$fb

    done

fi

/bin/awk '

    BEGIN {

        printf ("%'"$offset"'s %s\n" \

            , "FRAME BUFFER(S):" \

            , "'"${fbs:-$FB}"'" \

        );

        exit;

    }

'

## << END frame buffer <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ##

## >> BEGIN OS Release >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ##

if [ $SVR4 ]

then

    /bin/awk '

        BEGIN {

            printf ("%'"$offset"'s %s\n" \

                , "SunOS RELEASE:" \

                , "'`/bin/uname -r`'" \

            );

            exit;

        }

    '

else

    strings -50 /vmunix 2>&- |

    /bin/awk '

        BEGIN {

            if ("'"$RELEASE"'" != "unknown") {

                printf ("%'"$offset"'s %s\n"\

                    , "SunOS RELEASE:" \

                    , "'"$RELEASE"'" \

                );

                printf ("%'"$offset"'s %s\n"\

                    , "KERNEL ID:" \

                    , "'"$KERNELID"'" \

                );

                exit;

            }

        }

        /\) #[1-9]/ {

            for (i = 1; i <= NF; i++) {

                if ($i ~ /^\(/) break;

            }

            printf ("%'"$offset"'s %s\n"\

                , "SunOS RELEASE:" \

                , $(i-1) \

            );

            printf ("%'"$offset"'s %s\n" \

                , "KERNEL ID:" \

                , substr ($i, 2, length ($i) - 2) \

            );

            exit;

        }

    '

fi

## << END OS Release <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ##

## >> BEGIN type >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ##

{

    DF /

    DF /usr

    DF `

        /bin/df $HOME |

        /bin/awk '

            BEGIN {

                home = "/home";

            }

            $NF ~ /^(\/tmp_mnt)*\/home/ {

                home = "'"$HOME"'";

            }

            END {

                print home;

            }

        '

    `

    $SHOWMOUNT -e 2>&-

} |

/bin/awk '

    BEGIN {

        osserver = homeserver = root = usr = home = "unknown";

        swap = "'$SWAP'";

        nfs = "nfs";

        spec = "spec";

        if ("'$SVR4'") {

            ufs = "ufs";

        }

        else {

            ufs = "4.2";

        }

        types["server"] = "server";

        types[ufs spec ufs ufs] = "standalone";

        types[ufs spec ufs nfs] = "homeless";

        types[ufs spec nfs nfs] = "dataless";

        types[nfs spec nfs nfs] = "swapful";

        types[nfs nfs nfs nfs] = "diskless";

    }

    /^DF \/ / {

        if (split ($3, x, ":") > 1 && x[1] != "'"$hostname"'") {

            root = "nfs";

        }

        else {

            root = ufs;

        }

        next;

    }

    /^DF \/usr/ {

        if (split ($3, x, ":") > 1 && x[1] != "'"$hostname"'") {

            osserver = x[1];

            usr = "nfs";

        }

        else {

            usr = ufs;

        }

        next;

    }

    /^DF .*\/home/ {

        if (split ($3, x, ":") > 1 && x[1] != "'"$hostname"'") {

            homeserver = x[1];

            home = "nfs";

        }

        else {

            home = ufs;

        }

        next;

    }

    /^\/export\/exec\// {

        type = server;

        exit;

    }

    END {

        printf ("%'"$offset"'s ", "TYPE:");

        if (root == "unknown" || \

            swap == "unknown" || \

            usr == "unknown" || \

            home == "unknown") {

            print "unknown (/="root", swap="swap", /usr="usr", /home="home")";

            if (osserver != "unknown") {

                printf ("%'"$offset"'s %s\n"\

                    , "OS FILESERVER:" \

                    , osserver \

                );

            }

            if (homeserver != "unknown") {

                printf ("%'"$offset"'s %s\n" \

                    , "HOME FILESERVER:" \

                    , homeserver \

                );

            }

            exit;

        }

        if (type == "server") {

            print type;

        }

        else if (type = types[root swap usr home]) {

            print type;

            if (type == types[ufs spec ufs ufs]) {

                exit;

            }

            else if (type == types[ufs spec ufs nfs]) {

                printf ("%'"$offset"'s %s\n"\

                    , "FILESERVER:" \

                    , homeserver \

                );

            }

            else if (osserver == homeserver) {

                printf ("%'"$offset"'s %s\n"\

                    , "FILESERVER:" \

                    , osserver \

                );

            }

            else {

                printf ("%'"$offset"'s %s\n"\

                    , "OS FILESERVER:" \

                    , osserver \

                );

                printf ("%'"$offset"'s %s\n"\

                    , "HOME FILESERVER:"\

                    , homeserver \

                );

            }

        }

    }

'

## << END type <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ##

## >> BEGIN memory >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ##

if [ $SVR4 ]

then

    echo "$prtconf" |

    /bin/awk '

        /^Memory size:/ {

            printf ("%'"$offset"'s %sMB\n"\

                , "MEMORY:" \

                , $3 \

            );

            exit;

        }

    '

else

    /bin/awk '

        BEGIN {

            printf ("%'"$offset"'s %s\n"\

                , "MEMORY:" \

                , "'"$MEM"'" \

            );

            exit;

        }

    '

fi

## << END memory <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ##

## >> BEGIN swap >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ##

{

    /usr/sbin/swap -s 2>&- ||

    /etc/pstat -s 2>&-

} |

/bin/awk '

    {

        for (i = 1; i <= NF; i++) {

            if ($i ~ /used/) break;

            used = substr ($i, 1, length ($i) - 1);

            if (used < 10.24) {

                used_str = $i;

            }

            else {

                used_str = sprintf ("%.1fMB", used / 1024);

            }

        }

        for (i = 1; i <= NF; i++) {

            if ($i ~ /avail/) break;

            avail = substr ($i, 1, length ($i) - 1);

            if (avail < 10.24) {

                avail_str = $i;

            }

            else {

                avail_str = sprintf ("%.1fMB", avail / 1024);

            }

        }

        printf ("%'"$offset"'s %.1fMB total, %s used, %s available\n"\

            , "SWAP:" \

            , (used + avail) / 1024 \

            , used_str \

            , avail_str \

        );

    }

'

## << END swap <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ##

## >> BEGIN load average >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ##

$UPTIME 2>&- |

/bin/awk -F: '

    {

        printf ("%'"$offset"'s%s\n"\

            , "LOAD AVERAGE:" \

            , $NF \

        );

        exit;

    }

'

## << END load average <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ##

## >> BEGIN name service domainname(s) >>>>>>>>>>>>>>>>>>>>>>>>>>>> ##

dns_domain=`

    {

        awk '/^domain/ {print $2; exit;}' /etc/resolv.conf 2>&- ||

        /bin/ypmatch $hostname. hosts 2>&- ||

        /bin/ypmatch $hostname\`

            /bin/expr \\\`/bin/domainname\\\` : '[^.]*\(.*\)'

        \` hosts 2>&-

    } |

    /bin/awk '

        {

            for (i = 2; i < split ($2, x, "."); i++) {

                domain = domain x[i] ".";

            }

            domain = domain x[i];

            print domain;

            exit;

        }

    '

`

if [ $dns_domain ]

then

    /bin/awk '

        BEGIN {

            printf ("%'"$offset"'s %s\n"\

                , "DNS DOMAINNAME:" \

                , "'"$dns_domain"'" \

            );

            exit;

        }

    '

fi

case $namesvc in

    files)

        ;;

    *)

        if [ $nisplus ]

        then

            /bin/awk '

                BEGIN {

                    printf ("%'"$offset"'s %s\n"\

                        , "NIS+ DOMAINNAME:" \

                        , "'"$domainname"'" \

                    );

                    exit;

                }

            '

        fi

        if [ $nis ]

        then

            /bin/awk '

                BEGIN {

                    printf ("%'"$offset"'s %s\n"\

                        , "NIS DOMAINNAME:" \

                        , "'"$domainname"'" \

                    );

                    exit;

                }

            '

        fi

        ;;

esac

## << END name service domainname(s) <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ##

## >> BEGIN software server(s) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ##

{

    echo $PATH |

    /bin/tr : '\012'

    DF /usr/dist

    DF /usr/sds

    DF /usr/local

} |

/bin/awk '

    $1 == "DF" {

        for (i = 1; i <= t; i++) {

            if ($2 == type[i] && split ($3, x, ":") > 1) {

                softserv[type[i]] = x[1];

                s++;

                break;

            }

        }

        next;

    }

    /^\/usr\/(((dist|sds)\/exe)|local(\/bin)*)$/ {

        split ($0, x, "/");

        if (y["/usr/" x[3]]++ < 1) type[++t] = "/usr/" x[3];

    }

    END {

        if (s) {

            first = 1;

            printf ("%'"$offset"'s" \

                , "SOFTWARE SERVER(S):" \

            );

            for (i = 1; i <= t; i++) {

                if (softserv[type[i]]) {

                    if (first) {

                        printf (" %s", softserv[type[i]]);

                        first = 0;

                    }

                    else {

                        if (softserv[type[i]] != softserv[type[1]])

                            printf (", %s", softserv[type[i]]);

                    }

                }

            }

            printf ("\n");

        }

    }

' -

## << END software server(s) <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ##

## >> BEGIN default printer >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ##

PRINTER=${PRINTER:-`

    /bin/awk '

        BEGIN {

            l = 0;

        }

        /\\$/ {

            line[l] = line[l] substr ($0, 1, length ($0) - 1);

            next;

        }

        {

            line[l] = line[l++] $0;

        }

        END {

            for (i = 0; i < l; i++) {

                if (line[i] ~ /^#/) continue;

                if (line[i] ~ /^lp[|:]|\|lp[|:]/) {

                    for (j = 1; j <= split (line[i], x, ":"); j++) {

                        if (j == 1) {

                            split (x[j], names, "|");

                            continue;

                        }

                        if (split (x[j], y, "=")) {

                            if (y[1] == "rp") {

                                print y[2];

                                exit;

                            }

                        }

                        for (k in names) {

                            if (names[k] \

                                ~ /^([0-9]|lp|lw|im|[Ii]magen|ps|[Pp]ost[Ss]cript)[0-9]*$/)

                                continue;

                            print names[k];

                            exit;

                        }

                        print names[1];

                        exit;

                    }

                    exit;

                }

            }

            print "none";

        }

    ' /etc/printcap 2>&- ||

    /bin/cat /etc/lp/default 2>&-

`}

/bin/awk '

    BEGIN {

        printf ("%'"$offset"'s %s\n" \

            , "DEFAULT PRINTER:" \

            , "'"${PRINTER:-none}"'" \

        );

        exit;

    }

'

## << END default printer <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ##

## >> BEGIN ethernet address >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ##

$PING -v $hostname 2>&- 1>&-

$ARP $hostname 2>&- |

/bin/awk '

    BEGIN {

        ether = "'"$ETHER"'";

    }

    / at / {

        ether = $4;

        exit;

    }

    END {

        printf ("%'"$offset"'s %s\n"\

            , "ETHERNET ADDRESS:" \

            , ether \

        );

    }

'

## << END ethernet address <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ##

## >> BEGIN hostid >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ##

/bin/awk '

    BEGIN {

        printf ("%'"$offset"'s %s\n"\

            , "HOSTID:" \

            , "'$hostid'" \

        );

        exit;

    }

'

## << END hostid <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ##

## >> BEGIN disks >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ##

if [ $SVR4 ]

then

    mnttab=/etc/mnttab

else

    mnttab=/etc/mtab

fi

if [ -f /etc/format.dat ]

then

    format_dat=/etc/format.dat

else

    format_dat=/tmp/format.dat$$

    trap "rm -f $format_dat; exit" 0 1 2 3 15

    /bin/sed -e 's/^ //' << ' endsed' > $format_dat

        #

        #ident "@(#)format.dat 1.3 90/10/18 SMI"

        #

        # Copyright (c) 1991 by Sun Microsystems, Inc.

        #

        # Data file for the 'format' program. This file defines the known

        # disks, disk types, and partition maps.

        #

        #

        # This is the search path for 'format'. It contains all the disks that

        # will be searched for if no disk list is given on the command line.

        #

        search_path = xd0, xd1, xd2, xd3, xd4, xd5, xd6, xd7, xd8, xd9, xd10, xd11, \

                        xd12, xd13, xd14, xd15, xy[0-3], sd[0-7], sd8, sd9, sd10, \

                        sd11, sd12, sd13, sd14, sd15, id0[0-3][0-7]

        #

        # This is the list of supported disks for the Xylogics 450/451 controller.

        #

        disk_type = "Fujitsu-M2312K" \

                : ctlr = XY450 : fmt_time = 4 \

                : ncyl = 587 : acyl = 2 : pcyl = 589 : nhead = 7 : nsect = 32 \

                : rpm = 3600 : bpt = 20480 : bps = 621 : drive_type = 1

        disk_type = "Fujitsu-M2284/M2322" \

                : ctlr = XY450 : fmt_time = 4 \

                : ncyl = 821 : acyl = 2 : pcyl = 823 : nhead = 10 : nsect = 32 \

                : rpm = 3600 : bpt = 20480 : bps = 621 : drive_type = 2

        disk_type = "Fujitsu-M2351 Eagle" \

                : ctlr = XY450 : fmt_time = 4 \

                : ncyl = 840 : acyl = 2 : pcyl = 842 : nhead = 20 : nsect = 46 \

                : rpm = 3961 : bpt = 28160 : bps = 595 : drive_type = 0

        disk_type = "Fujitsu-M2333" \

                : ctlr = XY450 : fmt_time = 4 \

                : ncyl = 821 : acyl = 2 : pcyl = 823 : nhead = 10 : nsect = 67 \

                : rpm = 3600 : bpt = 40960 : bps = 600 : drive_type = 3

        disk_type = "Fujitsu-M2361 Eagle" \

                : ctlr = XY450 : fmt_time = 4 \

                : ncyl = 840 : acyl = 2 : pcyl = 842 : nhead = 20 : nsect = 67 \

                : rpm = 3600 : bpt = 40960 : bps = 600 : drive_type = 3

        disk_type = "CDC EMD 9720" \

                : ctlr = XY450 : fmt_time = 4 \

                : ncyl = 1147 : acyl = 2 : pcyl = 1217 : nhead = 10 : nsect = 48 \

                : rpm = 3600 : bpt = 30240 : bps = 613 : drive_type = 1

        disk_type = "Hitachi DK815-10" \

                : ctlr = XY450 : fmt_time = 4 \

                : ncyl = 1735 : acyl = 2 : pcyl = 1737 : nhead = 15 : nsect = 67 \

                : rpm = 3600 : bpt = 40960 : bps = 600 : drive_type = 1

        disk_type = "NEC D2363" \

                : ctlr = XY450 : fmt_time = 4 \

                : ncyl = 964 : acyl = 2 : pcyl = 1024 : nhead = 27 : nsect = 67 \

                : rpm = 3600 : bpt = 40960 : bps = 600 : drive_type = 2

        #

        # This is the list of supported disks for the Xylogics 7053 controller.

        #

        disk_type = "Fujitsu-M2351 Eagle" \

                : ctlr = XD7053 \

                : ncyl = 840 : acyl = 2 : pcyl = 842 : nhead = 20 : nsect = 46 \

                : rpm = 3961 : bpt = 28160 : bps = 595

        disk_type = "Fujitsu-M2333" \

                : ctlr = XD7053 \

                : ncyl = 821 : acyl = 2 : pcyl = 823 : nhead = 10 : nsect = 67 \

                : rpm = 3600 : bpt = 40960 : bps = 600

        disk_type = "Fujitsu-M2361 Eagle" \

                : ctlr = XD7053 \

                : ncyl = 840 : acyl = 2 : pcyl = 842 : nhead = 20 : nsect = 67 \

                : rpm = 3600 : bpt = 40960 : bps = 600

        disk_type = "CDC EMD 9720" \

                : ctlr = XD7053 \

                : ncyl = 1147 : acyl = 2 : pcyl = 1217 : nhead = 10 : nsect = 48 \

                : rpm = 3600 : bpt = 30240 : bps = 613

        disk_type = "Hitachi DK815-10" \

                : ctlr = XD7053 \

                : ncyl = 1735 : acyl = 2 : pcyl = 1737 : nhead = 15 : nsect = 67 \

                : rpm = 3600 : bpt = 40960 : bps = 600

        disk_type = "NEC D2363" \

                : ctlr = XD7053 \

                : ncyl = 964 : acyl = 2 : pcyl = 1024 : nhead = 27 : nsect = 67 \

                : rpm = 3600 : bpt = 40960 : bps = 600

        disk_type = "Fujitsu-M2372K" \

                : ctlr = XD7053 \

                : ncyl = 743 : acyl = 2 : pcyl = 745 : nhead = 27 : nsect = 67 \

                : rpm = 3600 : bpt = 40960 : bps = 600

        disk_type = "CDC 9720-850" \

                : ctlr = XD7053 \

                : ncyl = 1358 : acyl = 2 : pcyl = 1360 : nhead = 15 : nsect = 66 \

                : rpm = 3600 : bpt = 41088 : bps = 610

        #

        # This is the list of supported disks for the Emulex MD21 controller.

        #

        disk_type = "Micropolis 1355" \

                : ctlr = MD21 \

                : ncyl = 1018 : acyl = 2 : pcyl = 1024 : nhead = 8 : nsect = 34 \

                : rpm = 3600 : bpt = 20832

        disk_type = "Toshiba MK 156F" \

                : ctlr = MD21 \

                : ncyl = 815 : acyl = 2 : pcyl = 830 : nhead = 10 : nsect = 34 \

                : rpm = 3600 : bpt = 20832

        disk_type = "Micropolis 1558" \

                : ctlr = MD21 \

                : ncyl = 1218 : acyl = 2 : pcyl = 1224 : nhead = 15 : nsect = 35 \

                : rpm = 3600 : bpt = 20833

        #

        # This is the list of supported disks for the ISP-80 IPI controller.

        #

        disk_type = "CDC IPI 9720" \

                : ctlr = "ISP-80" \

                : ncyl = 1631 : acyl = 1 : pcyl = 1633 : nhead = 15 : nsect = 82 \

                : rpm = 3600 : bpt = 50400

        disk_type = "CDC IPI 9722" \

                : ctlr = "ISP-80" \

                : ncyl = 1630 : acyl = 1 : pcyl = 1632 : nhead = 7 : nsect = 156 \

                : rpm = 3600 : bpt = 100800

        disk_type = "Seagate IPI ZBR Elite" \

                : ctlr = "ISP-80" \

                : ncyl = 1893 : acyl = 1 : pcyl = 1895 : nhead = 17 : nsect = 78 \

                : rpm = 5400 : bpt = 50400

        #

        # Following is a list of sample embedded SCSI disk configurations.

        #

        disk_type = "Quantum ProDrive 80S" \

                : ctlr = SCSI : fmt_time = 1 \

                : cache = 0x07 : trks_zone = 6 : atrks = 0 : asect = 1 \

                : ncyl = 832 : acyl = 2 : pcyl = 834 : nhead = 6 : nsect = 34 \

                : rpm = 3662 : bpt = 16896

        #disk_type = "CDC Wren VII 94601-12G" \

        # : ctlr = SCSI : fmt_time = 4 \

        # : cache = 0x11 : trks_zone = 15 : asect = 5 : atrks = 30 \

        # : ncyl = 1703 : acyl = 2 : pcyl = 1931 : nhead = 15 : nsect = 80 \

        # : rpm = 3597 : bpt = 41301

        #

        # An early CDC Wren IV, shipped with the 386i

        #

        #disk_type = "CDC Wren IV 94171-327" \

        # : ctlr = SCSI : fmt_time = 4 \

        # : cache = 0x11 : trks_zone = 9 : asect = 3 \

        # : ncyl = 1520 : acyl = 2 : pcyl = 1549 : nhead = 9 : nsect = 46 \

        # : rpm = 3600 : bpt = 20833

        #

        # This is the list of Sun supported disks for embedded SCSI.

        #

        disk_type = "Quantum ProDrive 105S" \

                : ctlr = SCSI : fmt_time = 1 \

                : cache = 0x07 : trks_zone = 6 : atrks = 0 : asect = 1 \

                : ncyl = 974 : acyl = 2 : pcyl = 1019 : nhead = 6 : nsect = 35 \

                : rpm = 3662 : bpt = 16896

        disk_type = "CDC Wren IV 94171-344" \

                : ctlr = SCSI : fmt_time = 4 \

                : cache = 0x11 : trks_zone = 9 : asect = 3 \

                : ncyl = 1545 : acyl = 2 : pcyl = 1549 : nhead = 9 : nsect = 46 \

                : rpm = 3600 : bpt = 20833

        disk_type = "SUN0104" \

                : ctlr = SCSI : fmt_time = 1 \

                : trks_zone = 6 : atrks = 0 : asect = 1 \

                : ncyl = 974 : acyl = 2 : pcyl = 1019 : nhead = 6 : nsect = 35 \

                : rpm = 3662 : bpt = 16896

        disk_type = "SUN0207" \

                : ctlr = SCSI \

                : trks_zone = 9 : atrks = 2: asect = 4 \

                : ncyl = 1254 : acyl = 2 : pcyl = 1272 : nhead = 9 : nsect = 36 \

                : rpm = 3600 : bpt = 18432

        disk_type = "SUN0327" \

                : ctlr = SCSI : fmt_time = 4 \

                : cache = 0x11 : trks_zone = 9 : asect = 3 \

                : ncyl = 1545 : acyl = 2 : pcyl = 1549 : nhead = 9 : nsect = 46 \

                : rpm = 3600 : bpt = 20833

        disk_type = "SUN0424" \

                : ctlr = SCSI : fmt_time = 4 \

                : trks_zone = 9 : asect = 2 \

                : ncyl = 1151 : acyl = 2 : pcyl = 2500 : nhead = 9 : nsect = 80 \

                : rpm = 4400 : bpt = 26000

        disk_type = "SUN0669" \

                : ctlr = SCSI : fmt_time = 4 \

                : trks_zone = 15 : asect = 5 : atrks = 30 \

                : ncyl = 1614 : acyl = 2 : pcyl = 1632 : nhead = 15 : nsect = 54 \

                : rpm = 3600 : bpt = 31410

        disk_type = "SUN1.0G" \

                : ctlr = SCSI : fmt_time = 4 \

                : trks_zone = 15 : asect = 5 : atrks = 30 \

                : ncyl = 1703 : acyl = 2 : pcyl = 1931 : nhead = 15 : nsect = 80 \

                : rpm = 3597 : bpt = 41301

        disk_type = "SUN1.3G" \

                : ctlr = SCSI : fmt_time = 4 \

                : trks_zone = 17 : asect = 6 : atrks = 17 \

                : ncyl = 1965 : acyl = 2 : pcyl = 3500 : nhead = 17 : nsect = 80 \

                : rpm = 5400 : bpt = 44823

        disk_type = "SUN2.1G" \

                : ctlr = SCSI : fmt_time = 4 \

                : ncyl = 2733 : acyl = 2 : pcyl = 3500 : nhead = 19 : nsect = 80 \

                : rpm = 5400 : bpt = 44823

        #

        # This is the list of partition tables for the Xylogics 450/451 controller.

        #

        partition = "Fujitsu-M2312K" \

                : disk = "Fujitsu-M2312K" : ctlr = XY450 \

                : 0 = 0, 15904 : 1 = 71, 33600 : 2 = 0, 131488 : 6 = 221, 81984

        partition = "Fujitsu-M2312K Old Type" \

                : disk = "Fujitsu-M2312K" : ctlr = XY450 \

                : 0 = 0, 15884 : 1 = 71, 33440 : 2 = 0, 131488 : 6 = 221, 81984

        partition = "Fujitsu-M2284/M2322" \

                : disk = "Fujitsu-M2284/M2322" : ctlr = XY450 \

                : 0 = 0, 16000 : 1 = 50, 33600 : 2 = 0, 262720 : 6 = 155, 213120

        partition = "Fujitsu-M2284/M2322 Old Type" \

                : disk = "Fujitsu-M2284/M2322" : ctlr = XY450 \

                : 0 = 0, 15884 : 1 = 50, 33440 : 2 = 0, 262720 : 6 = 155, 213120

        partition = "Fujitsu-M2351 Eagle" \

                : disk = "Fujitsu-M2351 Eagle" : ctlr = XY450 \

                : 0 = 0, 16560 : 1 = 18, 34040 : 2 = 0, 772800 : 6 = 55, 722200

        partition = "Fujitsu-M2351 Eagle Old Type" \

                : disk = "Fujitsu-M2351 Eagle" : ctlr = XY450 \

                : 0 = 0, 15884 : 1 = 18, 33440 : 2 = 0, 772800 : 6 = 55, 722200

        partition = "Fujitsu-M2333" \

                : disk = "Fujitsu-M2333" : ctlr = XY450 \

                : 0 = 0, 16080 : 1 = 24, 33500 : 2 = 0, 550070 : 6 = 74, 500490

        partition = "Fujitsu-M2361 Eagle" \

                : disk = "Fujitsu-M2361 Eagle" : ctlr = XY450 \

                : 0 = 0, 16080 : 1 = 12, 33500 : 2 = 0, 1125600 : 6 = 37, 1076020

        partition = "CDC EMD 9720" \

                : disk = "CDC EMD 9720" : ctlr = XY450 \

                : 0 = 0, 16320 : 1 = 34, 33600 : 2 = 0, 550560 : 6 = 104, 500640

        partition = "Hitachi DK815-10" \

                : disk = "Hitachi DK815-10" : ctlr = XY450 \

                : 0 = 0, 32160 : 1 = 32, 67335 : 2 = 0, 1743675 : 6 = 99, 1644180

        partition = "NEC D2363" \

                : disk = "NEC D2363" : ctlr = XY450 \

                : 0 = 0, 32562 : 1 = 18, 66933 : 2 = 0, 1743876 : 6 = 55, 1644381

        #

        # This is the list of partition tables for the Xylogics 7053 controller.

        #

        partition = "Fujitsu-M2351 Eagle" \

                : disk = "Fujitsu-M2351 Eagle" : ctlr = XD7053 \

                : 0 = 0, 16560 : 1 = 18, 34040 : 2 = 0, 772800 : 6 = 55, 722200

        partition = "Fujitsu-M2351 Eagle Old Type" \

                : disk = "Fujitsu-M2351 Eagle" : ctlr = XD7053 \

                : 0 = 0, 15884 : 1 = 18, 33440 : 2 = 0, 772800 : 6 = 55, 722200

        partition = "Fujitsu-M2333" \

                : disk = "Fujitsu-M2333" : ctlr = XD7053 \

                : 0 = 0, 16080 : 1 = 24, 33500 : 2 = 0, 550070 : 6 = 74, 500490

        partition = "Fujitsu-M2361 Eagle" \

                : disk = "Fujitsu-M2361 Eagle" : ctlr = XD7053 \

                : 0 = 0, 16080 : 1 = 12, 33500 : 2 = 0, 1125600 : 6 = 37, 1076020

        partition = "CDC EMD 9720" \

                : disk = "CDC EMD 9720" : ctlr = XD7053 \

                : 0 = 0, 16320 : 1 = 34, 33600 : 2 = 0, 550560 : 6 = 104, 500640

 &nb