================================================================================
Note 37.0                    In Search of "NanoVMS"                   No replies
FURILO::GIORGETTI                                   469 lines   4-SEP-1985 15:51
--------------------------------------------------------------------------------


      +---------------+                                    +-----------------+
      | d i g i t a l |                                    |  uNOTE # 037    |
      +---------------+                                    +-----------------+

                                                                   
      +----------------------------------------------------+-----------------+
      | Title:  In Search of "NanoVMS                      | Date: 19-Jul-85 |
      +----------------------------------------------------+-----------------+
      | Originator:  Edward P. Luwish                      | Page 1 of 8     |
      +----------------------------------------------------+-----------------+



                                      ABSTRACT

              This MicroNote describes the results of ongoing research
              into the size and composition of a minimal VMS system.



                               A WORD ABOUT NOTATION

              Where command lines, prompts and messages are discussed,
              text  printed  by  the  computer  is indicated by normal
              type,  text  entered  by  the  user  is   indicated   by
              [1mboldface[22m type.
              Unless explicitly stated otherwise, all user entries are
              to be terminated by the "return" character.


                                   WHY "NanoVMS"

      MicroVMS as  currently  packaged  and  supported  by  Digital  Equipment
      Corporation is not always an ideal solution for customers who would like
      to use it as a  realtime  application  bed  (rather  than  a  multi-user
      timesharing system).  For this reason, research has been done for over a
      year on minimal VMS systems.   Also,  the  number  of  floppy  diskettes
      required  to bring up the system has been found excessive by some users.
      Currently three floppies for standalone backup are followed by  thirteen
      for  the  base  system.   This  incurs  user inconvenience and a greater
      likelihood of failure in the process.  The TK50 cartridge  tape  is  not
      yet a universal solution to this problem.

                              HOW WAS "NanoVMS" BUILT?

      The problem was approached  by  building  a  VMS  system,  component  by
      component, on the second winchester of a two-disk MicroVAX.  This system
      could be tested simply by shutting  the  system  down  and  booting  the
      second  disk.   If unsuccessful, the full system disk would be rebooted,
      some files added to the minimal system, and it  would  be  tried  again,
      guided by the error messages produced in the previous attempt.


                                  361

uNOTE # 037
Page 2 of 8


                        HOW WAS "NanoVMS BUILT? (continued)

      The first cut at a solution was derived  from  the  "Reboot  Consistency
      Check" offered by sys$system:SHUTDOWN.COM.  Notably absent from the list
      of files was the disk driver!  A number  of  other  missing  files  were
      disclosed,   and   success  was  eventually  achieved  through  repeated
      attempts.  Often the proper functioning of  an  image  depended  on  the
      presence  of  another  (such  as  a library file).  The dependencies are
      shown in the attached directory listing.

                     HOW DOES ONE GENERATE A "NanoVMS" SYSTEM?

      1.  Make some choices

      There are a number of choices which affect how you generate a  "NanoVMS"
      system.   You can create a backup set that can be loaded onto a MicroVAX
      processor using standalone backup [Note - floppies only.  TK50  bootable
      MicroVMS  distributions  cannot  be  created  without access to a source
      kit].  The other choice is to  create  "NanoVMS"  on  a  winchester  and
      physically  install  it in to another MicroVAX.  This choice affects the
      third and fourth steps in the process, "Creating the  distribution"  and
      "Loading  the  distribution".  Another up-front choice that affects your
      work is the list of target CPU's you intend to be able to run  "NanoVMS"
      on  -  currently this includes MicroVAX I, MicroVAX II, VAXstation I and
      VAXstation II.  The work on the latter two  has  not  yet  been  done  -
      special  graphics  font  files  and server files need to be added to the
      list.  Read "Copy the files" below for details.

      2.  Create the directories

      If you have a single-winchester system, create [sys1].  If  you  have  a
      two-disk  system,  create  [sys0]  on  the  non-system disk instead.  In
      either case, create the subdirectories [.sysexe],  [.syslib],  [.sysmgr]
      and [.sysmsg] in the [sys0] or [sys1] directories you just created.
           If you have chosen the distribution option of physically installing
      a  bootable  winchester,  and your non-system disk's data is expendable,
      then you will want to initialize it.  Study the  section  "Creating  the
      Distribution",  below,  with  respect  to initialization options.  After
      initializing the disk, create the previously mentioned directories.

      3.  Copy the files

      Copy all of the files listed on pages 7 and  8  from  the  corresponding
      directories  of  your MicroVMS V4.1M system.  Note that a MicroVAX I CPU
      requires  the  file  SYSLOAUV1.EXE  and  a  MicroVAX  II  CPU   requires
      SYSLOAUV2.EXE.   Make  sure  to  include  the  correct  one (or both) as
      required by the target CPU.  Also be sure to use the /CONTIGUOUS  option
      when copying SYSBOOT.EXE.





                                  362

                                                           uNOTE # 037
                                                           Page 3 of 8


      4.  Create the distribution

      You will first want to decide whether your distribution will include all
      of the files (including your own application files) of the final system,
      or merely a basic "NanoVMS" skeleton to which additional files are added
      from  separate disk volumes.  If the former, at least list and count all
      the additional files you need.  Note  that  VMS  utilities  occasionally
      need  runtime  library  files,  and  your  application  files  may  need
      language-related runtime libraries  not  part  of  the  basic  "NanoVMS"
      system.   Be  sure  to include some extra files in your count.  Remember
      that there are nine files that are part of any VMS volume, and that each
      directory and subdirectory you create is a file as well.

           The nine files that are part of every VMS volume

           INDEXF.SYS         BITMAP.SYS         BADBLK.SYS
           000000.DIR         CORIMG.SYS         VOLSET.SYS
           CONTIN.SYS         BACKUP.SYS         BADLOG.SYS



           If you chose to create a backup set, simply issue  the  appropriate
      mount  and  backup commands, and insert the floppies into the RX50 drive
      (n = floppy unit number, x =  "NanoVMS"  disk  unit  number,  r  =  root
      number):

           $ [1mMOUNT/FOREIGN DUAn:[22m

      If you wish to merge your own software into the backup set:
           $ [1mBACKUP/INITIALIZE/LOG/VERIFY -[22m
           $_ [1mDUAx:[SYSr...]*.*;*,[yourdirectory...]*.*;* -[22m
           $_ [1mDUAn:MICROVMS./SAVE_SET[22m

      If you wish to separate your own software from the backup set:
           $ [1mBACKUP/INITIALIZE/LOG/VERIFY -[22m
           $_ [1mDUAx:[SYSr...]*.*;* -[22m
           $_ [1mDUAn:MICROVMS./SAVE_SET[22m

      The backup set created will then install exactly  as  described  in  the
      Installation chapter of the MicroVMS User's Manual.
           With standalone backup, you lose flexibility in  initializing  your
      system disk - it uses all the default values, which may be unsuitable or
      wasteful in a bounded system.  It is therefore recommended  to  use  the
      "walking  winchester"  as a way to transport bounded systems.  You would
      not be considering "NanoVMS" unless you have a legitimate need  to  save
      disk  space,  and  standalone  backup will often waste space.  The index
      file on an RD volume is greater than 1000 blocks in allocated  size,  in
      order to accomodate a large number of files on the disk.  If you can put
      an upper bound on the number of  files  you  expect  to  have,  you  can
      realize  considerable  savings  in  index file size.  The two parameters
      which most affect disk usage, Cluster Factor and Maximum File Count, are
      explained in the next two paragraphs.

                                  363

uNOTE # 037
Page 4 of 8


      4.  Create the distribution (continued)

           The cluster factor is the number of  disk  blocks  allocated  every
      time  a  new  file  is  created, or if additional blocks are needed when
      editing, etc.  If you issue the DCL command

           $ [1mDIRECTORY/SIZE=ALLOCATION[22m

      you will notice that all the sizes  are  divisible  by  3  (the  default
      cluster size for "large" disks).  If you have many small files, this can
      be  wasteful.   Unless  you  add  the  /CLUSTER_SIZE=n  option  to   the
      INITIALIZE  command,  this number will be 3 for disks larger than 50,000
      blocks, or 1 for smaller disks.   Small  cluster  sizes  will  adversely
      affect  disk  performance since files may be stored as many small pieces
      scattered widely over the disk surface.  On the other hand large cluster
      sizes  will  waste  disk  space,  since only one or two of the three (or
      more) allocated blocks may have data in them.
           The maximum number of files contained on a disk  is  determined  at
      initialization  time  by  the  number  of  empty  file headers allocated
      contiguously in the index file.  The DCL command

           $ [1mINITIALIZE/MAXIMUM_FILES=x DUAn:  label[22m

      initializes a disk with an index file capable of storing x file headers,
      no more.  The largest value of x is derived from the formula

                                        volume size in blocks
              maximum number of files = ---------------------
                                         cluster factor + 1

      The default (when the /MAXIMUM_FILES switch is omitted, or when

           $ [1mBACKUP/INITIALIZE[22m

      is issued) is equal to one-half the number derived by the above formula.
      If  the  default  is much larger than the actual largest number of files
      you anticipate storing, then you can gain many free blocks by specifying
      /MAXIMUM_FILES=x,  where  x is an upper bound on the number of files you
      expect on the disk.  In fact, you get exactly (default_maxfiles)-x  free
      blocks,  since  each  file  header occupies a full block.  The potential
      disadvantage is that the  disk  will  have  to  be  reinitialized  (i.e.
      erased) if you need to store x+1 or more files.
           The following table can be compared with  your  overall  needs,  so
      that the appropriate initialization command line can be given:

                             RD51    RD52    RD53

             Volume Size     19530   60480  138649 blocks
             Cluster Factor    1       3       3   blocks
             Maximum Files    4880    7560   17331 files



                                  364

                                                           uNOTE # 037
                                                           Page 5 of 8


      5.  Load the distribution

      If the  distribution  is  the  "walking  winchester",  then  loading  it
      consists  of installing the disk in the MicroVAX enclosure, removing the
      existing one  if  necessary.   Instructions  for  the  installation  and
      removal of hard disk drives can be found in the system's Owner's Manual.
           If the distribution is a backup set stored  on  a  number  of  RX50
      floppy diskettes, follow the instructions in the Installation chapter of
      the MicroVMS User's Guide.

      6.  Boot "NanoVMS"

      This procedure departs from the normal process, since "NanoVMS" does not
      have  a  paging  file or a system-parameter file, nor can it execute the
      full system startup command procedure since many of the commands  in  it
      try to invoke image (.EXE) files and libraries that are not on the disk.
      A number of error messages  (shown  below)  will  be  displayed  on  the
      console  terminal.  These are normal for "NanoVMS".  To boot the system,
      you must use the conversational boot by typing the commands

           >>> [1mB/1 DUAn[22m

           2..1..0..

           %SYSBOOT-E-Unable to locate file
           SYSBOOT> [1mSET STARTUP_P1 "MIN"[22m
           SYSBOOT> [1mSET VAXCLUSTER 0[22m
           SYSBOOT> [1mCONTINUE[22m


                                        Note

                         If your system is  a  MicroVAX  I,
                         you  will be prompted for the time
                         and  date  before  the   "MicroVMS
                         Version 4.1M" text appears.


           MicroVMS Version 4.1M 13-MAY-1985 22:29

           %SYSINIT-E- lookup failure on paging file, status = 00000000
           %DCL-W-ACTIMAGE, error activating image SETP0
           -CLI-E-IMGNAME, imagefile DUAn:[SYS0.SYSCOMMON.][SYSEXE]SETP0.EXE;
           -RMS-E-DNF, directory not found
           -SYSTEM-W-NOSUCHFILE, no such file
           %RMS-E-FNF, file not found
           %SET-I-NOMSG, Message number 007781B3
           SYSTEM job terminated at 8-AUG-1985 09:39:05.01





                                  365

uNOTE # 037
Page 6 of 8


      6.  Boot "NanoVMS" (continued)

      At this point, press carriage return  and  you  will  be  prompted  with
      "Username:".   Type  any  non-null  alphabetic  string,  followed  by  a
      carriage return.  You will then  be  prompted  twice  with  "Password:".
      Respond  both times with a carriage return.  The familiar "$" DCL prompt
      will then appear.  The default directory is SYS$SYSTEM.

      7.  Further steps...

      The only DCL commands available at this point  are  COPY,  BACKUP,  RUN,
      MOUNT and DISMOUNT, and a very small subset of the SET commands.  If you
      have access to a second winchester with a full MicroVMS  system  on  it,
      you  can mount it and copy additional files to your "NanoVMS" disk.  You
      can also use BACKUP/SELECT to copy  selected  files  from  the  MicroVMS
      distribution  floppies.   Remember  to  try  the  commands  first before
      walking away, since sometimes additional files (primarily in sys$library
      and sys$message) are needed.
           A paging file is often needed, particularly for applications  which
      set  up  large  arrays  or  data buffers, especially when the system has
      limited physical memory.  DECnet requires a 1000 block paging file  just
      to  initialize  itself.   The  file  can  be  created  by  the following
      commands:

           $ [1mRUN SYSGEN[22m
           SYSGEN> [1mCREATE PAGEFILE.SYS /SIZE=1000 /NOCONTIGUOUS[22m
           SYSGEN> [1mEXIT[22m

           To make it less painful to reboot, and to allow  you  to  save  any
      system tuning work, create a parameter file with the following commands:

           $ [1mRUN SYSGEN[22m
           SYSGEN> [1mSET STARTUP_P1 "MIN"[22m
           SYSGEN> [1mSET VAXCLUSTER 0[22m
           SYSGEN> [1mWRITE CURRENT[22m
           SYSGEN> [1mEXIT[22m

      The next time you reboot, you need only type ">>> [1mB DUAn[22m".
           In order to have a  secure  system,  or  to  have  incoming  DECnet
      access,   or   to   support  login  command  files  or  to  run  turnkey
      applications, you will probably want  a  user  authorization  file.   To
      support this, copy the following files from the MicroVMS distribution or
      from    a    MicroVMS    system     disk:      sys$system:AUTHORIZE.EXE,
      sys$library:MTHRTL.EXE    and    sys$library:PLIRTL.EXE    and   INSTALL
      sys$library:SECURESHR.EXE  with  the  /prot/shar/open   options.    When
      running  AUTHORIZE for the first time, you will create the authorization
      file SYSUAF.DAT.  You  will  have  to  reboot  before  you  can  log  in
      successfully.





                                  366

                                                           uNOTE # 037
                                                           Page 7 of 8


                     DIRECTORIES OF FILES NEEDED FOR "NanoVMS"

      Directory DUA1:[SYS0.SYSEXE]

      BACKUP.EXE;1    189 ! Required for adding additional files
                          ! to basic "NanoVMS" from backup sets
      COPY.EXE;1       58 ! Required for adding additional files
                          ! to basic "NanoVMS" from VMS volumes
      DCL.EXE;1       132 ! Required by STARTUP.COM and subsequent
                          ! user command execution
      DISMOUNT.EXE;1    8 ! Required to remove auxiliary volumes
      DUDRIVER.EXE;1   27 ! Disk controller protocol driver
      F11BXQP.EXE;1   107 ! Files-11 server
      FPEMUL.EXE;1     20 ! Floating-point emulator
      INSTALL.EXE;1    46 ! VMOUNT.EXE must be INSTALLed to be run
      JOBCTL.EXE;1    102 ! Required to create LOGINOUT as detached process
      LOGINOUT.EXE;2  103 ! Permits logins after STARTUP.COM exits
      PUDRIVER.EXE;1   13 ! Disk controller port driver
      RMS.EXE;1       211 ! RMS-32 server - required to find and open files
      RUNDET.EXE;1     14 ! Required to run JOBCTL as detached process
      SCSLOA.EXE;1      8 ! Required when using MSCP system disks
      SET.EXE;1       167 ! Required to enable interactive logins
      STARTUP.COM;1    17 ! Sets up LOGINOUT and system logical symbols
      SYS.EXE;1       344 ! The operating system image (except for
                          ! device and file support, instruction emulation)
      SYSBOOT.EXE;1    87 ! The primary bootstrap
      SYSGEN.EXE;1    115 ! Required to alter and save system parameters
      SYSINIT.EXE;1    87 ! The first image to be run as a process
      SYSLOAUV2.EXE;1  15 ! MicroVAX II processor-specific initialization code
      TTDRIVER.EXE;1   45 ! The terminal driver
      VAXEMUL.EXE;1    23 ! Emulates non-floating-point VAX instructions
      VMOUNT.EXE;1     16 ! Required to mount auxiliary volumes

      Total of 24 files, 1954 blocks.

      Directory DUA1:[SYS0.SYSLIB]

      DCLTABLES.EXE;3 248 ! Required by sys$system:DCL.EXE
      DISMNTSHR.EXE;1  11 ! Required by sys$system:DISMOUNT.EXE
      ENCRYPSHR.EXE;1  18 ! Required by sys$system:BACKUP.EXE
      LBRSHR.EXE;1     76 ! Required by sys$system:INSTALL.EXE
      LIBRTL.EXE;1    128 ! Required by sys$system:JOBCTL.EXE
      LIBRTL2.EXE;1    39 ! Required by sys$system:JOBCTL.EXE
      MOUNTSHR.EXE;1  120 ! Required by sys$system:VMOUNT.EXE
      SCRSHR.EXE;1     21 ! Required by sys$system:SYSGEN.EXE
      SECURESHR.EXE;1  58 ! Required by sys$system:BACKUP.EXE

      Total of 9 files, 719 blocks.





                                  367

uNOTE # 037
Page 8 of 8


               DIRECTORIES OF FILES NEEDED FOR "NanoVMS" (continued)

      Directory DUA1:[SYS0.SYSMGR]

      ACCOUNTNG.DAT;1   5 ! This file is created by LOGINOUT.EXE

      Total of 1 file, 5 blocks.

      Directory DUA1:[SYS0.SYSMSG]

      SYSMGTMSG.EXE;1  49 ! Required for intelligible error messages
      SYSMSG.EXE;1    268 ! Required for intelligible error messages

      Total of 2 files, 317 blocks.

      Grand total of 4 directories, 36 files, 2995 blocks.

      Not shown:
          Index file (see text)
          Other files produced by volume initialization
          Directory files (average 5 blocks each)
          Page file (see text)
          Sysgen parameter files (15 blocks each)



                                        NOTE

              This MicroNote describes a minimal VAX/VMS system  which
              is  not  in  any  way  warranted or supported by Digital
              Equipment Corporation - it reports ongoing  research  by
              the  author,  and  represents solely his conclusions and
              opinions, not those of  Digital  Equipment  Corporation.
              The  minimal  VAX/VMS  system described here can only be
              used on MicroVAX computer systems which are licensed  to
              run  MicroVMS.  It is composed of files which are normal
              components of MicroVMS V4.1M.  Earlier or later versions
              of   MicroVMS   may  not  successfully  execute  in  the
              described subset environment.














                                  368

