P E N I X
PENIX Overview

What is Penix?                    

     Penix is that way-cool multitasking Operating  System that's a bit
     like that other  one you might have heard of..  you know,  the one
     that  has the  Interthingy running on it.  Needlessly  complex and
     given to falling over at the drop of a hat.              


Commands:               

     cfts               completely fuck the system               

     rcatpar            randomly change all the passwords at random

     wi                 whatyouseeisprettypathetic interactiveEditor

     edmond             page-oriented   editor.  a  step  down  from  a
                        line-editor, this one treats text as page-sized
                        chunks.               

     rofl               roll on floor laughing.  not  so  much a system
                        functions as what the support staff do when you
                        ask them if they still have last week's backups
                        on tape somewhere.               

     ispi               shows some of the processes running, some of the
                        users  on  the  other lines, and sometimes  even
                        gives   statistics   on  CPU  usage.  it's  very
                        context-sensitive.               

     sssl               suddenly exchange serial lines with another user

     pong               let  the  other  machines  on  the net know that
                        you're there               

     exorcise           terminate   a  daemon  process   completely  and
                        utterly.  kill  it  off, every last trace. we're
                        not kidding here. finito.               


Common Penix terms:               

     walnut             the heart of the Penix OS. at compilation, it is
                        approximately 71 megabytes in size (depending on
                        whether you have the development system or not),
                        but this figure regularly  oscillates between 67
                        meg and 8 gig, as the system `breathes'.

                        It was written in interpreted BASIC, for ease of
                        modification.

     daemon             a process that detaches itself from your console
                        session.  unless  you redirect  the output  from
                        this  daemon  into a specified file,  any output
                        produced  will  appear  out  of  various serIOus
                        lines on the system at the daemon's  discretion.
                        you can  terminate a daemon with the exorcise -X
                        function.

     aengel             like a daemon,  except a  bit  more  polite.  an
                        aengel process will ask before it directs output
                        to your serIOus  line.   it will generally do it
                        anyway, but at least it asks first.

     nyemph             a daemon process that can  migrate from one file
                        system to another,  and will do so if its output
                        has filled  the  filesystem that it  started on.
                        slippery little buggers.

     maenad             like  a  nyemph  task,  but  a  little  bit more
                        attractive.

     sprite             a very simple  background task that does  menial
                        things like flash the  cursor colours,  play the
                        sampled `beep' sound when you press control-g on
                        the keyboard,  and make that  annoying  click on
                        the floppy drive  as the OS checks to see if you
                        have put in a disk yet.

     goelem             a  very  powerful  background  task.   also very
                        stupid.  they are usually  started by the system
                        itself,  when  the  need  arises to do something
                        labour-intensive  and  boring  -  so  boring, in
                        fact,  than  none of the usual  background tasks
                        will  touch it.  you  occasionally  find  goelem
                        tasks wandering  around after they have finished
                        their task, too stupid to realise that they HAVE
                        finished; pretty much all you can do about it is
                        allocate  them a very  low  time-slice  (see the
                        `motu'  command)  and hope  that  they don't get
                        into any trouble.

     caenobites         this is something we  aren't  particularly proud
                        of  here at  Sunburne,  but we  think  that  you
                        should  know about,  in the interests of safety.
                        we will admit that the circumstances that led us
                        to  developing  Penix are slightly unusual,  and
                        that there is quite a bit about this system that
                        was,  er,  inherited.  We're not  saying that we
                        stole  it.  but there  are large  areas of  this
                        system  that we  know nothing about,  but which,
                        when we remove them, the system stop altogether.
                        we don't  know exactly  what caenobite tasks do,
                        but we have found that  you can't kill them; you
                        can't stop them;  you can't even slow them down.
                        whenever we use the motu command to  alter their
                        timeslice,  they completely  ignore it (this may
                        be due to  the fact that  we think motu's orders
                        are  passed  to the rest  of  the system  by the
                        caenobite   tasks).  a  caenobite  task  can  be
                        incited  to  remove other  tasks by passing it a
                        BOX_OPEN message packet,  but they are best left
                        alone.  thank god there  are usually  only about
                        four of them.

     networks           the  Penix  network  philosphy  is  based  on  a
                        `Master/Slave'   relationship.  Systems  can  be
                        linked  into networks  that  include  hundred of
                        machines,     but    generally,    inter-machine
                        communication   is    dominant/submissive.   One
                        machine makes a begging,  whimpering request for
                        a file from its `Dom', which must then establish
                        which of its `Subs' has the file. It then issues
                        a  spank_IO  order  for the  file;  if the  data
                        packet  isn't  sent  within the  system  default
                        timeout  period,  the Dom  issues a  whip_IO. If
                        THAT doesn't work, the Dom grabs the nearest (by
                        address)  Sub  by its bus,  shakes it silly, and
                        applies the logical equivalent of nipple-clips.

     serviette          a  server  with less than  300 meg of hard  disk
                        space.

     drooler            printing  is controlled  by the drooler  daemon,
                        who dribbles  text out of  the assigned  printer
                        ports  when it  feels like it.  if the  drooling
                        process  is going  too slow for your liking,  it
                        can be prompted by invoking any of the currently
                        running caenobytes.

     Booting            one  does not  re-BOOT  a  Penix  system; it  is
                        `re-shoed'.  If you boot a Penix system, it will
                        fall apart.  Reshoe-ing  involves  locating  the
                        sock partition,  socking it,  then looking about
                        for  something  that  resembles  a shoe-block (a
                        disk-block with startup information on it). once
                        located,  the  shoe-block  is  overlaid onto the
                        sock partition and is `laced'. At the request of
                        our  user,  we  have   incorporated   dual  shoe
                        partitions, to enable disk mirroring. the System
                        must always be re-shoed from the same partition;
                        if  you  get the  left-shoe  and the  right-shoe
                        partition mixed up,  then after re-shoeing,  the
                        system will take a few tottering  steps and will
                        then fall over.          

     scanning the sock partition for a shoe block can be a time-consuming
     process; if the entire hard disk  had to be examined,  it could take
     days.  an algorithm has been  implemented that scans  disk blocks at
     random,  on the assumption  that  there will  be more  than one shoe
     block on the disk   (this is a standard security  feature - in fact,
     more  than  half  of the  disk's b locks are  usually  allocated  as
     shoe-blocks, to save time when looking for one to shoe from).

     example of console messages on booting

     Penix v37.019a ROMrev 76:e_beta (development)
     shoe in progress
     locating sock partition
     scanning SCSI bus  *******
     scanning st506 devices  **
     getting desperate
     scanning floppy drives  **
     getting really desperate
     scanning tape drive  *
     sock located on tape drive
     scanning SCSI bus again  ******
     loading SCSI device driver
     scanning for shoe block at RANDOM
     ....................................
     ....................................
     ....................................
     .................... bingo
     left shoe located at cyl:00.head:15.sec:16
     loading shoe block
     processing   ......................................
     ............. ignoring checksum errror
     overlaying sock partition
     lacing   **** shoe partition LACED, Booting
     walnut located, processing ..... done
     do you want to inhibit DAEMON processes at this time (default=n)? n
     do you want to inhibit AENGEL processes at this time (default=n)? n
     do you want to inhibit NYEMPH processes at this time (default=n)? n
     do you want to inhibit MAENAD processes at this time (default=n)? n
     do you want to inhibit SPRITE processes at this time (default=n)? n
     do you want to inhibit CAENOBITE processes at this time (default=y)? y
     too bad. you can't.
     do you want to inhibit GOELEM processes at this time (default=n)? n
     starting Daemons:  spon   spoo   furph   wrack   wruin   hobble
          castrate   whats_all_this_then   drooler
     starting Aengels:  moroni  goliad  mikayel  cefiar  lucifer
     starting Nyemphs:  dom_net_prep   dom_net_enquire  TOPY_server
          EN_server  spk_server  clock_DVA_server  sK_pup_server
     starting Maenads:  *** Maenad table is empty
     starting Sprites:  cursor_flash  keyboard_click
          annoying_floppy_drive_noise
     starting Goelems:  lif_dat_wait    tote_dat_bail
     starting Caenobytes:
     *** Caenobyte table is empty
     this is a DOM net_device: initialising SpankIO WhipIO
     initialising serIOus lines  000  001  002  003...
     ... and so on.
     directories/filesystems
     /uselss/little_black_book
     network list of all machines in the Clique
     /closet

     list of filesystem devices, in format:

     address      device type
     00000000     RAM
     00000001     RAM
     00000010     RAM
     00000011     RAM
     00000100     RAM
     00000101     DEVICE: FLOPPY CONTROLLER...

     /passwords
          system password file. It has passwords in it.

     /now_hear_this_you_scum
          system login message.

     /spew_bucket
          Sysadmin's mail file

     /lib
          library files here

     /libs
          other library files here.  if a process needs
          a library file from here,  you can guarrantee
          that it's over in /uselss/lib instead.

     /der
          text files/notices here

     /der/zorcho
          insult packets

     /der/ttbowl/
          waste goes in here

     /der/greeting_card
          `oops' packets

     /comp
          executeables live here

     /whoops_a_daisy
          unallocated blocks here

     /ho_hum
          logfiles here

     /trash
          schedule tables for backgrounders

     /ephemeral
          temporary files

     /ephemeral/what_the_hell_happened
          System command log.

     /help_files
          the man entries would be here,  but our user
          thinks that `man' is sexist, so we called it
          help_files.

     /important/really_important
          DO NOT REMOVE OR ALTER THIS FILE!

     /mungle
          not sure what this directory is for,  but the
          system won't run without it.

     /thingies
          utility  programs  and other stuff we haven't
          documented yet.

     /typical/who's_where
          system task table

     /who's_who
          a duplicate of the system task table; used by
          some  programs but not all  of them.  when in
          doubt refer to both task-tables and then
          guess.

     /keymaps/keymaps/keymaps/keymaps/spo0
          Default keymap for wi.

     /WinGE/danglements
          default files for WinGE graphic images

     /.snivel
          default WinGE startup-script file