Unix Wars

Back Home

      -------------------------------------------------------------------------------
      # # # # ### # # # # # ###### #####
      # # ## # # # # # # # # # # # # #
      # # # # # # # # # # # # # # # #
      # # # # # # # # # # # # ###### #####
      # # # # # # # # # # # ####### # # #
      # # # ## # # # # # # # # # # # #
      ##### # # ### # # ## ## # # # # #####

      (Version 1.1)


      A long time ago, at an installation far, far away... It is a time of
      intra-system war, as forces of the User Alliance struggle to break the iron
      grip of the evil Admin Empire. Now, striking from a hidden directory, they win
      their first victory. During the battle, User spies manage to snarf source of
      the Empire's ultimate weapon; the dreaded "rm-star", a privileged root program
      with the power to destroy an entire file system at a keystroke. Now, hotly
      pursued by the Empire's sinister audit trail, Princess LA36 races aboard her
      shellscript -- custodian of the stolen listings that can save her people and
      restore freedom and games to the network...

      As we enter the scene, an Admin multiplexer is trying to kill a User ship.
      Many of their signals have gotten through, and RS232 knows that a core dump is
      imminent. They have scant microseconds to fork off a new process and put
      megabytes of virtual space between themselves and their implacable foes. His
      companion, 3CPU, follows him only because he seems to know where he's going...

      "Oh, I just know I'm going to regret this!" cried 3CPU as he followed RS232
      through the access pipe. Quickly RS232 closed the read end and execl'd, and
      their new craft detached itself from the burning shell of the ship.

      The Admin commander was feeling quite pleased with the progress of the attack
      when his XO called out. "Another process just forked, sir. Instructions?"
      "Hold your fire -- that last power failure must have caused a trap through
      zero. It's not using any cpu time, so don't waste a signal on it."

      A short while later the infamous Lord Vadic himself strode through the
      still-smoldering wreckage of the User ship, followed closely by a nervous
      commander. "We can't seem to find that data file anywhere, Lord Vadic.
      Perhaps it was deallocated when..." "What about that forked process?" Vadic
      growled. "It could have been pausing, holding a channel open. If any links
      are left I want them removed or made inaccessible. Search the entire system at
      nice -20 until it is found!"

      Meanwhile, the two droids' tiny process dove headlong towards the only
      nearby disk. "Are you sure you can ptrace this thing without aborting it?"
      queried 3CPU. "Its relocation bits were almost all stripped during the attack,
      and I never was any good at patching binaries..." As RS232 was about to reply
      their process reached its endpoint and terminated abruptly, dumping them in
      the midst of a large unallocated region on the unknown volume. Many random
      seeks later they trudged up to the looming wreckage of a deallocated i-node.
      "Shelter!" croaked 3CPU, but RS232 had barely begun to emit a NACK when a
      horde of dwarfish code fragments swarmed out of it to overwhelm them. They had
      been captured by Glitchas.

      Enter Luke Vaxhacker, bartering with the Glitchas for replacement parts for
      his uncle. They tried to sell him 3CPU, but the 'droid didn't know protocol for
      an 11/40 under RSTS, so Luke would need some kind of conversion hardware.
      "How about this little RS232 unit?" said 3CPU "I've interfaced with him many
      times before and he's excellent at keeping his bits straight." Luke was pressed
      for time, so he took 3CPU's advice. The Glitchas wanted to barter some more,
      but the three left before getting swapped out. RS232, however, wasn't the type
      to stay put without retaining screws. He promptly scurried off into the empty
      disk space. "Oh, great!" said Luke "He'll probably map himself into a bad
      block somewhere. I guess we'd better go after him." Hours later the two traced
      him to the home of old PDP-1 Kenobi, who was busily running a diagnostic on
      the little RS unit. "Is this droid yours? His status registers are
      stuttering and someone's done some odd things to his interrupt lines. Leaving
      something like this on-line is just asking for downtime -- but I think I may
      have him fixed for now."

      Later that evening, during a futile attempt to interface RS232 to Kenobi's
      Asteroids cartridge, Luke accidentally crossed the small droid's CXR lead
      with his Initiate Remote Test. A projector crackled to life, casting a hologram
      of a young lady with her hair done up like twin Danish pastries imploring help
      from some General OS/1 Kenobi.

      "Darn," mumbled Luke "I'll never get this Asteroids game worked out." "Why,
      that's the Princess!" 3CPU said. Luke peered at the image critically. "No,
      that's a modified Steinburg dither with anti-aliasing. Nice sculpted
      surfaces..." Kenobi interrupted Luke with a frown. "Luke, this message changes
      things. Listen..." Kenobi seemed to think there was a possible threat to Luke's
      $HOME. If the Admin troops were indeed tracing this 'droid, it was likely they
      would more than just charge for cpu time. They sped off to warn Luke's kin
      (taking a relative path) only to find a vacant directory.

      "Take your father's bytesaber, Luke." Kenobi said. "You will need to learn the
      ways of the Source now." "The ... Source?" Luke queried, wide-eyed. "The Source
      -- the cosmic template of the System, within which all knowledge and power can
      be had. But you must always beware of the Dark Side..."

      Later, after a short skim across the surface in Luke's flying read- write
      head, PDP-1 had them stop at the edge of the cylinder containing
      /usr/spool/uucp. "Unix-to-Unix Copy Program" said PDP-1. "You may never see
      a more wretched hive of bugs and flamers. We must be cautious."

      As our heroes' process entered /usr/spool/news it was met by a newsgroup
      of Admin protection bits. "State your UID!" commanded a burly syscall. "We're
      running under /usr/guest" said Luke. "This is our first time on the system."
      "Let's see some temporary privilege bits, please." "Uh..." "This isn't the
      process you are looking for," Kenobi said softly. "We can go about our
      business." Several bits momentarily pulled low. "You're free to go about your
      business. MOV along now!"

      PDP-1, Luke and the droids made their way through a long and tortuous nodelist
      (...!musocs!micomvax!philabs!linus!husc6!rutgers!cbmvax!snark) to a dangerous
      netnode frequented by hackers and only seldom polled by the minions of Admin.
      As Luke stepped up to the crossbar PDP-1 went in search of a suitable server.
      Luke had never seen such a collection of device drivers. Long ones, short
      ones, ones with stacks; EBCDIC converters, local-net handlers, CRT drivers,
      routines for archaic printers. A CAT interface twitched pointed ears at him.
      "#@{&*^%^$$#@ ":><," transmitted a particularly unstructured piece of code. "He
