Subject: Re: NetBSD 1.3.2 'netboot' installation image on sun3x (3/80)
To: ratbert <dono@async.org>
From: Brian Hoffman <bhoffman@tlorah.engr.sgi.com>
List: netbsd-help
Date: 10/16/1998 16:56:57
I had this exact problem.

The problem is that the netboot code checksums the entire identity_prom
structure, including the reserved area above where the other idprom data
is stored.

As long as this reserved area is all zeros, then the xor of the entire
idprom structure is zero, and the checksum function passes. However,
if you go and replace/reprogram your idprom according to the Sun nvram-
hostid FAQ, it never mentions zero'ing out the reserved area. So, it's
probably filled with random non-zero garbage. If you zero out this
16 byte region during the idprom programming, then the checksum should
pass.

-Brian

Here's the checksum function:
(in /pub/NetBSD/NetBSD-current/src/sys/arch/sun3/stand/libsa/idprom.c)

int
idprom_cksum(p)
	u_char *p;
{
	int len, x;

	len = sizeof(struct idprom);
	x = 0;	/* xor of data */
	do x ^= *p++;
	while (--len > 0);
	return (x);
}

And here's the idprom structure that it's checksumming:
(in /pub/NetBSD/NetBSD-current/src/sys/arch/include/idprom.h)

struct idprom {
    unsigned char idp_format;
    unsigned char idp_machtype;
    unsigned char idp_etheraddr[6];
    long          idp_date;
    unsigned char idp_serialnum[3];
    unsigned char idp_checksum;
    unsigned char idp_reserved[16];
};

-----

> Hello,
>
> I have a diskless Sun 3/80 here (sun3x), attempting to boot NetBSD
> 1.3.2/sun3x's "netboot" installation image, but having a bit of trouble.
>
> The 3/80 (192.168.1.5) is booting off of a FreeBSD machine (192.168.1.1)
> on the local LAN.  I might add, that I replaced its old NVRAM (due to dead
> battery) with a new M48T02, and re-programmed the hostid, ethernet
> address, boot dev, etc.
>
> I'm not too sure exactly what the "idprom: not found in monitor data"
> means, since I am new to Sun hardware. If anyone has a clue, please help
> me out. Thanks in advance.
>
> --Begin
> Selftest Completed.
>
>          Sun Workstation, Model Sun-3/80 Series.
> SUN LOGO  Type-4 Keyboard.
> SUN LOGO  ROM Rev 3.0, 12MB memory installed, Serial #xxxxx.
> SUN LOGO  Ethernet address is 8:0:20:xx:xx:xx, Host ID 42xxxxxx.
>
> Auto-boot in progress...
>
> EEPROM boot device...Boot: le(0,0,0)
> Using IP Address 192.168.1.5 = C0A80105
> Booting from tftp server at 192.168.1.1 = C0A80101
> Downloaded 15360 bytes from tftp server.
>
> >> NetBSD netboot [$Revision: 1.1.1.1 $]
> idprom: not found in monitor data
>
>
> Abort at 0x00240042.
> >
> --End
>
> This is all the (relevant) technical data that I can think of at the
> moment.

-- 
-----
Brian Hoffman
bhoffman@engr.sgi.com
650-933-8665