MONITOR.8
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:16k
源码类别:

操作系统开发

开发平台:

C/C++

  1. MONITOR(8)                Minix Programmer's Manual                 MONITOR(8)
  2. NAME
  3.      monitor, edparams - load and start Minix, modify boot parameters
  4. SYNOPSIS
  5.      edparams device [command ...]
  6.      boot.com virdisk
  7. DESCRIPTION
  8.      This text describes the Boot Monitor, a  boot  time  interactive  program
  9.      designed  not  only to load and start Minix, its most important task, but
  10.      to also provide an easy to use interface to configure Minix and  to  boot
  11.      other operating systems.
  12.      The monitor is controlled with an environment that is modeled  after  the
  13.      Bourne  shell.  This environment is filled at startup with default values
  14.      that depend on the machine the monitor is running on and the  environment
  15.      settings  saved  into  the boot parameters sector (the second sector on a
  16.      device).  When the  environment  is  loaded,  the  monitor  executes  the
  17.      function named main, which by default starts a simple menu.
  18.      The environment can be manipulated at boot time from the monitor  prompt,
  19.      but  may  also  be  edited  using  edparams  on a given device.  Edparams
  20.      simulates the monitor as much  as  it  can,  echoing  commands  it  can't
  21.      execute  between  brackets.  It can also be used in Makefiles and scripts
  22.      by giving it commands as arguments.
  23.      The MS-DOS version of the monitor,  usually  named  boot.com  under  DOS,
  24.      boots Minix from a "DOS virtual disk".  (See below.)
  25. COMMANDS
  26.      The monitor is best described by the commands you can  type  to  the  '>'
  27.      prompt.  This is known as the "monitor mode".  You can enter this mode by
  28.      hitting the Escape key.  These are the monitor commands:
  29.      name = [device] value
  30.           Set environment variable.
  31.           Changes the value of name to value.  The optional word device  marks
  32.           name  as  being  subject to device translation.  (See the section on
  33.           devices.)  These (name, value) pairs are passed to  the  kernel  who
  34.           uses  them  to  configure  itself.   These  variables  are passed by
  35.           default:
  36.           rootdev
  37.                This is the device used as your root device.  It is by  default
  38.                set   to   ram,  which  means  that  the  device  specified  by
  39.                ramimagedev will be loaded into the RAM disk and used as  root.
  40.                If you change this variable then a physical device will be used
  41.                as root, and the RAM disk will be uninitialized  and  have  the
  42.                size specified by ramsize.
  43.                                                                              1
  44. MONITOR(8)                Minix Programmer's Manual                 MONITOR(8)
  45.           ramimagedev
  46.                Describes the device to use  to  initialize  the  RAM  disk  if
  47.                rootdev  is  set  to  ram.   It's  by default set to bootdev, a
  48.                special name for the device the monitor booted from.
  49.           ramsize
  50.                The size of the RAM disk.  If the RAM disk is used for the root
  51.                file  system  then  the  root  file  system is stretched out to
  52.                ramsize if possible.
  53.           processor
  54.                Set by default to 86, 186, 286, 386, 486, ...  depending on the
  55.                hardware  you  have.  You can set it to a smaller value to test
  56.                your kernel in a more limited environment.
  57.           bus
  58.                The type of system bus, either xt, at  or  mca.   This  answers
  59.                basic  questions  like: "How many interrupt controllers and how
  60.                to initialize?"  Or: "Does the keyboard have LEDs?"
  61.           memsize
  62.                Kilobytes of conventional memory.  This is the  amount  of  RAM
  63.                within the first megabyte.
  64.           emssize
  65.                Kilobytes of extended memory.
  66.           video
  67.                Describes capabilities of the VDU:  mda, cga, ega or vga.
  68.           chrome
  69.                Either color or mono.
  70.           console
  71.                If set to a hexadecimal value makes the monitor  set  the  BIOS
  72.                video  mode  to this value.  This allows the use of video modes
  73.                with more rows or colums than the  standard  80x25  mode.   The
  74.                kernel  must  of  course  be able to handle a nonstandard mode.
  75.                More parameters may follow the mode number.  Warning:  Not  all
  76.                monitors  can  handle  all  of  the  modes,  some  may generate
  77.                frequencies that can damage your monitor.  Read the  manual  of
  78.                card and monitor for details.
  79.           Two variables are only used by the monitor,  even  though  they  are
  80.           passed to the kernel too:
  81.           image
  82.                The name of the file containing the kernel  image,  by  default
  83.                minix.   If  it  refers  to a directory however then the newest
  84.                file inside the directory is chosen to  be  the  kernel  image.
  85.                                                                              2
  86. MONITOR(8)                Minix Programmer's Manual                 MONITOR(8)
  87.                The names inside /minix/ are best set to the Minix version  you
  88.                are  using,  which looks good when the monitor prints its name.
  89.                Rules for pretty printing image names:
  90.                     A '/' or '_' is changed to a space.
  91.                     The first letter is changed from lowercase to uppercase.
  92.                     An 'r' if followed by a digit changes to " revision ".
  93.           label
  94.                If set then only processes marked with this label or without  a
  95.                label are loaded from the image.
  96.           Installboot -boot will create functions to select images and labels.
  97.           These functions will set label and image and echo what you selected.
  98.           The two numbers separated by a colon used as an image name tell  the
  99.           starting sector and sector count of the image on disk.
  100.      name() { ... }
  101.           Define function.
  102.           Functions may be used to bundle a set of commands, so that  you  can
  103.           easily  boot  Minix  with a different set of parameters then normal.
  104.           E.g.
  105.                ram() { rootdev=ram; boot }
  106.           will allow you to run Minix with  the  root  device  on  RAM  for  a
  107.           change, if you normally use a real device as root.  The only pre-set
  108.           function is main with default  value  menu,  which  is  the  default
  109.           command executed by the monitor.  You can use newlines after the ')'
  110.           token, the monitor will then use a '+' prompt and ask for the rest.
  111.      name(key) { ... }
  112.           Define kernel selecting function.
  113.           The menu command uses functions like these to add  menu  entries  to
  114.           select  a  different  kernel  from  a  boot disk.  Installboot -boot
  115.           produces these functions when the images are labeled.  The label  AT
  116.           would give:
  117.                AT(a) {label=AT;image=42:626;echo AT kernel selected;menu}
  118.           With the menu option:
  119.                a       Select AT kernel
  120.           Typing a will then execute the AT function above.
  121.      name(key,text) { ... }
  122.           User defined menu option.
  123.                                                                              3
  124. MONITOR(8)                Minix Programmer's Manual                 MONITOR(8)
  125.           This variant may be used to make any menu entry you like:
  126.                dos(d,Boot MS-DOS) { boot hd1 }
  127.           Text may be anything, even parentheses if they match.
  128.      name
  129.           Call function.
  130.           If name is a user defined function then its value  is  expanded  and
  131.           executed  in  place  of  name.   Try  a  recursive  one  like 'rec()
  132.           {rec;xx}' one day.  You can see the monitor run out  of  space  with
  133.           nice messages about using chmem(1) to increase it's heap.
  134.      boot [-opts]
  135.      boot device
  136.           Boot Minix or another O.S.
  137.           Without an argument, boot will load  and  execute  the  Minix  image
  138.           named  by the image variable.  With options the variable bootopts is
  139.           first set to -opts before Minix is started,  and  unset  when  Minix
  140.           returns.   With  a  device  argument,  boot loads the boot sector of
  141.           device into memory and  jumps  to  it,  starting  another  operating
  142.           system.   You  would  normally use partitions on the first hard disk
  143.           for this command (hd[1-4]), using hd0 will also work  (choosing  the
  144.           active  partition).   One  can  also boot devices on the second hard
  145.           disk (hd[5-9]) if the bootstrap writer did  not  hardwire  the  disk
  146.           number to disk 0.
  147.           Some Operating Systems can only be booted from the active partition,
  148.           if  you  use  a '*', e.g.  boot *hd3, then partition 3 is first made
  149.           active.  You'll then need to use installboot -master with a fix  key
  150.           to forcefully boot the Minix partition at startup.
  151.      delay [msec]
  152.           Delay (500 msec default).
  153.           Fast booting speed was one of the objectives when this  program  was
  154.           created,  so  a  hard  disk  boot usually takes only a fraction of a
  155.           second.  If you need some time (to  hit  Escape,  or  stare  at  the
  156.           numbers) you can use delay to make the monitor pause for a specified
  157.           amount of time.  To specify a delay just before  Minix  is  started,
  158.           you  can  set  the  variable  delay  to  a  number  of milliseconds.
  159.           Example:
  160.                main() {delay 250; delay=500; boot}
  161.           Look at this carefully, 'delay 250'  means:  "wait  1/4  sec  now!",
  162.           while 'delay=500' means: "wait 1/2 sec after loading Minix".
  163.           If you use delay=swap then the monitor  will  wait  until  you  have
  164.           inserted a root diskette and typed RETURN.
  165.      echo word ...
  166.                                                                              4
  167. MONITOR(8)                Minix Programmer's Manual                 MONITOR(8)
  168.           Print these words.
  169.           Used to tell you that you just selected image X.
  170.      ls [directory]
  171.           List contents of a directory.
  172.           Useful when looking for kernel images.
  173.      menu
  174.           Menu driven startup.
  175.           This command allows you to execute functions defined with a key.  If
  176.           no  menu  functions  have  been  defined then menu will use this one
  177.           hidden built-in function:
  178.                *(=,Start Minix) { boot }
  179.           Kernel selecting functions only add new options to this set, but  if
  180.           you define a two argument function yourself then the above one is no
  181.           longer shown, allowing you to customize the menu  completely.   Your
  182.           first function definition should therefore be one that starts Minix.
  183.           Menu entries are shown in the same order as set shows them.  If  you
  184.           don't like the order then you have to unset the functions and retype
  185.           them in the proper order.
  186.           If you  type  a  key  then  a  scheduled  trap  is  killed  and  the
  187.           appropriate  menu  function  is  executed.  If you need more time to
  188.           choose then hit the spacebar.  A key not on the menu  also  kills  a
  189.           trap, but does nothing more.
  190.      save
  191.           Save environment.
  192.           This will save all the  environment  variables  and  functions  with
  193.           nondefault  values to the parameter sector (the second sector on the
  194.           boot device), so they are automatically set the next time  you  boot
  195.           the monitor.
  196.      set
  197.           Show environment.
  198.           Show the current values of the environment variables and  functions.
  199.           Default  values  are  shown  between parentheses to distinguish them
  200.           from values that were explicitly set.
  201.      trap msec command
  202.           Schedule command.
  203.           Schedules a command to be executed after  msec  milliseconds.   Only
  204.           the  monitor  mode cannot be interrupted, a scheduled trap is killed
  205.           when the prompt is printed.  Example:
  206.                main() {trap 10000 boot; menu}
  207.                                                                              5
  208. MONITOR(8)                Minix Programmer's Manual                 MONITOR(8)
  209.           This gives you 10 seconds to choose a menu option  before  Minix  is
  210.           booted.
  211.      unset name ...
  212.           Unset environment variables.
  213.           Removes the named variables and functions from the environment,  and
  214.           sets  special  variables back to their default values.  This is also
  215.           the only way to remove the "device name translation" property from a
  216.           variable.
  217.      exit
  218.           Exit the monitor
  219.           Reboot the machine, exit to Minix or exit to DOS as appropriate.
  220. DEVICES
  221.      The Minix kernel can't do anything with device names, so they have to  be
  222.      translated  to device numbers before they are passed to the kernel.  This
  223.      number is found under the st_rdev field (see stat(2)) of the file on  the
  224.      boot  file  system.   The  monitor will look for the device file with the
  225.      working directory set to '/dev'.  If it can't find the device  name  then
  226.      it  will  translate  names like 'ram', 'fd1', 'hd6', 'hd3a', and 'sd2' to
  227.      what it itself thinks the numbers should be.
  228.      The special name bootdev is translated to the name of the  device  booted
  229.      from, like 'fd0', or 'hd3', and then searched for in /dev.  Bootdev can't
  230.      be translated to a device other then  the  fd  or  hd  devices,  so  SCSI
  231.      devices for instance must be named explicitly.
  232. EXTENSIONS
  233.      A few extensions have been made to this program for kernel hackers.  They
  234.      may  be triggered by setting bits in the flags word in the kernel startup
  235.      code (the mpx file.)  The flag bits are:
  236.      0x0001    Call kernel in 386 mode.
  237.      0x0002    Do not make space for the bss areas of processes other then the
  238.                kernel.
  239.      0x0004    Use the stack size set by chmem(1).
  240.      0x0008    Load MM, FS, etc. into extended memory.
  241.      0x0010    No need to patch process sizes into the kernel.
  242.      0x0020    The kernel can return to the monitor on halt or reboot.
  243.                                                                              6
  244. MONITOR(8)                Minix Programmer's Manual                 MONITOR(8)
  245. MS-DOS MONITOR
  246.      Minix-vmd has a version of the monitor that runs under MS-DOS to  boot  a
  247.      "DOS virtual disk".  It is a simple COM program that interprets an MS-DOS
  248.      file as a disk, loads a Minix kernel from the  active  partition  in  the
  249.      same  way as the BIOS based monitor, and executes it to start Minix.  All
  250.      the monitor commands function in  the  same  way,  except  for  the  boot
  251.      command,  it  can  only load Minix.  The memory that MS-DOS has in use is
  252.      copied out of the way when Minix takes control, and is put back in  place
  253.      when  Minix exits.  This memory shuffling also happens when the BIOS disk
  254.      driver makes BIOS calls, slowing things to a crawl.  It is better to  use
  255.      a  Minix  driver.   The MS-DOS monitor does not work if there is a memory
  256.      manager active that runs in 386 protected mode, like EMM386.
  257. SEE ALSO
  258.      chmem(1), stat(2), installboot(8), usage(8), boot(8).
  259. BUGS
  260.      The delay command will hang forever on the original IBM PC (not the XT!).
  261.      Not that it matters, as everything takes forever on that box.
  262.      Reading the first sector to boot a floppy (e.g.  boot fd1), is done using
  263.      whatever  floppy  parameters  boot  currently  has  available.  This will
  264.      probably always work.
  265.      The two forms of delay are a crock.
  266.      The word emssize comes from EMS, that has to do with expanded memory, not
  267.      extended memory.
  268. ACKNOWLEDGMENTS
  269.      Guy Helmer, for the floppy sensing code that somehow disappeared into the
  270.      boot block.
  271.      Earl Chew, for the inspiration his ShoeLace package provided,  unless  he
  272.      wants  to  file  a  "look  and  feel"  suit against me, then I will say I
  273.      modeled it after the SunOS ROM boot monitor, which is also true.
  274. AUTHOR
  275.      Kees J. Bot (kjb@cs.vu.nl)
  276.                                                                              7