42 KiB
42 KiB
# MAN8
MAN8 (8)
Section 8 of the Manual contains information on system installation and
maintenance.
The sections of the manual are:
Section 1: User commands
Section 2: System calls
Section 3: C library
Section 4: File formats
Section 5: Miscellaneous
Section 6: Games
Section 7: Special files (devices)
-->Section 8: Maintenance procedures
# alive
ALIVE (8M) MAINTENANCE COMMANDS ALIVE (8M)
NAME
alive - keep connection alive
SYNOPSIS
alive [ -v ] hostname [ interval ]
AVAILABILITY
This command is available with the TemariNET software
package.
DESCRIPTION
The alive command sends a UDP packet to the UDP discard port
of the hostname specified every interval seconds. If the
interval is not given the default is 30 seconds.
The purpose is to prevent the connection from timing out due
to inactivity.
OPTIONS
-v
Verbose mode. This is useful for debugging purposes
only.
EXAMPLE
alive oasis2 300
NOTES
The source for this command will show an example of how to
write a program to use the UDP protocol.
AUTHOR
Michael Temari - temari@temari.ae.ge.com
# daytimed
DAYTIMED (8M) MAINTENANCE COMMANDS DAYTIMED (8M)
NAME
daytimed - report the current date and time
SYNOPSIS
daytimed [ -d ]
AVAILABILITY
This command is available with the TemariNET software
package.
DESCRIPTION
daytimed is a daemon server which implements the DAYTIME
protocol. It reports the system's current date and time.
OPTIONS
-d
Debug mode. This is useful for debugging purposes
only.
SEE ALSO
netdate(8m), timed(8m)
AUTHOR
Michael Temari - temari@temari.ae.ge.com
Fred N. van Kempen - waltje@uwalt.nl.mugnet.org
# netdate
NETDATE (8M) MAINTENANCE COMMANDS NETDATE (8M)
NAME
netdate - fetch the current date and time off of a network
server
SYNOPSIS
netdate [ -adtv ] [ hostname ] [ -s ] [ server ]
AVAILABILITY
This command is available with the TemariNET software
package.
DESCRIPTION
The netdate command implements the TIMEP protocol (see RFC
868) for fetching the current date and time off a network
server. If no server name is given, the program will use
the localhost as the TIMEP server.
OPTIONS
-a
Display the time in ARPANET standard format.
-d
Debug mode. This is useful for debugging purposes
only.
-t
Use time(2) and do as date(1).
-v
Verbose mode. This is the same as -d.
-s
Set the time of the system RTC clock.
EXAMPLE
netdate -s nyx.cs.du.edu
SEE ALSO
timed(8m)
AUTHOR
Michael Temari - temari@temari.ae.ge.com
Fred N. van Kempen - waltje@uwalt.nl.mugnet.org
# nslookup
NSLOOKUP (8) June 24, 1990 NSLOOKUP (8)
NAME
nslookup - query Internet name servers interactively
SYNOPSIS
nslookup [ -option ] [ host-to-find | - [ server ]]
DESCRIPTION
Nslookup is a program to query Internet domain name
servers. Nslookup has two modes: interactive and
non-interactive. Interactive mode allows the user to query
name servers for information about various hosts and domains
or to print a list of hosts in a domain. Non-interactive
mode is used to print just the name and requested
information for a host or domain.
ARGUMENTS
Interactive mode is entered in the following cases:
a)
when no arguments are given (the default name server
will be used),
b)
when the first argument is a hyphen (-) and the second
argument is the host name or Internet address of a name
server.
Non-interactive mode is used when the name or Internet
address of the host to be looked up is given as the first
argument. The optional second argument specifies the host
name or address of a name server.
The options listed under the ``set'' command below can be
specified in the .nslookuprc file in the user's home
directory if they are listed one per line. Options can
also be specified on the command line if they precede the
arguments and are prefixed with a hyphen. For example, to
change the default query type to host information, and the
initial timeout to 10 seconds, type:
nslookup -query=hinfo -timeout=10
INTERACTIVE COMMANDS
Commands may be interrupted at any time by typing a
control-C. To exit, type a control-D (EOF) or type exit.
The command line length must be less than 256 characters.
To treat a built-in command as a host name, precede it with
an escape character (\). N.B. an unrecognized command will
be interpreted as a host name.
host [server]
Look up information for host using the current default
server or using server if specified. If host is an
Internet address and the querey type is A or PTR, the
name of the host is returned. If host is a name and
does not have a trailing period, the default domain
name is appended to the name. (This behavior depends
on the state of the set options domain, srchlist,
defname, and search). To look up a host not in the
current domain, append a period to the name.
server domain
lserver domain
Change the default server to domain. Lserver uses the
initial server to look up information about domain
while server uses the current default server. If an
authoritative answer can't be found, the names of
servers that might have the answer are returned.
root
Changes the default server to the server for the root
of the domain name space. Currently, the host
ns.nic.ddn.mil is used. (This command is a synonym for
lserver ns.nic.ddn.mil.) The name of the root server
can be changed with the set root command.
finger [name] [> filename]
finger [name] [>> filename]
Connects with the finger server on the current host.
The current host is defined when a previous lookup for
a host was successful and returned address information
(see the set querytype=A command). Name is optional.
> and >> can be used to redirect output in the usual
manner.
ls [option] domain [> filename]
ls [option] domain [>> filename]
List the information available for domain, optionally
creating or appending to filename. The default output
contains host names and their Internet addresses.
Option can be one of the following:
-t querytype
lists all records of the specified type (see querytype
below).
-a
lists aliases of hosts in the domain. synonym for -t
CNAME.
-d
lists all records for the domain. synonym for -t ANY.
-h
lists CPU and operating system information for the
domain. synonym for -t HINFO.
-s
lists well-known services of hosts in the domain.
synonym for -t WKS. When output is directed to a file,
hash marks are printed for every 50 records received
from the server.
view filename
Sorts and lists the output of previous ls command(s)
with more(1).
help
?
Prints a brief summary of commands.
exit
Exits the program.
set keyword[=value]
This command is used to change state information that
affects the lookups. Valid keywords are:
all
Prints the current values of the frequently-used
options to set. Information about the current default
server and host is also printed.
class=value
Change the query class to one of:
IN
the Internet class.
CHAOS
the Chaos class.
HESIOD
the MIT Athena Hesiod class.
ANY
wildcard (any of the above). The class specifies the
protocol group of the information.
(Default = IN, abbreviation = cl)
[no]debug
Turn debugging mode on. A lot more information is
printed about the packet sent to the server and the
resulting answer.
(Default = nodebug, abbreviation = [no]deb)
[no]d2
Turn exhaustive debugging mode on. Essentially all
fields of every packet are printed.
(Default = nod2)
domain=name
Change the default domain name to name. The default
domain name is appended to a lookup request depending
on the state of the defname and search options. The
domain search list contains the parents of the default
domain if it has at least two components in its name.
For example, if the default domain is CC.Berkeley.EDU,
the search list is CC.Berkeley.EDU and Berkeley.EDU.
Use the set srchlist command to specify a different
list. Use the set all command to display the list.
(Default = value from hostname, /etc/resolv.conf or
LOCALDOMAIN, abbreviation = do)
srchlist=name1/name2/...
Change the default domain name to name1 and the domain
search list to name1, name2, etc. A maximum of 6 names
separated by slashes (/) can be specified. For
example,
set srchlist=lcs.MIT.EDU/ai.MIT.EDU/MIT.EDU
sets the domain to lcs.MIT.EDU and the search list to
the three names. This command overrides the default
domain name and search list of the set domain command.
Use the set all command to display the list.
(Default = value based on hostname, /etc/resolv.conf or
LOCALDOMAIN, abbreviation = srchl)
[no]defname
If set, append the default domain name to a
single-component lookup request (i.e., one that does
not contain a period).
(Default = defname, abbreviation = [no]def)
[no]search
If the lookup request contains at least one period but
doesn't end with a trailing period, append the domain
names in the domain search list to the request until an
answer is received.
(Default = search, abbreviation = [no]sea)
port=value
Change the default TCP/UDP name server port to value.
(Default = 53, abbreviation = po)
querytype=value
type=value
Change the type of information query to one of:
A
the host's Internet address.
CNAME
the canonical name for an alias.
HINFO
the host CPU and operating system type.
MINFO
the mailbox or mail list information.
MX
the mail exchanger.
NS
the name server for the named zone.
PTR
the host name if the query is an Internet address,
otherwise the pointer to other information.
SOA
the domain's ``start-of-authority'' information.
TXT
the text information.
UINFO
the user information.
WKS
the supported well-known services. Other types (ANY,
AXFR, MB, MD, MF, NULL) are described in the RFC-1035
document.
(Default = A, abbreviations = q, ty)
[no]recurse
Tell the name server to query other servers if it does
not have the information.
(Default = recurse, abbreviation = [no]rec)
retry=number
Set the number of retries to number. When a reply to a
request is not received within a certain amount of
time (changed with set timeout), the timeout period is
doubled and the request is resent. The retry value
controls how many times a request is resent before
giving up.
(Default = 4, abbreviation = ret)
root=host
Change the name of the root server to host. This
affects the root command.
(Default = ns.nic.ddn.mil., abbreviation = ro)
timeout=number
Change the initial timeout interval for waiting for a
reply to number seconds. Each retry doubles the
timeout period.
(Default = 5 seconds, abbreviation = ti)
[no]vc
Always use a virtual circuit when sending requests to
the server.
(Default = novc, abbreviation = [no]v)
[no]ignoretc
Ignore packet truncation errors.
(Default = noignoretc, abbreviation = [no]ig)
DIAGNOSTICS
If the lookup request was not successful, an error message
is printed. Possible errors are:
Timed out 5
The server did not respond to a request after a certain
amount of time (changed with set timeout=value) and a
certain number of retries (changed with set
retry=value).
No response from server 5
No name server is running on the server machine.
No records 5
The server does not have resource records of the
current query type for the host, although the host name
is valid. The query type is specified with the set
querytype command.
Non-existent domain 5
The host or domain name does not exist.
Connection refused 5
Network is unreachable 5
The connection to the name or finger server could not
be made at the current time. This error commonly
occurs with ls and finger requests.
Server failure 5
The name server found an internal inconsistency in its
database and could not return a valid answer.
Refused 5
The name server refused to service the request.
Format error 5
The name server found that the request packet was not
in the proper format. It may indicate an error in
nslookup.
FILES
/etc/resolv.conf initial domain name and name server
addresses.
$HOME/.nslookuprc user's initial options.
/usr/share/misc/nslookup.help summary of commands.
ENVIRONMENT
HOSTALIASES file containing host aliases.
LOCALDOMAIN overrides default domain.
SEE ALSO
resolver(3), resolver(5), named(8),
RFC-1034 ``Domain Names - Concepts and Facilities''
RFC-1035 ``Domain Names - Implementation and Specification''
AUTHOR
Andrew Cherenson
# timed
TIMED (8M) MAINTENANCE COMMANDS TIMED (8M)
NAME
timed - report the current time and date to a client
SYNOPSIS
timed [ -dv ]
AVAILABILITY
This command is available with the TemariNET software
package.
DESCRIPTION
timed is a daemon server which implements the TIMEP
protocol, as described in RFC 868. This protocol can be used
to ask servers like this one for their current
time-and-day.
-d
Debug mode. This is useful for debugging purposes
only.
-v
Verbose mode. This is the same as -d.
EXAMPLE
timed &
SEE ALSO
daytimed(8m), netdate(8m)
AUTHOR
Michael Temari - temari@temari.ae.ge.com
Fred N. van Kempen - waltje@uwalt.nl.mugnet.org
TemariNET Software April 29, 1993 1
# demolish
DEMOLISH(8) Minix Programmer's Manual DEMOLISH(8)
NAME
demolish - take an image to pieces
SYNOPSIS
demolish image
demolish image kernel mm fs ... init
DESCRIPTION
Demolish does the opposite of installboot -image or build: It takes a
Minix kernel image apart to its components. Extracting an image made by
installboot is straightforward, as it is much like an ar(1) or tar(1)
archive. A build made image has lost a lot of information about the
original programs, so you need to specify their names.
The following restrictions/assumptions/comments are made about a build
image:
It must be a 1.5 or newer image with no special tricks.
The kernel must either be separate I&D, or it's stack must be 512
bytes exactly with no change to the beginning of the text and data
segment.
The click size is 256.
There is a minute chance that the data segment of a common I&D fs is
not properly located. This doesn't matter for the other programs.
The assumption is that this program is used to take a Minix distribution
boot floppy apart, so that the programs may be reassembled by installboot
for my boot monitor (see monitor(8)).
SEE ALSO
build(8), installboot(8), monitor(8).
BUGS
Recompile the kernel. Feels much better.
AUTHOR
Kees J. Bot, (kjb@cs.vu.nl)
# installboot
INSTALLBOOT(8) Minix Programmer's Manual INSTALLBOOT(8)
NAME
installboot - make a device bootable
SYNOPSIS
installboot -i(mage) image [label:]kernel mm fs ... init
installboot -d(evice) device bootblock boot
installboot -b(oot) device bootblock boot [label:]image ...
installboot -m(aster) [fix] device masterboot
DESCRIPTION
Installboot may be used to make a device bootable by constructing a
kernel image and installing bootstrap code into the boot block of a Minix
filesystem. To understand how this can be done one first has to know
what happens when a PC is booted.
When the power is turned on the typical PC will try to read the first
sector from the first floppy disk or from the first hard disk into memory
and execute it. The code obtained from the hard disk (from the so-called
master boot sector) will immediately replace itself by the code found in
the first sector of the active partition. Thus the PC is now executing
the bootstrap code found in the first sector of /dev/fd0, /dev/hd1,
/dev/hd2, /dev/hd3, or /dev/hd4. The bootstrap will locate the operating
system on the device it itself was loaded from, load it, and execute it,
usually in a two phase process.
To make a Minix filesystem /dev/fd0 mounted on /mnt bootable, enter the
following:
cp boot /mnt/boot
installboot -image /mnt/minix kernel mm fs init
installboot -device /dev/fd0 bootblock boot
The "boot" program in the example is named the "boot monitor". It is
loaded by the bootblock code placed in the boot sector of /dev/fd0 and it
will take care of loading the kernel image "minix" from the root
directory of the filesystem. See monitor(8) for a description of the
boot monitor.
The most important aspect of this now bootable device is that it is not
bound to type of media it is on, as the bootblock is the same for double
and high density 3.5 and 5.25 inch floppy disks and the hard disk. You
can copy it raw to /dev/hd3 for instance, put an active flag on partition
3 (see fdisk(8)) and boot it. I routinely make raw copies of my hard
disk root file system to floppies and these floppies are again bootable
without change. Combined with a stripped /usr file system on floppy, I
can always get my system back to life in case of disaster.
OPTIONS
-image
The -image option (or any prefix down to -i) combines the executable
files needed to run Minix in one file. Only the names and a few
zero bytes are inserted into the image. The name is for
identification and the zeros are used to pad separate pieces to
(1)
INSTALLBOOT(8) Minix Programmer's Manual INSTALLBOOT(8)
sector boundaries for fast loading. Each executable is normally
stripped of its symbol table, unless a -s flag is placed before it.
An executable may be prefixed with a label. The monitor may be
instructed to not load processes with the wrong label. So more than
one kernel process may be included in the image, each with a
different winchester driver for instance.
-device
Installs bootblock in the boot sector of device together with the
disk addresses to boot. These disk addresses are needed to load
boot from the file system at boot time. If the boot parameters
sector (the second half of the boot block) is found to contain
garbage, it is cleared to null commands. Again see monitor(8).
The device need not be mounted when installboot is run, nor does it
matter if it is.
Installboot needs to be run again if boot is rewritten, because it
will then occupy a new place on the disk.
-boot
This option fills a blank floppy in device with boot code and kernel
images. This "boot disk" does not have a root file system, only the
boot monitor and Minix kernels. The boot parameters sector is
filled with code that enables menu options for selecting an image.
After loading an image, the monitor will ask you to insert a root
file system diskette before starting Minix.
The labels used on the images should ideally match those on the
executables used inside the image. You can put a comma separated
list of labels on an image for each label used within the image.
If a label-list is omitted on an image, then that image will be
selected by default.
-demo
This is a special feature for creating a demo disk. It works just
like the -boot option, except that the device must contain a file
system. Use it to dress up a small root file system with boot code
and a kernel to make a single floppy Minix demo. The file system
must be small enough to allow for the monitor and images be placed
*after* it.
-master
This option installs the masterboot program into the boot sector of
the given device. If another device is given instead of masterboot
then its bootstrap code is copied to device. The master bootstrap
on a hard disk boots the active partition on that disk at boot time.
The MS-DOS fdisk command normally puts a master bootstrap on the
hard disk, but the masterboot program in this package has a lot more
features:
If the ALT key is held down while booting then '/dev/hd?'
appears and you are expected to type a number key (0 - 9) to
select the device to boot.
(2)
INSTALLBOOT(8) Minix Programmer's Manual INSTALLBOOT(8)
If a fix key is given (0 - 9) then the bootstrap is locked into
booting the given /dev/hd device. This is needed if 'boot
*hdN' is used from the monitor to boot an O.S. that needs the
active flag set.
If installed on a floppy then it will try to boot the next
floppy or the first hard disk. Ideal for floppies with just
data on it, they will no longer obstruct the boot process if
left in the drive. Also a very useful trick to boot from
floppy drive 1.
If installed on a hard disk then the active partition is
selected and booted as usual, unless none of the partitions is
marked active, then it will boot the next disk. The latter is
useful if you want to boot an operating system from the second
disk by default.
A backup copy of the current master bootstrap can be made with:
dd if=device of=backup-file bs=446 count=1
A simple 'cat backup-file > device' will put it back.
SEE ALSO
fdisk(8), monitor(8).
DIAGNOSTICS
Lot's of numbers describing executables being read, addresses patched.
Errors about missing files, nonexecutable files, etc.
A very useful warning if a segment of an i8086 executable is larger than
64K.
A warning and a ten second countdown if -boot is about to scribble over a
file system.
BUGS
It has four more options than the SunOS installboot program it is modeled
after.
The symbol table support is a misfeature, only a debugger can use it.
Time spent fiddling with debuggers is better used finding bugs.
The bootblock code has been crunched to such ugliness that you can use it
scare little kids out of your garden.
AUTHOR
Kees J. Bot (kjb@cs.vu.nl)
(3)
# monitor
MONITOR(8) Minix Programmer's Manual MONITOR(8)
NAME
monitor, edparams - load and start Minix, modify boot parameters
SYNOPSIS
edparams device [command ...]
DESCRIPTION
This text describes the boot monitor, a boot time interactive program
designed not only to load and start Minix, its most important task, but
to also provide an easy to use interface to configure Minix and to boot
other operating systems.
The monitor is controlled with an environment that is modeled after the
Bourne shell. This environment is filled at startup with default values
that depend on the machine the monitor is running on and the environment
settings saved into the boot parameters sector (the second sector on a
device). When the environment is loaded, the monitor executes the
function named main, which by default starts a simple menu.
The environment can be manipulated at boot time from the monitor prompt,
but may also be edited using edparams on a given device. Edparams
simulates the monitor as much as it can, echoing commands it can't
execute between brackets. It may be used in Makefiles or scripts too by
giving it commands as arguments.
COMMANDS
The monitor is best described by the commands you can type to the '>'
prompt. This is known as the monitor mode. You can enter this mode by
hitting the Escape key. A list of commands is shown if you type
something illegal, like 'help'. These are the commands:
name = [device] value
Set environment variable.
Changes the value of name to value. Adding the word device (or any
word starting with a 'd') marks name as being subject to device
translation. (See the section on devices.) These (name, value)
pairs are passed to the kernel who usually ignores them, unless they
are one of these special variables:
rootdev
This is the device used as your root device. It is by default
set to ram, which means that the device specified by
ramimagedev will be loaded into the RAM disk and used as root.
If you change this variable, then a physical device will be
used as root, and the RAM disk will be uninitialized and have
the size specified by ramsize.
ramimagedev
Describes the device to use to initialize the RAM disk if
rootdev is set to ram. It's by default set to bootdev, a
special name for the device the monitor booted from.
(1)
MONITOR(8) Minix Programmer's Manual MONITOR(8)
ramsize
The size of the RAM disk when it is not used as the root
device, by default 0.
keyboard
This is by default set to standard, but may be changed to
olivetti, us or dutch. The keyboard choice is translated to a
number (if not a number already) and passed to the kernel
assigned to the reserved scancode variable.
processor
Set by default to 86, 186, 286, 386 or 486, depending on the
hardware you have. You can set it to a smaller value to test
your kernel in a more limited environment.
memsize
Kilobytes of conventional memory.
emssize
Kilobytes of extended memory.
chrome
Either color or mono.
video
Describes capabilities of the VDU: mda, cga, ega, or vga.
Two variables are only used by the monitor, even though they are
passed to the kernel too:
image
The name of the file containing the kernel image, by default
minix. If it refers to a directory however, the newest file
inside that directory is chosen to be the kernel image. The
names inside that directory are best set to the Minix version
you are using, which looks good when the monitor prints the
copyright message. To add feature to feature, if you add
something like 'r29' to the version number, it will nicely tell
you that you are running your 29-th revision of the original
Minix. To sum up the rules used for pretty printing image
names:
A '/' or '_' is changed to a space.
The first letter is changed from lowercase to uppercase.
An 'r' if followed by a digit changes to ' revision '.
If no digits have been printed, '1.6' is added as the default
version.
(2)
MONITOR(8) Minix Programmer's Manual MONITOR(8)
label
If set then only processes marked with this label or without a
label are loaded from the image. Use it to select a kernel
process with a proper winchester driver for instance.
Installboot -boot will create functions to select images and labels.
These functions will set label and image and echo what you selected.
The two numbers separated by a colon used as an image name tell the
starting sector and sector count of the image on disk.
name() { ... }
Define function.
Functions may be used to bundle a set of commands, so that you can
easily boot Minix with a different set of parameters then normal.
E.g.
ram() { rootdev=ram; boot }
will allow you to run Minix with the root device on RAM for a
change, if you normally use a real device as root. The only pre-set
function is main with default value menu, which is the default
command executed by the monitor. You can use newlines after the ')'
token, the monitor will then use a '+' prompt and ask for the rest.
name(key) { ... }
Define kernel selecting function.
The menu command uses functions like these to add menu entries to
select a different kernel from a boot disk. Installboot -boot
produces these functions when the images are labeled. The label AT
would give:
AT(a) {label=AT;image=42:626;echo AT kernel selected;menu}
With the menu option:
a Select AT kernel
Typing a will then execute the AT function above.
name(key,text) { ... }
User defined menu option.
This variant may be used to make any menu entry you like:
dos(d,Boot MS-DOS) { boot hd1 }
Text may be anything, even matching parentheses.
name
Call function.
If name is a user defined function then its value is expanded and
executed in place of name. Try a recursive one like 'rec()
(3)
MONITOR(8) Minix Programmer's Manual MONITOR(8)
{rec;xx}' one day. You can see the monitor run out of space with
nice messages about using chmem(1) to increase it's heap.
boot [device]
Boot Minix or another O.S.
Without an argument, boot will load and execute the Minix image
named by the image variable. With an argument, boot loads the boot
sector of device into memory and jumps to it, starting another
operating system. You would normally use partitions on the first
hard disk for this command (hd[1-4]), using hd0 may also work
(choosing the active partition). Devices on the second hard disk
(hd[5-9]) can only be booted if the bootstrap writer did not
hardwire the disk number to disk 0. The name of device is used, not
its Minix device number, making it independent from the Minix device
name to device number mapping.
Some operating systems can only be booted from the active partition,
if you use a '*', e.g. boot *hd3, then partition 3 is first made
active. You'll then need to use installboot -master with a fix key
to forcefully boot the Minix partition at startup.
delay [msec]
Delay (500 msec default).
The first time my program worked on the hard disk I was a bit
disappointed, 10 days of work went by in less then a second. Later
I was pleased with that, because speed was one of the objectives.
But if you need some time (to hit Escape, or stare at the numbers)
you can use delay to make the monitor pause for a specified amount
of time. To specify a delay just before Minix is started, you can
set the variable delay to a number of milliseconds. Example:
main() {delay 250; delay=500; boot}
Look at this carefully, 'delay 250' means: "wait 1/4 sec now!",
while 'delay=500' means: "wait 1/2 sec after loading Minix".
If you use the word swap instead of a number, then the monitor will
wait until you have inserted a root diskette and typed RETURN.
echo word ...
Print these words.
Used to tell you that you just selected image X.
ls [directory]
List contents of directory.
Shows the names of the files in a directory. It's only use is to
list the names of the available kernels in the minix directory.
menu
Menu driven startup.
This command allows you to execute functions defined with a key. If
no menu functions have been defined then menu will use this one
(4)
MONITOR(8) Minix Programmer's Manual MONITOR(8)
hidden built-in function:
*(=,Start Minix) { boot }
Kernel selecting functions only add new options to this set, but if
you define a two argument function yourself then the above one is no
longer shown, allowing you to customize the menu completely. Your
first function definition should therefore be one that starts Minix.
save
Save environment.
This will save all the environment variables and functions with
nondefault values to the parameter sector (the second sector on the
boot device), so they are automatically set the next time you boot
the monitor.
set
Show environment.
Like the shell command of the same name, set will show you the
current values of the environment variables and functions. Default
values are shown between parentheses to distinguish them from values
that were explicitly set.
trap msec command
Schedule command.
Schedules a command to be executed after msec milliseconds. Only
the monitor mode cannot be interrupted, a scheduled trap is killed
when the prompt is printed. Example:
main() {trap 10000 boot; menu}
This gives you 10 seconds to choose a menu option before Minix is
booted.
unset name ...
Unset environment variables.
Removes the named variables and functions from the environment, and
sets special variables back to their default values. This is also
the only way to remove the "device name translation" property from a
variable.
DEVICES
The Minix kernel can't do anything with device names, so they have to be
translated to device numbers before they are passed to the kernel. This
number is found under the st_rdev field (see stat(2)) of the file on the
boot file system. The monitor will look for the device file with the
working directory set to '/dev'. If it can't find the device name then
it will translate names like 'ram', 'fd1', 'hd0', 'hd6', and 'hd2a' to
what it itself thinks the numbers should be.
(5)
MONITOR(8) Minix Programmer's Manual MONITOR(8)
The special name bootdev is translated to the name of the device booted
from, like 'fd0', or 'hd3', and then searched for in /dev.
EXTENSIONS
A few extensions have been made to this program for kernel hackers. They
may be triggered by setting bits in the (normally 0) word used for the
kernel DS value in kernel/mpx.x. The flag bits are:
0x0001 Call kernel in 386 mode.
The monitor will make the switch to 386 protected mode before it
calls the kernel. This requires changes to the early startup phase
of the kernel. The advantages are that variables used at startup
need not be within the first 64K, no need for a 8086 cross compiler
to compile the few files that need to be in 16 bit mode, nor a
loader that can combine 8086 and 80386 code.
0x0002 Do not make space for bss.
The 386 virtual memory kernel can claim the bss pages for each
process other than itself, the monitor need not do that. This
allows for a much larger bss area then the monitor can make in that
puny 640Kb. The size of the bss area in clicks is added to the two
word table of process sizes in the kernel data segment to make it a
three word table.
0x0004 Use the stack size set by chmem(1).
This flag tells the monitor that it needs to make space for a stack
as set by the chmem(1) command, because the processes are not using
fixed sized arrays for the stack. If the 0x0002 bit is set, then
the size of the stack in clicks is simply provided in a fourth word
in the kernel data segment.
0x0008 Obsolete.
This flag used to ask for the size of the symbol table, but the
monitor no longer supports the misfeature of loading symbol tables
into memory.
0x0010 No need to patch anything.
The monitor places an array of the 32 byte a.out headers of the
processes at address 0x00600. Setting this flag means that the
kernel is using them instead of the sizes array, so the monitor need
not patch anything.
Do not think that all of this means that this package is geared towards
386 Minix. All these extensions are just a few simple extra features.
(Having first used Minix on an XT with just two 360kb floppy drives makes
one not forget the low end.)
(6)
MONITOR(8) Minix Programmer's Manual MONITOR(8)
SEE ALSO
chmem(1), stat(2), installboot(8).
DIAGNOSTICS
Many self-explanatory messages about files not being found, bad images,
disk read errors, lack of memory, etc.
ACKNOWLEDGMENTS
Guy Helmer, for the floppy sensing code that somehow disappeared into the
boot block.
Earl Chew, for the inspiration his shoelace package provided, unless he
wants to file a 'look and feel' suit against me, then I will say I
modeled it after the SunOS ROM boot monitor, which is also true.
BUGS
The delay command will hang forever on the original IBM PC (not the XT!).
Not that it matters, as everything takes forever on that box.
Reading the first sector to boot a floppy (e.g. boot fd1), is done using
whatever floppy parameters boot currently has available. This will
probably always work.
The two forms of delay are a crock.
The word emssize comes from EMS, that has to do with expanded memory, not
extended memory. I didn't know the difference.
AUTHOR
Kees J. Bot (kjb@cs.vu.nl)
(7)
MAN8 (8)
Section 8 of the Manual contains information on system installation and
maintenance.
The sections of the manual are:
Section 1: User commands
Section 2: System calls
Section 3: C library
Section 4: File formats
Section 5: Miscellaneous
Section 6: Games
Section 7: Special files (devices)
-->Section 8: Maintenance procedures
# alive
ALIVE (8M) MAINTENANCE COMMANDS ALIVE (8M)
NAME
alive - keep connection alive
SYNOPSIS
alive [ -v ] hostname [ interval ]
AVAILABILITY
This command is available with the TemariNET software
package.
DESCRIPTION
The alive command sends a UDP packet to the UDP discard port
of the hostname specified every interval seconds. If the
interval is not given the default is 30 seconds.
The purpose is to prevent the connection from timing out due
to inactivity.
OPTIONS
-v
Verbose mode. This is useful for debugging purposes
only.
EXAMPLE
alive oasis2 300
NOTES
The source for this command will show an example of how to
write a program to use the UDP protocol.
AUTHOR
Michael Temari - temari@temari.ae.ge.com
# daytimed
DAYTIMED (8M) MAINTENANCE COMMANDS DAYTIMED (8M)
NAME
daytimed - report the current date and time
SYNOPSIS
daytimed [ -d ]
AVAILABILITY
This command is available with the TemariNET software
package.
DESCRIPTION
daytimed is a daemon server which implements the DAYTIME
protocol. It reports the system's current date and time.
OPTIONS
-d
Debug mode. This is useful for debugging purposes
only.
SEE ALSO
netdate(8m), timed(8m)
AUTHOR
Michael Temari - temari@temari.ae.ge.com
Fred N. van Kempen - waltje@uwalt.nl.mugnet.org
# netdate
NETDATE (8M) MAINTENANCE COMMANDS NETDATE (8M)
NAME
netdate - fetch the current date and time off of a network
server
SYNOPSIS
netdate [ -adtv ] [ hostname ] [ -s ] [ server ]
AVAILABILITY
This command is available with the TemariNET software
package.
DESCRIPTION
The netdate command implements the TIMEP protocol (see RFC
868) for fetching the current date and time off a network
server. If no server name is given, the program will use
the localhost as the TIMEP server.
OPTIONS
-a
Display the time in ARPANET standard format.
-d
Debug mode. This is useful for debugging purposes
only.
-t
Use time(2) and do as date(1).
-v
Verbose mode. This is the same as -d.
-s
Set the time of the system RTC clock.
EXAMPLE
netdate -s nyx.cs.du.edu
SEE ALSO
timed(8m)
AUTHOR
Michael Temari - temari@temari.ae.ge.com
Fred N. van Kempen - waltje@uwalt.nl.mugnet.org
# nslookup
NSLOOKUP (8) June 24, 1990 NSLOOKUP (8)
NAME
nslookup - query Internet name servers interactively
SYNOPSIS
nslookup [ -option ] [ host-to-find | - [ server ]]
DESCRIPTION
Nslookup is a program to query Internet domain name
servers. Nslookup has two modes: interactive and
non-interactive. Interactive mode allows the user to query
name servers for information about various hosts and domains
or to print a list of hosts in a domain. Non-interactive
mode is used to print just the name and requested
information for a host or domain.
ARGUMENTS
Interactive mode is entered in the following cases:
a)
when no arguments are given (the default name server
will be used),
b)
when the first argument is a hyphen (-) and the second
argument is the host name or Internet address of a name
server.
Non-interactive mode is used when the name or Internet
address of the host to be looked up is given as the first
argument. The optional second argument specifies the host
name or address of a name server.
The options listed under the ``set'' command below can be
specified in the .nslookuprc file in the user's home
directory if they are listed one per line. Options can
also be specified on the command line if they precede the
arguments and are prefixed with a hyphen. For example, to
change the default query type to host information, and the
initial timeout to 10 seconds, type:
nslookup -query=hinfo -timeout=10
INTERACTIVE COMMANDS
Commands may be interrupted at any time by typing a
control-C. To exit, type a control-D (EOF) or type exit.
The command line length must be less than 256 characters.
To treat a built-in command as a host name, precede it with
an escape character (\). N.B. an unrecognized command will
be interpreted as a host name.
host [server]
Look up information for host using the current default
server or using server if specified. If host is an
Internet address and the querey type is A or PTR, the
name of the host is returned. If host is a name and
does not have a trailing period, the default domain
name is appended to the name. (This behavior depends
on the state of the set options domain, srchlist,
defname, and search). To look up a host not in the
current domain, append a period to the name.
server domain
lserver domain
Change the default server to domain. Lserver uses the
initial server to look up information about domain
while server uses the current default server. If an
authoritative answer can't be found, the names of
servers that might have the answer are returned.
root
Changes the default server to the server for the root
of the domain name space. Currently, the host
ns.nic.ddn.mil is used. (This command is a synonym for
lserver ns.nic.ddn.mil.) The name of the root server
can be changed with the set root command.
finger [name] [> filename]
finger [name] [>> filename]
Connects with the finger server on the current host.
The current host is defined when a previous lookup for
a host was successful and returned address information
(see the set querytype=A command). Name is optional.
> and >> can be used to redirect output in the usual
manner.
ls [option] domain [> filename]
ls [option] domain [>> filename]
List the information available for domain, optionally
creating or appending to filename. The default output
contains host names and their Internet addresses.
Option can be one of the following:
-t querytype
lists all records of the specified type (see querytype
below).
-a
lists aliases of hosts in the domain. synonym for -t
CNAME.
-d
lists all records for the domain. synonym for -t ANY.
-h
lists CPU and operating system information for the
domain. synonym for -t HINFO.
-s
lists well-known services of hosts in the domain.
synonym for -t WKS. When output is directed to a file,
hash marks are printed for every 50 records received
from the server.
view filename
Sorts and lists the output of previous ls command(s)
with more(1).
help
?
Prints a brief summary of commands.
exit
Exits the program.
set keyword[=value]
This command is used to change state information that
affects the lookups. Valid keywords are:
all
Prints the current values of the frequently-used
options to set. Information about the current default
server and host is also printed.
class=value
Change the query class to one of:
IN
the Internet class.
CHAOS
the Chaos class.
HESIOD
the MIT Athena Hesiod class.
ANY
wildcard (any of the above). The class specifies the
protocol group of the information.
(Default = IN, abbreviation = cl)
[no]debug
Turn debugging mode on. A lot more information is
printed about the packet sent to the server and the
resulting answer.
(Default = nodebug, abbreviation = [no]deb)
[no]d2
Turn exhaustive debugging mode on. Essentially all
fields of every packet are printed.
(Default = nod2)
domain=name
Change the default domain name to name. The default
domain name is appended to a lookup request depending
on the state of the defname and search options. The
domain search list contains the parents of the default
domain if it has at least two components in its name.
For example, if the default domain is CC.Berkeley.EDU,
the search list is CC.Berkeley.EDU and Berkeley.EDU.
Use the set srchlist command to specify a different
list. Use the set all command to display the list.
(Default = value from hostname, /etc/resolv.conf or
LOCALDOMAIN, abbreviation = do)
srchlist=name1/name2/...
Change the default domain name to name1 and the domain
search list to name1, name2, etc. A maximum of 6 names
separated by slashes (/) can be specified. For
example,
set srchlist=lcs.MIT.EDU/ai.MIT.EDU/MIT.EDU
sets the domain to lcs.MIT.EDU and the search list to
the three names. This command overrides the default
domain name and search list of the set domain command.
Use the set all command to display the list.
(Default = value based on hostname, /etc/resolv.conf or
LOCALDOMAIN, abbreviation = srchl)
[no]defname
If set, append the default domain name to a
single-component lookup request (i.e., one that does
not contain a period).
(Default = defname, abbreviation = [no]def)
[no]search
If the lookup request contains at least one period but
doesn't end with a trailing period, append the domain
names in the domain search list to the request until an
answer is received.
(Default = search, abbreviation = [no]sea)
port=value
Change the default TCP/UDP name server port to value.
(Default = 53, abbreviation = po)
querytype=value
type=value
Change the type of information query to one of:
A
the host's Internet address.
CNAME
the canonical name for an alias.
HINFO
the host CPU and operating system type.
MINFO
the mailbox or mail list information.
MX
the mail exchanger.
NS
the name server for the named zone.
PTR
the host name if the query is an Internet address,
otherwise the pointer to other information.
SOA
the domain's ``start-of-authority'' information.
TXT
the text information.
UINFO
the user information.
WKS
the supported well-known services. Other types (ANY,
AXFR, MB, MD, MF, NULL) are described in the RFC-1035
document.
(Default = A, abbreviations = q, ty)
[no]recurse
Tell the name server to query other servers if it does
not have the information.
(Default = recurse, abbreviation = [no]rec)
retry=number
Set the number of retries to number. When a reply to a
request is not received within a certain amount of
time (changed with set timeout), the timeout period is
doubled and the request is resent. The retry value
controls how many times a request is resent before
giving up.
(Default = 4, abbreviation = ret)
root=host
Change the name of the root server to host. This
affects the root command.
(Default = ns.nic.ddn.mil., abbreviation = ro)
timeout=number
Change the initial timeout interval for waiting for a
reply to number seconds. Each retry doubles the
timeout period.
(Default = 5 seconds, abbreviation = ti)
[no]vc
Always use a virtual circuit when sending requests to
the server.
(Default = novc, abbreviation = [no]v)
[no]ignoretc
Ignore packet truncation errors.
(Default = noignoretc, abbreviation = [no]ig)
DIAGNOSTICS
If the lookup request was not successful, an error message
is printed. Possible errors are:
Timed out 5
The server did not respond to a request after a certain
amount of time (changed with set timeout=value) and a
certain number of retries (changed with set
retry=value).
No response from server 5
No name server is running on the server machine.
No records 5
The server does not have resource records of the
current query type for the host, although the host name
is valid. The query type is specified with the set
querytype command.
Non-existent domain 5
The host or domain name does not exist.
Connection refused 5
Network is unreachable 5
The connection to the name or finger server could not
be made at the current time. This error commonly
occurs with ls and finger requests.
Server failure 5
The name server found an internal inconsistency in its
database and could not return a valid answer.
Refused 5
The name server refused to service the request.
Format error 5
The name server found that the request packet was not
in the proper format. It may indicate an error in
nslookup.
FILES
/etc/resolv.conf initial domain name and name server
addresses.
$HOME/.nslookuprc user's initial options.
/usr/share/misc/nslookup.help summary of commands.
ENVIRONMENT
HOSTALIASES file containing host aliases.
LOCALDOMAIN overrides default domain.
SEE ALSO
resolver(3), resolver(5), named(8),
RFC-1034 ``Domain Names - Concepts and Facilities''
RFC-1035 ``Domain Names - Implementation and Specification''
AUTHOR
Andrew Cherenson
# timed
TIMED (8M) MAINTENANCE COMMANDS TIMED (8M)
NAME
timed - report the current time and date to a client
SYNOPSIS
timed [ -dv ]
AVAILABILITY
This command is available with the TemariNET software
package.
DESCRIPTION
timed is a daemon server which implements the TIMEP
protocol, as described in RFC 868. This protocol can be used
to ask servers like this one for their current
time-and-day.
-d
Debug mode. This is useful for debugging purposes
only.
-v
Verbose mode. This is the same as -d.
EXAMPLE
timed &
SEE ALSO
daytimed(8m), netdate(8m)
AUTHOR
Michael Temari - temari@temari.ae.ge.com
Fred N. van Kempen - waltje@uwalt.nl.mugnet.org
TemariNET Software April 29, 1993 1
# demolish
DEMOLISH(8) Minix Programmer's Manual DEMOLISH(8)
NAME
demolish - take an image to pieces
SYNOPSIS
demolish image
demolish image kernel mm fs ... init
DESCRIPTION
Demolish does the opposite of installboot -image or build: It takes a
Minix kernel image apart to its components. Extracting an image made by
installboot is straightforward, as it is much like an ar(1) or tar(1)
archive. A build made image has lost a lot of information about the
original programs, so you need to specify their names.
The following restrictions/assumptions/comments are made about a build
image:
It must be a 1.5 or newer image with no special tricks.
The kernel must either be separate I&D, or it's stack must be 512
bytes exactly with no change to the beginning of the text and data
segment.
The click size is 256.
There is a minute chance that the data segment of a common I&D fs is
not properly located. This doesn't matter for the other programs.
The assumption is that this program is used to take a Minix distribution
boot floppy apart, so that the programs may be reassembled by installboot
for my boot monitor (see monitor(8)).
SEE ALSO
build(8), installboot(8), monitor(8).
BUGS
Recompile the kernel. Feels much better.
AUTHOR
Kees J. Bot, (kjb@cs.vu.nl)
# installboot
INSTALLBOOT(8) Minix Programmer's Manual INSTALLBOOT(8)
NAME
installboot - make a device bootable
SYNOPSIS
installboot -i(mage) image [label:]kernel mm fs ... init
installboot -d(evice) device bootblock boot
installboot -b(oot) device bootblock boot [label:]image ...
installboot -m(aster) [fix] device masterboot
DESCRIPTION
Installboot may be used to make a device bootable by constructing a
kernel image and installing bootstrap code into the boot block of a Minix
filesystem. To understand how this can be done one first has to know
what happens when a PC is booted.
When the power is turned on the typical PC will try to read the first
sector from the first floppy disk or from the first hard disk into memory
and execute it. The code obtained from the hard disk (from the so-called
master boot sector) will immediately replace itself by the code found in
the first sector of the active partition. Thus the PC is now executing
the bootstrap code found in the first sector of /dev/fd0, /dev/hd1,
/dev/hd2, /dev/hd3, or /dev/hd4. The bootstrap will locate the operating
system on the device it itself was loaded from, load it, and execute it,
usually in a two phase process.
To make a Minix filesystem /dev/fd0 mounted on /mnt bootable, enter the
following:
cp boot /mnt/boot
installboot -image /mnt/minix kernel mm fs init
installboot -device /dev/fd0 bootblock boot
The "boot" program in the example is named the "boot monitor". It is
loaded by the bootblock code placed in the boot sector of /dev/fd0 and it
will take care of loading the kernel image "minix" from the root
directory of the filesystem. See monitor(8) for a description of the
boot monitor.
The most important aspect of this now bootable device is that it is not
bound to type of media it is on, as the bootblock is the same for double
and high density 3.5 and 5.25 inch floppy disks and the hard disk. You
can copy it raw to /dev/hd3 for instance, put an active flag on partition
3 (see fdisk(8)) and boot it. I routinely make raw copies of my hard
disk root file system to floppies and these floppies are again bootable
without change. Combined with a stripped /usr file system on floppy, I
can always get my system back to life in case of disaster.
OPTIONS
-image
The -image option (or any prefix down to -i) combines the executable
files needed to run Minix in one file. Only the names and a few
zero bytes are inserted into the image. The name is for
identification and the zeros are used to pad separate pieces to
(1)
INSTALLBOOT(8) Minix Programmer's Manual INSTALLBOOT(8)
sector boundaries for fast loading. Each executable is normally
stripped of its symbol table, unless a -s flag is placed before it.
An executable may be prefixed with a label. The monitor may be
instructed to not load processes with the wrong label. So more than
one kernel process may be included in the image, each with a
different winchester driver for instance.
-device
Installs bootblock in the boot sector of device together with the
disk addresses to boot. These disk addresses are needed to load
boot from the file system at boot time. If the boot parameters
sector (the second half of the boot block) is found to contain
garbage, it is cleared to null commands. Again see monitor(8).
The device need not be mounted when installboot is run, nor does it
matter if it is.
Installboot needs to be run again if boot is rewritten, because it
will then occupy a new place on the disk.
-boot
This option fills a blank floppy in device with boot code and kernel
images. This "boot disk" does not have a root file system, only the
boot monitor and Minix kernels. The boot parameters sector is
filled with code that enables menu options for selecting an image.
After loading an image, the monitor will ask you to insert a root
file system diskette before starting Minix.
The labels used on the images should ideally match those on the
executables used inside the image. You can put a comma separated
list of labels on an image for each label used within the image.
If a label-list is omitted on an image, then that image will be
selected by default.
-demo
This is a special feature for creating a demo disk. It works just
like the -boot option, except that the device must contain a file
system. Use it to dress up a small root file system with boot code
and a kernel to make a single floppy Minix demo. The file system
must be small enough to allow for the monitor and images be placed
*after* it.
-master
This option installs the masterboot program into the boot sector of
the given device. If another device is given instead of masterboot
then its bootstrap code is copied to device. The master bootstrap
on a hard disk boots the active partition on that disk at boot time.
The MS-DOS fdisk command normally puts a master bootstrap on the
hard disk, but the masterboot program in this package has a lot more
features:
If the ALT key is held down while booting then '/dev/hd?'
appears and you are expected to type a number key (0 - 9) to
select the device to boot.
(2)
INSTALLBOOT(8) Minix Programmer's Manual INSTALLBOOT(8)
If a fix key is given (0 - 9) then the bootstrap is locked into
booting the given /dev/hd device. This is needed if 'boot
*hdN' is used from the monitor to boot an O.S. that needs the
active flag set.
If installed on a floppy then it will try to boot the next
floppy or the first hard disk. Ideal for floppies with just
data on it, they will no longer obstruct the boot process if
left in the drive. Also a very useful trick to boot from
floppy drive 1.
If installed on a hard disk then the active partition is
selected and booted as usual, unless none of the partitions is
marked active, then it will boot the next disk. The latter is
useful if you want to boot an operating system from the second
disk by default.
A backup copy of the current master bootstrap can be made with:
dd if=device of=backup-file bs=446 count=1
A simple 'cat backup-file > device' will put it back.
SEE ALSO
fdisk(8), monitor(8).
DIAGNOSTICS
Lot's of numbers describing executables being read, addresses patched.
Errors about missing files, nonexecutable files, etc.
A very useful warning if a segment of an i8086 executable is larger than
64K.
A warning and a ten second countdown if -boot is about to scribble over a
file system.
BUGS
It has four more options than the SunOS installboot program it is modeled
after.
The symbol table support is a misfeature, only a debugger can use it.
Time spent fiddling with debuggers is better used finding bugs.
The bootblock code has been crunched to such ugliness that you can use it
scare little kids out of your garden.
AUTHOR
Kees J. Bot (kjb@cs.vu.nl)
(3)
# monitor
MONITOR(8) Minix Programmer's Manual MONITOR(8)
NAME
monitor, edparams - load and start Minix, modify boot parameters
SYNOPSIS
edparams device [command ...]
DESCRIPTION
This text describes the boot monitor, a boot time interactive program
designed not only to load and start Minix, its most important task, but
to also provide an easy to use interface to configure Minix and to boot
other operating systems.
The monitor is controlled with an environment that is modeled after the
Bourne shell. This environment is filled at startup with default values
that depend on the machine the monitor is running on and the environment
settings saved into the boot parameters sector (the second sector on a
device). When the environment is loaded, the monitor executes the
function named main, which by default starts a simple menu.
The environment can be manipulated at boot time from the monitor prompt,
but may also be edited using edparams on a given device. Edparams
simulates the monitor as much as it can, echoing commands it can't
execute between brackets. It may be used in Makefiles or scripts too by
giving it commands as arguments.
COMMANDS
The monitor is best described by the commands you can type to the '>'
prompt. This is known as the monitor mode. You can enter this mode by
hitting the Escape key. A list of commands is shown if you type
something illegal, like 'help'. These are the commands:
name = [device] value
Set environment variable.
Changes the value of name to value. Adding the word device (or any
word starting with a 'd') marks name as being subject to device
translation. (See the section on devices.) These (name, value)
pairs are passed to the kernel who usually ignores them, unless they
are one of these special variables:
rootdev
This is the device used as your root device. It is by default
set to ram, which means that the device specified by
ramimagedev will be loaded into the RAM disk and used as root.
If you change this variable, then a physical device will be
used as root, and the RAM disk will be uninitialized and have
the size specified by ramsize.
ramimagedev
Describes the device to use to initialize the RAM disk if
rootdev is set to ram. It's by default set to bootdev, a
special name for the device the monitor booted from.
(1)
MONITOR(8) Minix Programmer's Manual MONITOR(8)
ramsize
The size of the RAM disk when it is not used as the root
device, by default 0.
keyboard
This is by default set to standard, but may be changed to
olivetti, us or dutch. The keyboard choice is translated to a
number (if not a number already) and passed to the kernel
assigned to the reserved scancode variable.
processor
Set by default to 86, 186, 286, 386 or 486, depending on the
hardware you have. You can set it to a smaller value to test
your kernel in a more limited environment.
memsize
Kilobytes of conventional memory.
emssize
Kilobytes of extended memory.
chrome
Either color or mono.
video
Describes capabilities of the VDU: mda, cga, ega, or vga.
Two variables are only used by the monitor, even though they are
passed to the kernel too:
image
The name of the file containing the kernel image, by default
minix. If it refers to a directory however, the newest file
inside that directory is chosen to be the kernel image. The
names inside that directory are best set to the Minix version
you are using, which looks good when the monitor prints the
copyright message. To add feature to feature, if you add
something like 'r29' to the version number, it will nicely tell
you that you are running your 29-th revision of the original
Minix. To sum up the rules used for pretty printing image
names:
A '/' or '_' is changed to a space.
The first letter is changed from lowercase to uppercase.
An 'r' if followed by a digit changes to ' revision '.
If no digits have been printed, '1.6' is added as the default
version.
(2)
MONITOR(8) Minix Programmer's Manual MONITOR(8)
label
If set then only processes marked with this label or without a
label are loaded from the image. Use it to select a kernel
process with a proper winchester driver for instance.
Installboot -boot will create functions to select images and labels.
These functions will set label and image and echo what you selected.
The two numbers separated by a colon used as an image name tell the
starting sector and sector count of the image on disk.
name() { ... }
Define function.
Functions may be used to bundle a set of commands, so that you can
easily boot Minix with a different set of parameters then normal.
E.g.
ram() { rootdev=ram; boot }
will allow you to run Minix with the root device on RAM for a
change, if you normally use a real device as root. The only pre-set
function is main with default value menu, which is the default
command executed by the monitor. You can use newlines after the ')'
token, the monitor will then use a '+' prompt and ask for the rest.
name(key) { ... }
Define kernel selecting function.
The menu command uses functions like these to add menu entries to
select a different kernel from a boot disk. Installboot -boot
produces these functions when the images are labeled. The label AT
would give:
AT(a) {label=AT;image=42:626;echo AT kernel selected;menu}
With the menu option:
a Select AT kernel
Typing a will then execute the AT function above.
name(key,text) { ... }
User defined menu option.
This variant may be used to make any menu entry you like:
dos(d,Boot MS-DOS) { boot hd1 }
Text may be anything, even matching parentheses.
name
Call function.
If name is a user defined function then its value is expanded and
executed in place of name. Try a recursive one like 'rec()
(3)
MONITOR(8) Minix Programmer's Manual MONITOR(8)
{rec;xx}' one day. You can see the monitor run out of space with
nice messages about using chmem(1) to increase it's heap.
boot [device]
Boot Minix or another O.S.
Without an argument, boot will load and execute the Minix image
named by the image variable. With an argument, boot loads the boot
sector of device into memory and jumps to it, starting another
operating system. You would normally use partitions on the first
hard disk for this command (hd[1-4]), using hd0 may also work
(choosing the active partition). Devices on the second hard disk
(hd[5-9]) can only be booted if the bootstrap writer did not
hardwire the disk number to disk 0. The name of device is used, not
its Minix device number, making it independent from the Minix device
name to device number mapping.
Some operating systems can only be booted from the active partition,
if you use a '*', e.g. boot *hd3, then partition 3 is first made
active. You'll then need to use installboot -master with a fix key
to forcefully boot the Minix partition at startup.
delay [msec]
Delay (500 msec default).
The first time my program worked on the hard disk I was a bit
disappointed, 10 days of work went by in less then a second. Later
I was pleased with that, because speed was one of the objectives.
But if you need some time (to hit Escape, or stare at the numbers)
you can use delay to make the monitor pause for a specified amount
of time. To specify a delay just before Minix is started, you can
set the variable delay to a number of milliseconds. Example:
main() {delay 250; delay=500; boot}
Look at this carefully, 'delay 250' means: "wait 1/4 sec now!",
while 'delay=500' means: "wait 1/2 sec after loading Minix".
If you use the word swap instead of a number, then the monitor will
wait until you have inserted a root diskette and typed RETURN.
echo word ...
Print these words.
Used to tell you that you just selected image X.
ls [directory]
List contents of directory.
Shows the names of the files in a directory. It's only use is to
list the names of the available kernels in the minix directory.
menu
Menu driven startup.
This command allows you to execute functions defined with a key. If
no menu functions have been defined then menu will use this one
(4)
MONITOR(8) Minix Programmer's Manual MONITOR(8)
hidden built-in function:
*(=,Start Minix) { boot }
Kernel selecting functions only add new options to this set, but if
you define a two argument function yourself then the above one is no
longer shown, allowing you to customize the menu completely. Your
first function definition should therefore be one that starts Minix.
save
Save environment.
This will save all the environment variables and functions with
nondefault values to the parameter sector (the second sector on the
boot device), so they are automatically set the next time you boot
the monitor.
set
Show environment.
Like the shell command of the same name, set will show you the
current values of the environment variables and functions. Default
values are shown between parentheses to distinguish them from values
that were explicitly set.
trap msec command
Schedule command.
Schedules a command to be executed after msec milliseconds. Only
the monitor mode cannot be interrupted, a scheduled trap is killed
when the prompt is printed. Example:
main() {trap 10000 boot; menu}
This gives you 10 seconds to choose a menu option before Minix is
booted.
unset name ...
Unset environment variables.
Removes the named variables and functions from the environment, and
sets special variables back to their default values. This is also
the only way to remove the "device name translation" property from a
variable.
DEVICES
The Minix kernel can't do anything with device names, so they have to be
translated to device numbers before they are passed to the kernel. This
number is found under the st_rdev field (see stat(2)) of the file on the
boot file system. The monitor will look for the device file with the
working directory set to '/dev'. If it can't find the device name then
it will translate names like 'ram', 'fd1', 'hd0', 'hd6', and 'hd2a' to
what it itself thinks the numbers should be.
(5)
MONITOR(8) Minix Programmer's Manual MONITOR(8)
The special name bootdev is translated to the name of the device booted
from, like 'fd0', or 'hd3', and then searched for in /dev.
EXTENSIONS
A few extensions have been made to this program for kernel hackers. They
may be triggered by setting bits in the (normally 0) word used for the
kernel DS value in kernel/mpx.x. The flag bits are:
0x0001 Call kernel in 386 mode.
The monitor will make the switch to 386 protected mode before it
calls the kernel. This requires changes to the early startup phase
of the kernel. The advantages are that variables used at startup
need not be within the first 64K, no need for a 8086 cross compiler
to compile the few files that need to be in 16 bit mode, nor a
loader that can combine 8086 and 80386 code.
0x0002 Do not make space for bss.
The 386 virtual memory kernel can claim the bss pages for each
process other than itself, the monitor need not do that. This
allows for a much larger bss area then the monitor can make in that
puny 640Kb. The size of the bss area in clicks is added to the two
word table of process sizes in the kernel data segment to make it a
three word table.
0x0004 Use the stack size set by chmem(1).
This flag tells the monitor that it needs to make space for a stack
as set by the chmem(1) command, because the processes are not using
fixed sized arrays for the stack. If the 0x0002 bit is set, then
the size of the stack in clicks is simply provided in a fourth word
in the kernel data segment.
0x0008 Obsolete.
This flag used to ask for the size of the symbol table, but the
monitor no longer supports the misfeature of loading symbol tables
into memory.
0x0010 No need to patch anything.
The monitor places an array of the 32 byte a.out headers of the
processes at address 0x00600. Setting this flag means that the
kernel is using them instead of the sizes array, so the monitor need
not patch anything.
Do not think that all of this means that this package is geared towards
386 Minix. All these extensions are just a few simple extra features.
(Having first used Minix on an XT with just two 360kb floppy drives makes
one not forget the low end.)
(6)
MONITOR(8) Minix Programmer's Manual MONITOR(8)
SEE ALSO
chmem(1), stat(2), installboot(8).
DIAGNOSTICS
Many self-explanatory messages about files not being found, bad images,
disk read errors, lack of memory, etc.
ACKNOWLEDGMENTS
Guy Helmer, for the floppy sensing code that somehow disappeared into the
boot block.
Earl Chew, for the inspiration his shoelace package provided, unless he
wants to file a 'look and feel' suit against me, then I will say I
modeled it after the SunOS ROM boot monitor, which is also true.
BUGS
The delay command will hang forever on the original IBM PC (not the XT!).
Not that it matters, as everything takes forever on that box.
Reading the first sector to boot a floppy (e.g. boot fd1), is done using
whatever floppy parameters boot currently has available. This will
probably always work.
The two forms of delay are a crock.
The word emssize comes from EMS, that has to do with expanded memory, not
extended memory. I didn't know the difference.
AUTHOR
Kees J. Bot (kjb@cs.vu.nl)
(7)