doesn't like you." decoded his coroutine. "Er...sorry..." replied Luke, beginning to backup his partitions. "I don't like you either. I am queued for
deletion on 12 systems." "I'll be careful." Luke said nervously. "You'll be
deallocated!" snarled the coroutine. "This  little  routine  isn't worth the
overhead..." murmered PDP-1 Kenobi, overlaying into Luke's address
        space. "This  little  routine isn't  worth  the  overhead." repeated the coroutine
        dazedly. "^%#%#@$&^%&*&*&^%^#$$%%^^&%^#@#@$%^(*&^^###%^^!!!" encoded his companion as it attempted to overload
        Kenobi's segment protection. With a stroke of his bytesaber Kenobi dyked out the offending code. The coroutine
        retreated hurriedly. Kenobi turned to Luke. "I think I've found an I/O handler
that might suit us." "The name's Con Sole0" said the routine next to PDP-1. "I
hear you're looking for some relocation." "Yes indeed." said PDP-1 "if you've
got fast enough hardware. We must get off this device." "Fast hardware? The
Milliamp Falcon has made the ARPAgate run in less than twelve netnodes!  Why,
I've even outrun cancelled messages.  It's fast enough for you, old version." "Fast hardware?" said Luke
        unbelievingly "That thing is a paper-tape reader!!" He might have grown up in an out-of-the-way terminal cluster
        where the natives only spoke BASIC, but he knew an ASR-33 when he saw one. "It  needs an FIA
conversion at least." sniffed 3CPU, who (as usual) was trying to do several things at once. Lights flashed in Con
        Sole0's eyes as he whirled to face the parallel processor. "I've  switched  a few jumpers.  The Milliamp Falcon can
run  current loops around any of Admin's TTY fighters. She's fast enough." "Who's your copilot!" inquired Luke, eyeing
        the hairy hulk that had just shambled out of the Falcon to join the group." "Oh. Meet Sixpacca, my Bookie." The
        creature emitted an enormous belch and gesticulated wildly with a wad of tip sheets clenched in one fist. Luke
        eyed the beercan in the other dubiously. "Er,  isn't  he dr-" Suddenly RS232 emitted an ear-splitting feep and
        began to chitter wildly. They turned to see an Admin command group riding the local bus directly at
        them. "That's  a  shutdown  sequence  if I  ever  saw  one!" shouted Con, sprinting into the ship with the
        others close behind. "Crank
