| 
            
       | 
      
      
          
         
         
		 | 
      
      
            
       | 
      
	  
            
       | 
      
      
          
	 
		
		   
		       
		      
		         
		            | 
		                
Unix
         and the Macintosh
	 
	
Having
         it all	
				 
			 | 
		 
	 
	
		
	 |  
 
 
By:
         Tom Ierna 	
         
         Many people are interested
            in running alternative operating systems on their
            Macintoshes. There are quite a few options available, but
            UNIX support is probably the most sought. Most people
            don't know that UNIX and the Mac play together quite
            well. 
         
         Brief background for UNIX: 
         
         UNIX was developed in the late 1960's by Ken Thompson and
         Dennis Ritchie at AT&T Bell Labs, it was strongy
         influenced by Multics, an operating system for minicomputers
         of the time. It was designed from the ground up to be a
         multitasking, multi user (1) operating system with
         protected memory - fully buzzword-compliant even by today's
         standards. Multi-threading was adapted, and incorporated
         later, but fit in the architecture well. UNIX was also coded
         completely in the C programming language, making it machine
         independent - something of a novelty back then, when
         operating systems were written in straight assembly. 
         
         (1) For multi-user
            personal computer operating systems, UNIX is the only
            game in town. NT is not really multi-user, it is more of
            a glorified file and print server with decent
            administration tools. You can log in as different users,
            but only one can be logged in at a time without special
            software (like Citrix's WinFrame). UNIX is true
            multi-user. You can create accounts for your friends and
            you can all be using the box simultaneously across the
            network - with no additional software. This includes GUI
            support through X-Windows. The clients can even be on
            diverse platforms - the only necessary common denominator
            is an X server on each client machine. 
         
         In 1975, UNIX was made available to universities at a
         reduced cost, where it became extremely popular. In 1984,
         the University of California, Berkeley made available an
         enhanced version of UNIX called Berkeley Standard
         Distribution (BSD) UNIX. AT&T sold the rights to UNIX
         and the hands have changed many times since. Currently the
         X/Open Company owns the AT&T source. Since then, many
         BSD features have been incorporated back into the AT&T
         variant, currently called System V. Most commercial Unices
         are based on this version and most free Unices are based on
         BSD. More recently, Linus Torvalds and programmers across
         the globe have developed a UNIX clone called Linux, of which
         there are multiple variants. 
         
         Unices and their clones all have a similar architecture,
         and the ideas pioneered by UNIX show through in all modern
         operating systems. Shared traits include kernels, file level
         security privileges, piping, TCP/IP networking, file-mapped
         protected virtual memory, load-balancing and all of the
         others that Microsoft claims are new technology in NT. The
         differences between Unices is in the details; for instance,
         all Unices have similar command line utilities, but each
         variant might have different options for these utilities.
         All Unices consist of a kernel, a command line and command
         line tools. 
         
         Mac Options
         
         The Mac has an interesting history with UNIX. Until very
         recently, Apple was very tightlipped about their hardware.
         If you wanted to write a new operating system or port an
         existing one, you had to twiddle bits by hand to see what
         they did and then write the OS around that. For this reason,
         work was very slow to get any of the UNIX variants on Mac
         hardware until recently. 
         
         Apple had their own version of UNIX called A/UX that ran
         on any 030 and 040 machine with the Paged Memory Management
         Unit installed. This was an AT&T variant with a bunch of
         BSD extensions. Possibly the most interesting aspect of A/UX
         was that you could run stock standard System 7 compliant Mac
         applications on it. It wasn't until late 1992 that any
         Unices besides A/UX were ported to the Mac, and all of these
         UNIX ports were done without Apple help. NetBSD and
         FreeBSD are two of them. Lately however, Apple has
         been much more open with their hardware specs. 
         
         Prior to the acquisition of NeXT, Inc., Apple brought
         briefly to market the PPC based Network Server 500 and 700.
         These were Apple's brief foray into AIX, a version of UNIX
         maintained by IBM for their RS6000 boxes. Apple's version of
         AIX will only function on these two boxes. 
         
         PPC Mac owners have several choices, and each is
         distinctly different: 
         
         
            - MkLinux (mklinux.apple.com), a Linux variant,
            is an Apple skunk works project. It hosts the Linux
            kernel on top of the Mach microkernel (written at
            Carnegie-Mellon by none other than Avie Tevanian). Mach
            is an extra layer of abstraction between the kernel and
            hardware. This makes diverse hardware support a little
            easier at the expense of some speed.
 
              
            
            - LinuxPPC (www.linuxppc.org), also a Linux
            variant, is a project headed up by Paul Mackerras. It
            builds upon the work from the MkLinux team, but utilizes
            a "monolithic" kernel - meaning there is no micro kernel
            abstraction layer. The kernel talks to the hardware
            directly. This ensures that for every hardware feature,
            bug or addition, the kernel will be modified. That's the
            penalty paid for a return of some 10% additional
            speed.
 
              
            
            - MachTen (www.tenon.com) is a BSD variant
            running on the Mach micro kernel. What makes this one
            really different (other than the fact that it is the only
            shipping UNIX for the Mac that is not free) is that it
            runs as a standard Mac application. This means that to
            use UNIX, you double click an application in the Finder.
            Within that application's memory space (as set through
            the Get Info box), lives a real UNIX. This unusual (but
            powerful) approach has some unique trade-offs.
 
             
            
            
                  - The pluses:
 
                
               
               
                  - You can run Mac applications along side of
                  UNIX.
 
                  
                  - You don't have to reboot to use UNIX. If UNIX
                  crashes (not likely), you can restart it with a
                  double-click.
 
                  
                  - All Macs are supported with very little change
                  since it is really an application as far as the
                  MacOS is concerned. It uses the MacOS hardware
                  drivers. That means that your NuBus cards, your PCI
                  cards and your accelerators will still work.
 
                  
                  - There are two versions of MachTen -
                  Professional and Regular. The Professional one
                  allows MachTen to do all of the virtual memory and
                  memory management, regardless of which OS you use.
                  This results in more speed and stability for the
                  Mac side.
 
                    
                
               
               
                  - The drawbacks:
 
                
               
               
                  - While the MacOS has control of the processor,
                  it does co-operative multitasking, and while
                  MachTen has the processor, it does preemptive
                  multitasking. There is a slider that controls the
                  ratio of MacOS to MachTen processor utilization.
                  This is a blessing and a curse because running
                  MachTen fast enough to be usable might limit the
                  usability of the MacOS side and vice-versa.
 
                  
                  - Although MachTen uses the MacOS device drivers,
                  making compatibility less of an issue, these may
                  not be as robust or as fast as similar drivers on
                  the UNIX side.
 
                  
                  - If the MacOS crashes, the UNIX side does
                  too.
 
                    
                
            
  
            
            - Rhapsody: (devworld.apple.com/rhapsody/)
            Although this is not released to the general public, it
            is a UNIX variant nonetheless. Based on the BSD release
            and hosted on a Mach Microkernel, Rhapsody is best
            described as A/UX with a new outlook on life. Rhapsody is
            made up of more than just the standard UNIX kernel,
            command line, command line tools and windowing system. It
            has a "blue box" for MacOS compatibility - sort of the
            reverse of what MachTen does, Rhapsody's UNIX hosts a
            MacOS process rather than MacOS hosting MachTen as an
            application. Rhapsody uses the YellowBox API (application
            programming interface) which is based on on work done by
            Steve Jobs and crew at NeXT, Inc. and their
            OpenStep/NeXTSTEP. YellowBox is a real Object-Orieted API
            that allows programmers more freedom and productivity
            than other API's. Most importantly to end users, Rhapsody
            wraps all of the text-based administration inherent with
            most Unices, with a very clean and powerful Mac look and
            feel (all those text configuration files essentially get
            controlled by graphical control panels and an easier to
            use intereface).
 
          
         
         X marks the spot
         
         You may be wondering: "Why is UNIX is so great: it
         doesn't even have any pictures to click!", but fortunately
         you'd be jumping the gun. All UNIX variants have a windowing
         system available called X-Windows. X is a windowing system
         that sits on top of UNIX much in the same way that Windows95
         sits on DOS, only in a much more elegant fashion, with loads
         less overhead and with more configuration abilities than you
         can shake Bill's head at. 
         
         The best thing about X is that by itself, it doesn't do
         anything. For it to draw windows, you need a window manager.
         There are several of these, and each has a separate look and
         feel. There are window managers that look like Windows95 and
         ones that look like MacOS. There are some that are very
         plain, and others that look like alien landscapes. Each
         window manager is configured via a text file. You determine
         just about everything. The only thing that might be
         difficult to wrap your brain around with X is that each
         "client" machine requires an "X Server" if you want to
         deploy applications from one machine to another via a
         network. The "X Clients" are actually the applications
         running, not the other machines connecting. The "server"
         that holds the application binaries need not even be running
         X Windows. 
         
         Why use Unix?
         
         So you might be thinking, "OK, this is a fairly complete
         primer for UNIX on the Mac, but why you'd want to put UNIX
         on a Mac". 
         
         Here are a few reasons: 
         
         
            - To learn UNIX
 
            
            - To prepare for Rhapsody and Mac OS X (at a geeky
            administration and power-user level).
 
            
            - For ease of use, MacOS rules. For scalability and
            reliability, UNIX rules. I run LinuxPPC on one of my Macs
            (a 7500 with a 604/120 card), and not only is it faster
            than the MacOS on the same machine, it is worlds more
            reliably.
 
            
            - UNIX is ideal for serving information, be it web,
            database, file or print. There are Appletalk modules, web
            servers, high-speed object oriented databases and file
            and print services available for Linux - all of them
            native and all of them FREE!
 
            
            - If you are interested in programming, but don't want
            to pay big bucks for Metrowerks Codewarrior (a very good
            development environment for the MacOS), UNIX has a huge
            array of programming tools and a set of learning and
            troubleshooting resources online that can't be beat.
 
            
            - To expand your horizons. MacOS may have the look and
            feel you love, but most larger businesses (the ones with
            IS departments) like to see a rounded
            résumé. Besides, if you can convince anyone
            to buy a Mac simply because the hardware is more reliable
            and the processor is faster - even if they never plan on
            using the MacOS - that helps Apple's bottom line, since
            Apple makes money on hardware not software.
 
            
            - You'll learn to hate DOS and Windows even more. MacOS
            is elegant and integrated, but UNIX is elegant,
            integrated and extremely stable.
 
            
            - You'll understand why command lines are a good thing,
            especially if your only previous experience with them was
            DOS.
 
            
            - Remember, Unix is the only multi-user System
            option.
 
          
         
         If you still have questions as to why, then Unix is
         probably not the right solution for you. Unix is not for
         everyone. But there are certainly many that have great
         interest in Unix, and the Mac based Unices offers these
         people some pretty compelling solutions. 
         
           
         
         Terms
         
         Some of the above terms might be a little confusing to
         UNIX newbies, so here's a quick rundown of some of the major
         ideas in UNIX. 
         
         
            - Kernel:
 
            
            - The kernel acts as the arbitrator to the hardware
            drivers. He's the guy that does all of the nitty-gritty
            work like I/O, memory management, security and process
            management.
 
            
            - Process:
 
            
            - Every program in UNIX is a process. The kernel
            assigns each process a PID or process identification
            number. A process requires a context-switch (the stack
            and memory protection and so on) must all change to
            protect one process from the other processes. Each
            process may have multiple threads (which are "light
            processes").
 
            
            - Thread:
 
            
            - Programs (processes) often have multiple threads. A
            thread is a lightweight process, that does not require a
            context switch, and so they are "faster" (less processor
            intensive). Sometimes threads are incorrectly called
            "child-processes". 
 
            
            - Security:
 
            
            - Since UNIX was designed to be multi-user, each file
            (and directory) has security privileges associated with
            it.
 
            
            - Command Line:
 
            
            - There are many "command line interfaces" (CLIs) for
            UNIX, and they are called shells. Common shells include
            C-Shell, Bash (Bourne-Again Shell) and Korn. They differ
            in their functionality, but they all have built-in
            utilities to look at the contents of directories and the
            contents of files. These are what you type commands into.
            Some are very complex, much like programming languages,
            some are basically rudimentary scripting tools but all
            allow you to do multi-step tasks by creating shell script
            files.
 
            
            - Command Line Tools:
 
            
            - A shell handles all of the user interaction with the
            kernel, and the command line is each user's parent
            process for any tools that they use. Tools vary from disk
            utilities to word processors to compilers. These are text
            based. Some use a library called "Curses" that allows
            terminal style screen building.
 
            
            - Piping (pipes):
 
            
            - Most UNIX utilities are modular in nature. You give
            them an input and they generate an output. You can string
            together commands by piping them together to achieve a
            desired goal. Piping is named for the ASCII "pipe"
            character, what is used between the commands.
 
          
         
         
	  
	 
	
	 
			  
	 		 |