UNIX on PCs (Opinion)

PCs are not the best platform for real operating systems like UNIX. The architecture suffers from numerous deficiencies, not the least of which is the stiflingly small number of hardware interrupts (either 7 or 15, most of which are preallocated). Thus adding devices, using multiple serial ports, etc, is always a challenge and usually a nightmare. The free-for-all nature of the PC market and the lack of standards combined with the diversity of UNIX OS versions makes it difficult to find drivers for any particular device on any particular version of UNIX.

Of special interest to Kermit users is the fact that there is no standard provision in the PC architecture for more than two communication (serial) ports. COM3 and COM4 (or higher) will not work unless you (a) find out the hardware address and interrupt for each, (b) find out how to provide your UNIX version with this information, and (c) actually set up the configuration in the UNIX startup files (or whatever other method is used). Watch out for interrupt conflicts, and don't expect to be able to use more than two serial ports at the same time. Here are typical tales from the Linux newsgroups:

To complicate matters, the PC platform is becoming increasingly and inexorably Windows-oriented. More and more add-on devices are "Windows only" -- meaning they are incomplete and rely on proprietary Windows-based software drivers to do the jobs that you would expect the device itself to do. PCMCIA, PCI, USB, or "Plug-n-Play" devices are rarely supported on PC-based UNIX versions such as SCO; Winmodems, Winprinters, and the like are not supported at all on any UNIX to our knowledge (except Lucent has released a Linux-only driver for one of its PCI "software" modems). The self-proclaimed Microsoft PC 97 (or later) "standard" only makes matters worse since its only purpose to ensure that PCs are "optimized to run Windows 95 and Windows NT 4.0 and future versions of these operating systems".

With the exception noted (the Lucent modem, perhaps a handful of others by the time you read this), drivers for "Win" devices are available only for Windows, since the Windows market dwarfs that of any particular UNIX brand, and for that matter all UNIXes (or for that matter, all non-Windows operating systems) combined. Don't waste time thinking that you, or anybody else, could write a Linux (or other UNIX) driver for a Winmodem or other "Win" device. First of all, these devices generally require realtime control, but since UNIX (unlike Windows) is a true multitasking system, realtime device control is not possible outside the kernel. Second, the specifications for these devices are secret and proprietary, and each one (and each version of each one) is potentially different. Third, a Winmodem driver would be enormously complex; it could take years to write and debug, by which time it would be obsolete.

A more recent generation of PCs (circa 1999-2000) is marketed as "Legacy Free". One can only speculate what that could mean. Most likely it means it will ONLY run the very latest versions of Windows, and is made exclusively of Winmodems, Winprinters, Winmemory, and Win-CPU-fans (Legacy Free is a concept pioneered by Microsoft; see http://www.microsoft.com/hwdev/newpc/).

Before you buy a new PC or add-on equipment, especially serial ports, internal modems, or printers, make sure they are compatible with your version of UNIX. This is becoming an ever-greater challenge; only a huge company like Microsoft can afford to be constantly cranking out and/or verifying drivers for the thousands of video boards, sound cards, network adapters, SCSI adapters, buses, etc, that spew forth in an uncontrolled manner from all corners of the world on a daily basis. With very few exceptions, makers of PCs assemble the various components and then verify them only with Windows, which they must do since they are, no doubt, preloading the PC with Windows. To find a modern PC that is capable of running a variety of non-Windows operating systems (e.g. Linux, SCO OpenServer, Unixware, and Solaris) is a formidable challenge requiring careful study of each vendor's "compatibility lists" and precise attention to exact component model numbers and revision levels.

Modems: External modems are recommended. Internal PC modems (even when they are not Winmodems, which is increasingly unlikely in new PCs) are always trouble, especially in UNIX. Even when they work for dialing out, they might not work for dialing in, etc. Problems that occur when using an internal modem can almost always be eliminated by switching to an external one. Even when an internal modem is not a Winmodem or Plug-n-Play, it is often a no-name model of unknown quality -- not the sort of thing you want sitting directly on your computer's bus. (Even if it does not cause hardware problems, it probably came without a command list, so no UNIX software will know how to control it.) For more about UNIX compatible modems, see:

  http://www.o2.net/~gromitkc/winmodem.html

Finally, note that as a real operating system, UNIX (unlike Windows) does not provide the intimate connection to the PC keyboard, screen, and mouse that you might expect. UNIX applications can not "see" the keyboard, and therefore can not be programmed to understand F-keys, Editing keys, Alt-key combinations, and the like. This is because (a) UNIX is a portable operating system, not only for PCs; and (b) UNIX sessions can come from anywhere, not just the PC's own keyboard and screen. For more on this topic, CLICK HERE.


The Kermit Project / Columbia University / kermit@columbia.edu / 12 Jan 2001