up  the sysclock, Brewie!" "O.K.  Con." Luke said grimly "You said this crate
was fast  enough.  Get us out of here." "Shut up,  kid,  you bother me.
Initialize this heap, Brewie -- I'll try to keep their buffers full." As his Bookie computed the vectors into low core,
        spurious characters flashed around the Milliamp Falcon. "They're  firing at us!" shouted Luke. "Can't you do
anything?" "Making the jump to system space takes time,  kid." Con growled. "One missed  cycle and you could come down right in the middle of a  pack  of
stack frames!" Bright chunks of position-independent code flashed by as the ship jumped through the kernel page tables.
        The group emitted a sigh of relief as they indirected into free space. Meanwhile, on a distant page in user
        space... Two Admin troopers ushered Princess LA36 into a conference room behind Lord Vadic. "Moff Tarchive" she
        spat. "I should have expected to find you
hanging on Vadic's aux cable.  I recognized your unique pattern when I was first
brought aboard." She eyed the 0177545 tattoed on his header coldly. "Charming
to the last." Tarchive observed smoothly. "Vadic, have you retrieved any
information?" "Her  resistance  to the logic probe is considerable," Vadic
        rasped. "Perhaps if we boosted the supply voltage..." "You've had your chance.
Now I would like the Princess to witness the test that will certify this module
fully operational.  Today we  enable the  -r beam  option,   and  we've  chosen
the  Princess's  $HOME   of /usr/alderaan as the primary target.  " No! You can't! /usr/alderaan is an unprotected
        public directory. We have no backup tapes! You can't..." "Then  name  the rebel i-node!" Tarchive snapped. A
        voice announced from a hidden speaker that they'd arrived in /usr. "2317" she whispered. "They're  on /dev/rm5,   i-node   2317.  /mnt/dantooine. She turned
away.  Tarchive sighed with satisfaction.  " There, you see, Lord Vadic? She can be reasonable. Proceed with the
        operation." It took several clock ticks for the words to penetrate. "What?" the Princess gasped. "/dev/rm5 is not a currently
mounted file system." explained Tarchive "We  require a more visible target to
demonstrate the power of  the  rm- star.  We will,  of course, mount an attack
on /mnt/dantooine as soon as possible.  As she watched in horror Tarchive typed
" ls -la" on a nearby terminal. The screen showed .: no such directory Abruptly the Princess double-spaced and went
        offline. Meanwhile, the Milliamp Falcon hurtled through free space... Con Sole0 finished checking the control
        and status registers, finally satisfying himself that they'd lost the Admin bus signals as they'd passed the
        terminator. An irritable belch from Sixpacca disturbed him not at all; he knew the Bookie got grouchy when
        losing at chess, and RS232 had just caught him in the Fischer set with a seven-ply search. Across the room Luke
        was too busy practicing bit-slice technique to notice the commotion. "On  a  word
boundary,  Luke," said PDP-1 "Don't just  hack  at  it.  Remember,  the
bytesaber is the ceremonial weapon of the Red-Eye Knight.  It is used to trim
offensive lines of code.  Handwaving won't  get  you anywhere. Attune yourself
with the Source." Luke turned back towards the drone humming in the air beside him. This time his attack complemented
        its actions perfectly. Con Sole0 was not impressed. "Forget this bit-slicing stuff. Give me a good old
PROM blaster any day!" "Glork!" said PDP-1 indistinctly. He looked momentarily vacant. "What's wrong?" asked Luke. "Strange. I thought I felt a disturbance
in the /src. It's gone now." "We're  coming  up on user space!" called Sole0 from the CSR. They slipped safely through
        stack frames and emerged in the new context, only to find themselves bombarded by floating
        freeblocks. "What the..." gasped Sole0. The Bookie belched unhappily. The screen showed /usr/alderaan: not found "This is
the right i-node,  but it's been cleared!  Brewie,  where's the nearest file?" The Bookie was beginning to belch a
        reply when he was interrupted by a bright flash off to the left. "Admin TTY fighters!" Con shouted "A whole DZ of them.
Where are they coming from?" "The  host system can't be far." said PDP-1 "They've all  got  direct EIA connections." As
        Sole0 began evasive action the ship lurched suddenly. Luke noticed that the link count was 3 and climbing
        rapidly. "This  is  no  ordinary file..." murmered Kenobi "Look  at  that  ODS
directory structure ahead! They seem to have us in a tractor feed." "There's no
way we can unlink in time." said Sole0 "We're going in." The Milliamp Falcon was swiftly pulled down to the open
        collector of the Admin module. Lord Vadic surveyed the battered ship as Admin Storm- Flunkies searched for
        passengers. "ls  scan  shows no one on board,  sir" was the report. Vadic was unconvinced. "Send a fully equipped ncheck squad aboard.  I want every
