[comp.unix.ultrix] diskless decstation questions

robm@ataraxia.Berkeley.EDU (Rob McNicholas) (05/21/91)

In /usr/include/sys/mop.h, the netblk structure is defined as:

struct netblk 	{
    char	srvname[32];		/* server hostname (boot server)*/
    unsigned long srvipadr;		/* server IP address (boot server)*/
    char	cliname[32];		/* client hostname	*/
    unsigned long cliipadr;		/* client IP address	*/
    unsigned long brdcst;		/* broadcast address	*/
    unsigned long netmsk;		/* network mask address */
    short 	swapfs;			/* swap file system type*/
    short	rootfs;			/* root file system type*/
    short 	swapsz;			/* swap size in 1/2 Meg units */
    short	dmpflg;			/* dump flag 0 - disabled */
				        /*           1 - enabled  */
    char	rootdesc[80];		/* root filesys descriptor */
    char	swapdesc[80];		/* swap file descriptor	*/
    char	reserved[20];   	/* for later use	*/
};

My question is: What is the meaning of 'swap file system type' and
'root file system type'?

Also, does 'srvname' have to be the name of the host that supplies the
initial 'netload' and 'netblk' files, or can one machine do the
initial booting, supplying a netblk file that refers to another
machine which the client can then mount it's filesystems from?

Finally, is anything special (DEC-specific) done with the swap file,
or can it reside on any host that supports NFS?

Thanks for any help,

-Rob

p.s. Once again I'll ask: Is there any technical documentation
available on how DEC implements is diskless support?  Then you can all
tell me to just RTFM :-)


--
Rob McNicholas			Computer Systems Support Group, U.C. Berkeley
robm@janus.berkeley.edu		....!ucbvax!janus!robm
Home: 415/339-1514		Work: 415/642-8633

lidl@eng.umd.edu (Kurt J. Lidl) (05/22/91)

In article <ROBM.91May20114859@ataraxia.Berkeley.EDU> robm@ataraxia.Berkeley.EDU (Rob McNicholas) writes:
>In /usr/include/sys/mop.h, the netblk structure is defined as:
>
>struct netblk 	{
>    char	srvname[32];		/* server hostname (boot server)*/
>    unsigned long srvipadr;		/* server IP address (boot server)*/
>    char	cliname[32];		/* client hostname	*/
>    unsigned long cliipadr;		/* client IP address	*/
>    unsigned long brdcst;		/* broadcast address	*/
>    unsigned long netmsk;		/* network mask address */
>    short 	swapfs;			/* swap file system type*/
>    short	rootfs;			/* root file system type*/
>    short 	swapsz;			/* swap size in 1/2 Meg units */
>    short	dmpflg;			/* dump flag 0 - disabled */
>				        /*           1 - enabled  */
>    char	rootdesc[80];		/* root filesys descriptor */
>    char	swapdesc[80];		/* swap file descriptor	*/
>    char	reserved[20];   	/* for later use	*/
>};
>
>My question is: What is the meaning of 'swap file system type' and
>'root file system type'?

Well, thorugh empirical evidence (we tested lots of things, grunged through
those horrible "build it on the fly" shell scripts and looking at
Ultrix 3.1 source code), we have determined that the following values
should be used:

0x1 for the swap file system type
0x5 for the root file system type

This gives a root & swap type for type nfs -- probably what you want...

>Also, does 'srvname' have to be the name of the host that supplies the
>initial 'netload' and 'netblk' files, or can one machine do the
>initial booting, supplying a netblk file that refers to another
>machine which the client can then mount it's filesystems from?

srvname is the machine that will be providing the NFS services to the
client -- it has nothing to do with where the client gets the initial
files from -- that is all handled through MOP -- which runs right on
the ethernet hardware -- related to DECNet, but not to TCP/UDP/IP,
which is what NFS is all about...

The "one machine" that you refer to has to give more than just a
netblock.o -- you probably also need to feed it the netload.sys file
and the kernel that you are trying to boot.

>Finally, is anything special (DEC-specific) done with the swap file,
>or can it reside on any host that supports NFS?

Well, it works running off a sun3 and sun4...  Should work for anything
that knows about NFS...

>p.s. Once again I'll ask: Is there any technical documentation
>available on how DEC implements is diskless support?  Then you can all
>tell me to just RTFM :-)

Use the source, Luke!

Unfortunately, we never finished writing the MOP loader for our suns --
so we never finished the final touches on the "make your vs2000's" into
X-terminals...

But we do have a standard way of frobbing the MOP databases -- we wrote
a little C program that digests a file like this (a few example lines):

# X-Terminal Name       Ethernet Address        Server (defaults to rift)
soda00.eng.umd.edu      08-00-2b-07-a4-94
soda05.eng.umd.edu      08-00-2b-07-38-05	jolt.eng.umd.edu
soda06.eng.umd.edu      08-00-2b-07-39-ba

And then spews out a bunch of .c files that will compile down to
the "netblock.o" format that the mop_mom server will hand off to
the client when it boots.  The program also takes care of automatically
added the machines to the MOP databases when it is generating a new
bootfile...  It does the mapping from name->IP number by gethostbyname(),
so if you use nameservice, you always get the right answer :-)

Here is a sample .c file that our program generates:

/* Worthless comment */
/* This is 'puter generated code */

#include <sas/mop.h>
struct netblk nblk={
        "jolt.eng.umd.edu",     /* server hostname (boot server) */
        0x800885E3,             /* server IP address (boot server) */
        "soda00.eng.umd.edu",   /* client hostname */
        0x800885E4,             /* client IP address */
        0x800885FF,             /* broadcast address */
        0xFFFFFF00,             /* network mask address */
        0x1,                    /* swap file system type */
        0x5,                    /* root file system type */
        0xC,                    /* swap size in 1/2 Meg units */
        0x0,                    /* dump flag 0-disabled, 1-enabled */
        "/export/vax/root/soda_root",   /* root filesys descriptor */
        "/export/vax/swap/soda_swap",   /* swap file descriptor */
        ""                       /* for later use (by DEC?) */
};

								-Kurt
--
/* Kurt J. Lidl (lidl@eng.umd.edu) | Unix is the answer, but only if you */
/* UUCP: uunet!eng.umd.edu!lidl    | phrase the question very carefully. */
/*      "It's 5:50 a.m., Do you know where your stack pointer is?"       */