================================================================================ 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 boldface 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): $ MOUNT/FOREIGN DUAn: If you wish to merge your own software into the backup set: $ BACKUP/INITIALIZE/LOG/VERIFY - $_ DUAx:[SYSr...]*.*;*,[yourdirectory...]*.*;* - $_ DUAn:MICROVMS./SAVE_SET If you wish to separate your own software from the backup set: $ BACKUP/INITIALIZE/LOG/VERIFY - $_ DUAx:[SYSr...]*.*;* - $_ DUAn:MICROVMS./SAVE_SET 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 $ DIRECTORY/SIZE=ALLOCATION 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 $ INITIALIZE/MAXIMUM_FILES=x DUAn: label 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 $ BACKUP/INITIALIZE 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 >>> B/1 DUAn 2..1..0.. %SYSBOOT-E-Unable to locate file SYSBOOT> SET STARTUP_P1 "MIN" SYSBOOT> SET VAXCLUSTER 0 SYSBOOT> CONTINUE 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: $ RUN SYSGEN SYSGEN> CREATE PAGEFILE.SYS /SIZE=1000 /NOCONTIGUOUS SYSGEN> EXIT 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: $ RUN SYSGEN SYSGEN> SET STARTUP_P1 "MIN" SYSGEN> SET VAXCLUSTER 0 SYSGEN> WRITE CURRENT SYSGEN> EXIT The next time you reboot, you need only type ">>> B DUAn". 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