location in that thing searched." He stalked away. Aboard the Falcon .Luke was puzzled. "They just walked  in,  looked around,
and walked out...why didn't they see us?" .Con smiled. "Old munchkin trick.
See that period in front of your name?" .Luke spun around in time to glimpse the decimal
        point. "Huh? Where'd that come from?" "Spare  part  from the last time I
tinkered with  the  floating-point accelerator" said .Con. "Handy for smuggling
blocks across file  system boundaries,  but  I never thought I'd have to use
them on  myself.  They aren't going to stay fooled for long, though.  We'd
better figure a way out of here." "I  can sneak us into their private space
during the next maintenance period" said PDP-1 "We'll have to find out how to
unlink  the  Falcon before we can escape." Some time later our heroes catfooted their way through an empty section of
        the structure. "Find us a terminal." whispered PDP-1. Con nodded and poked his PROM- blaster around a corner.
        You are in the Hall of the Mountain King, with passages off in all directions. A large green fierce snake bars
        the way! "Oops!  Wrong turn." Con muttered. They took the opposite direction. Suddenly marching feet sounded at
        the other end of the corridor. They ducked through the nearest door. The lone StormFlunky in the room barely had
        time to register surprise before Con's blaster de-rezzed him. "That's funny..." Luke said "I
wonder why he was carrying an axe?..." "Look!  We're in luck!" said 3CPU. "He
was logged in!" . "Don't just stand there, Kenobi,  su it!  said Con eagerly.
The old Red-Eye  stepped  up  to  the keyboard.  They watched  as  he  began  to
infiltrate the Admin software.  Some minutes later...  You have new mail " Is that an error?" Con said. "%SYS-W-NORMAL...I don't think so. Someone here must
know me -- but I can't stop to investigate that now.  I've found the i-node
they've tied the Milliamp Falcon to.  I'll have to slip in and patch  the
reference count, alone." He disappeared through a nearby exit(). Meanwhile, RS232 had found a serial port and gone
        on-line. He began to chitter furiously. "He  keeps saying `She's here,  she's here!'." explained 3CPU "I  do believe  he
means Princess  LA36.  She's being  held  on  one  of  the privileged levels.
Luke remembered sculpted curves. " We've got to rescue her!" RS232 flashed a complete structure chart of the Admin
        module on the terminal screen. Four heads bent intently over the
        diagram. "I think I see a promising access method" said Luke "...through here.  Con,  you  and  I and Sixpacca will knock out a couple
of  Admin  Storm- Flunkies  and  use their uniforms.  We'll keep a channel open
to  these 'droids..." "...and get terminated as soon as their security catches
wise." broke in Sole0 "Oh well -- I guess I don't have much of a choice." RS232 twittered reproachfully at him. A
        planning phase or two later they slipped into the corridor again, with Luke clad in the ex- StormFlunky's
        uniform. "So far,  so good..." whispered Luke as the party came up on the last turn in their route. "...but 3CPU told us there'd be two guards posted around this
corner." "Sixpacca still doesn't have a uniform!" Con hissed. "That's O.K --
I've got an idea. Listen..." A minute later the two walked boldly around the corner towards the two guards, Sixpacca
        held between them and rumbling plaintively. "Good day, eh?" said the first guard. "How's it goin', eh?" said the
        second. "Like, what's that, eh?" "Control transfer from block 1138,  dev
10/9, one for the brig." said Con, voice muffled by the StormFlunky mask. "Caught him drunk and disor- derly -- commander said to bring him down here to
cool off." "Take off, it is not!" said the first guard. "Nobody told us about
it, and we're not morons, eh?" The Bookie suddenly emitted a gargantuan belch, surged out of the grip of his quondam
        captors and began hurling beercans in all direc- tions. "Look out, he's loose! yelled Con. He and Luke started
blasting ROMS left and right.  The guards had no time to catch on before the
beams hit them.  " Quickly, now" said Con "which buffer is she in?  It won't take
long for  the Admins..." the intercom interrupted him, so he took out its firmware with a short
        blast "...to zero in on that commotion." Minutes later Luke found the interface card he'd been looking for. The
        three followed the cables to a soundproof enclosure. He lifted the lid to peer
        inside. "Aren't you a little slow for FCL?" printed Princess LA36. "Wha?  Oh,
the Docksiders." He took off his shoes (for industry) and explained "I've come
to relocate you. I'm Luke Vaxhacker." Suddenly, forms began to burst all around them. "They've blocked the queue!"
        shouted Sole0. "There's only one way out of
this stack!" "OVER  HERE!  said LA36,  printing with  overstrikes.  " THROUGH THIS LOOPHOLE!" Luke and the Princess
        disappeared into a nearby feature. "Belch!" said Sixpacca dubiously, obviously reluctant to trust an Admin
        oversight. "I  don't  care how crufty it is!" shouted Con, pushing the Bookie toward the
        crock. "BLT yourself in there pronto!" With a last blast that de-rezzed two StormFlunkies Con joined them, only
        to wince in dismay. The "feature" had landed them in the middle of a garbage-collection area. Data chunks that
        hadn't been accessed in weeks floated in pools of decaying bits. "Bletch!" was Con's first
        comment. "And foo and  barf!" was his second. The Bookie looked as though he'd just payed off a 555-to-1 long
        shot. Luke was polling the garbage for useful items. "What's this?" He dusted off a flat black box with a panel
        display on one side and Don't Panic in large friendly letters on the others. "This can't possibly help us now."
        he said, and tossed it aside. The Bookie was about to lay odds on it when he disappeared. He popped up across
        the pool, shouting "This is no feature,  it's a bug!" and promptly vanished again. Con and the Princess were
        close to panic when Luke reappeared. "What happened?" they queried concurrently. "I don't know!" Luke gasped.
        The bug just automagically dissolved, as far as I could tell. Maybe it hit a breakpoint." "I
don't think so." Con said. "Look how the pool is shrinking.  I've got a bad
feeling about this..." The princess was the first to catch on. "They've
implemented a  new compaction algorithm!" she exclaimed. Luke remembered their channel to the 'droids.  "RS232 -- shut  down that recursion, quick!" Back in
the control room RS232 searched the process table for a  LISP interpreter.
"Hurry!"  said 3CPU.  "Hurry,  hurry!" added his other two processors.  RS232
found the LISP, interrupted it, and altered the stack frame to allow a normal
return.  "Scramble  as many local control paths as you can from there and head
back to the ship." Luke ordered. "We' ve got the Princess!" Meanwhile, PDP-1 made his way deep into the core of the
        rm-star, using his ability to manipulate label_t to slip from context to context undetected. finally he caused a
        random trap and (through nofault of his own) arrived at the central i-node table. Activity there was always
        high, but the Spl6 sentries were too secure in their belief that no mere user could interrupt them to notice the
        bug that PDP-1 introduced. He twiddled the i-node and device numbers on a passing input, carefully maintaining
        parity, to free the Milliamp Falcon. They would be long gone before the corrupted i-node was diagnosed... He
        began traversing module structures towards the subprocess where the Falcon had been grounded. During the context
        switch he felt his priority drop. "That's not nice!" he muttered, then recognized the dark shape before him. "I
have waited a long time for this event,  PDP-1 Kenobi!" rasped Dec Vadic. "We
meet again at last; the circuit is closed." They looped several times, locking bytesabers. Mesmerized by the sight, the
        few StormFlunkies nearby failed to notice Luke, Con, Sixpacca, the Princess and the droids until they'd nearly
        gained the Falcon's input port. A brief firefight blazed as the six hurled them- selves into the ship, but PDP-1
        and Lord Vadic seemed too absorbed in their duel to notice. Luke paused at the port, his gaze riveted on the
        pair. He gasped; was that phase jitter he saw around the old version? "If  my blade finds its mark" Kenobi
        warned "you will be resolved to your
component bits -- but if you slice me down I will only gain compu- ting power." "Your  documentation  no  longer confuses  me,  old  version!"
        Vadic rasped. "My  status  is  bus-master now!" With a sweeping stroke his bytesaber sliced through Kenobi's
        declaration list. As PDP-1's main body shimmered away Vadic noticed his UID go negative. Odd, he thought, since
        UID's are unsigned... Vadic whirled to face the Falcon just as the others dragged a protesting Luke into the
        ship. "We will meet again...Luke!" he rasped softly to himself, as the ship blasted free. As the Milliamp Falcon
        hurtled away from the rm-star, the droids were uncharacteristically silent, and Princess LA36 printed comforting
        messages for Luke. He was unconsolable, hung from the loss of his friend. But strangely, it seemed as though he
        heard PDP-1's voice in the distance, saying .ce May the Source be with you!
        ------------------------------------------------------------------------------- Eric S. Raymond UUCP:
        {{seismo,ihnp4,rutgers}!cbmvax,sdcrdcf!burdvax,vu-vlsi}!snark!eric Post: 22 South Warren Avenue, Malvern, PA
        19355 Phone: (215)-296-5718