Linux is rapidly growing in popularity, but is it ready to handle the demands of a business enterprise system? Such a system must support e-mail transport and delivery, file sharing, printer/device sharing, firewall and gateway functions, and remote access capabilities. If a business were to migrate to Linux, would users still be able to perform basic word processing tasks, use spreadsheets, access databases, manage contact information, and create fancy presentations? In this Daily Drill Down, I will present my argument for why Linux can be trusted to host your enterprise system.

I will illustrate how Linux frees the business user from dependency upon any software vendor and also how Linux meets all the business user’s needs. In addition, I will show how Linux offers capabilities well beyond those that the typical business user has come to expect from his or her existing system.

Not only do I believe that Linux is more than capable of offering all these benefits, I also believe it will soon become one of the most cost-effective approaches. Microsoft has announced its intention to change its current ownership paradigm so that users will have to lease software rather than own it. In the very near future, Microsoft plans to sell customers a software license that will work for a fixed time period, after which the customer will have to pay again. (Of course, if you take into consideration how often most enterprises upgrade their operating systems, you might see that having to renew a regular license is virtually already in effect.)

Linux: A “free” choice
Linux possesses a number of features that make it a very desirable OS choice. First, it’s freely available, complete with source code. This ensures that if it doesn’t perfectly meet your requirements, you can find someone who will be able to modify the code to meet your needs! That’s a huge bonus that is just not available in a proprietary operating system. Second, once you own Linux, it’s yours forever. As other users discover improvements, they will make those improvements available freely, so there is no recurring cost.

Feature-by-feature comparison
Let’s examine each feature that an enterprise system must possess.

File sharing
Perhaps the most important feature of a networked system is its ability to share resources. A typical enterprise system must be able to share files and printers. Linux and UNIX, in general, will give you much more in the way of resource sharing. Linux offers Network File System (NFS) to share files between computers. Using this facility, any directory on a host computer can be exported to any other computer within the enterprise system. Any authorized client can then import the shared directory and map it to any location within the directory structure of the client computer.

NFS under Linux is somewhat more flexible than file sharing in Windows. NFS allows the user to optimize performance for the user’s specific use. In general, UNIX/Linux allows the user to format disks optimally for a specific use. The user can specify the block size and other drive parameters to tweak performance. You might prefer a larger block size if you were going to be manipulating large data files. This would allow you to read larger chunks of data in one transfer.

The same parameters can be adjusted for NFS transfers. Block sizes, priorities, and the number of processes dedicated to performing NFS data transfers can all be adjusted in Linux.

Other forms of file sharing
Of course, Linux offers a number of other ways to share files as well. The old reliable FTP can always be used to share files, though this is fairly cumbersome. Linux also supports a remote copy or rcp, which allows you to copy files from one machine to another. This command has the following syntax:
rcp dest_host:path/filename src_host:path/filename

Printer sharing
Linux also supports printer sharing. A printer attached to any Linux host can be accessed by any other host. The printer is normally managed by a daemon (called lpd), which implements a printer queue. The queue contains all the print jobs that are waiting to be printed. Remote hosts submit print jobs to the queue via TCP/IP over the network.

If you can afford a printer that understands Adobe PostScript (typically labeled PS, PS2, PS3, or EPS), then your Linux system is fully capable of printing documents full of graphics, text, etc. Fortunately for those people who don’t want to spend a fortune on a printer, the GNU foundation has an exceptionally good alternate solution. It has developed a free software application called Ghostscript, which translates PostScript language into the special graphics language for almost every known printer. You can easily construct a script that determines whether a printer job should be preprocessed with Ghostscript before being sent to the printer. You could either call this script when submitting jobs to the printer daemon or you could call the script directly from the printer daemon. Either way, Ghostscript makes up for the fact that most printer manufacturers didn’t design their products with Linux in mind.

CPU sharing
Linux offers additional resource sharing capabilities that go way beyond those of Windows. Linux allows any authorized host to submit a remote procedure call (RPC), which will cause the Linux host to execute the remotely initiated command. Of course, the Linux host can also support remote login, which would allow a user to connect to a different Linux host and then execute a process on that remote host. So with these capabilities, we can see that Linux facilitates processor sharing, which is an extremely powerful feature, indeed. Below are some examples of how to implement RPC requests to other machines:
rlogin host –l user
rcp -? Host –l user task

How would someone take advantage of processor sharing? Let’s imagine that you needed to read one data record from a very large file, perform some calculations on the data, and then write results for that record into an output file. If we assume that each record is processed independently from all others, then we can separate the file into smaller files and copy each one to a different machine. We would then remotely log in to each machine and run our processing job on each of the smaller files so that each machine would process one smaller file. Ideally, if we broke a large file into four smaller files and ran our processing task on four machines, we should finish the task in one-fourth the time that would otherwise be required for a single machine. So we can see that Linux can implement distributed computing!

Video, mouse, and keyboard sharing
XWindows, which is freely available with Linux, enables the user to redirect input and output from any host to any other host. So, using XWindows along with remote procedure execution, a user could run a process on a remote machine and still monitor that process from the machine that’s directly in front of him or her. XWindows also allows the user to put pictures up on a remote display or grab video directly off a remote display and bring it to the local machine!

Networking functions
Linux provides far more capability than Windows in networking functions. Any Linux host may become a gateway, router, firewall, switch, etc. In addition, it may do any number of these functions while still serving as a workstation, file server, print server, etc. In summary, a Linux host can do any of these functions, in any combination.

For a Linux host to become a gateway, basically all you need is a number of network connections and the right kernel options. A gateway merely routes packets to the appropriate host whenever it receives something not intended for it. A host that is not intended to be a gateway will just ignore packets when it notices that they have any other delivery address. In order to make Linux perform gateway functions, you first have to notify the kernel that it should not ignore packets not addressed to it. You do this by typing the following as a privileged user:
echo “1” > /proc/sys/net/ipv4/ip_forward

Once you have done this, the kernel will occupy itself with every single packet that arrives at any of its network interfaces. Of course, this alone will not get packets to go where they need to go, but at least the kernel won’t ignore them! Next, you have to declare where you want packets to go if you get them. This means that you must properly configure all your network interfaces, using the ifconfig command, and then use the route command to declare the various routes that packets should take. Of course you don’t even have to use the command line! Instead, you can visit one of the many GUI configuration tools (such as Red Hat Linux’s netconf tool).

If you want to turn a Linux machine into a router, just design yourself a Linux gateway, and then don’t use the machine for anything but routing packets! The Linux Router Project is dedicated to doing exactly that. Its goal is to create a minimal Linux system that can be used in place of a router. This would allow users to have complete control of the routing algorithms, and it might just give purpose to a great number of otherwise useless 486 machines.

Linux has a multitude of firewall options available. Any Linux host may be configured to run either a packet level firewall such as iptables or ipchains, or a more intelligent proxy firewall like Squid. A packet level firewall will allow the Linux host to selectively allow or deny packets to enter the system based on a set of rules. The rules are fairly primitive, since they are based on lower-level information, such as the source address, protocol, and port. You can establish rules that only allow certain hosts to send specific types of packets using this strategy. I found some great information on ipchains at Trod and micronet. I found some good information on iptables on the site.

Using a proxy-based firewall, you can control which users are allowed to access specific services on your host. The proxy firewall can produce high-level log files that can identify exactly what each user accessed, which can be valuable information to many system administrators.

Linux can implement a number of different mechanisms to facilitate remote access. I already discussed how Linux enables remote hosts to run processes and remotely log in to a host. Linux also supports the usual telnet and FTP servers. The telnet daemon enables Linux to allow remote users to connect to a specified shell and perform tasks as if they were sitting right at the console. The FTP server allows the remote user to send and receive files.

Additionally, Linux can be used as a PPP server if the appropriate external hardware is connected. A small business might be interested in doing this to allow employees to access their work from home. Assuming you have a modem connected to a serial port, you can get the Linux getty or mgetty process to watch the serial port for activity. If you have ever connected to a dial-up ISP, getty generates the initial “login:” and “password:” greeting that you see. Once a user authenticates past getty, Linux goes to the password file and retrieves the shell command, as it would for any other login process. However, in the case of a PPP dial-up user, instead of running the shell, you would instead want to run the PPP daemon pppd.

Available applications
Microsoft Office is no doubt the world’s favorite and most widely used desktop office product. Having uniform acceptance of Microsoft Office does mean compatibility, which is very desirable. However, this puts one company in the position of dictating proprietary standards to the world. Regardless of how you feel about the situation, your enterprise system office product selection must be determined based on whether you need compatibility within your company or worldwide compatibility.

On the Linux platform, you have a number of choices that will allow you to maintain complete compatibility with Microsoft document, spreadsheet, and presentation formats. StarOffice is Sun Microcomputer’s 100 percent free offering to entice users away from Microsoft Office. It can import and export in all Microsoft formats, which makes it a very desirable alternative for the Linux platform. Other companies, such as Applix, have their own products, which are also compatible with Microsoft file formats. I found a number of Office Suite product alternatives listed on the Linuxapps site.

If your users are insistent upon using “the real thing,” Linux offers hope for that too. The Windows Emulator project (WINE) enables Linux to emulate Windows system calls, thus allowing native Windows programs to run under emulation. Since the CPU is still native, this emulator really just implements all Windows’ library function calls; it doesn’t have to emulate the actual processor instructions.

Of course, you could also run VMware to partition your machine into a half-Linux, half-Windows machine. This would allow you to fully support all your office product needs without worrying about compatibility.

The GNU foundation has been doing some excellent work toward its totally free desktop application suite. Their design is not compatible with Microsoft formats. If the user community accepts this effort, then document standards will never again become the property of any company. While this is a noble and worthwhile goal, it’s useless to the enterprise system administrator. Thus, I discourage anyone from considering this alternative unless you have no compatibility requirement outside of your company. Of course, such an enterprise system could have at least one machine dedicated to providing conversions in the unfortunate event that an important client or business partner sends a Microsoft document. If this was an infrequent event, perhaps a business could use such a strategy without great discomfort.

Cost of ownership
One of the greatest benefits to choosing the Linux operating system is its incredibly low price. It’s free! If you insist on paying money for it, you can buy a CD-ROM distribution for $39.95. Red Hat Linux produces the distribution I recommend to most business users. If you want to spend a little more on your Red Hat Linux, for $179.95 they will send you the CD-ROM and manuals, as well as 90 days worth of Web-based and telephone-based support. Of course, you would still need to acquire the StarOffice product from Sun Microsystems. Fortunately, it too is free. They will send you a copy on CD-ROM for $9.95. If you want the Setup Guide, the User’s Guide, and tutorials on free training and support, that’s going to cost you $39.95. These are per-site figures, not per machine! So the total software cost can be as low as $0 for those who are willing to download their distributions and live without the manuals. If you want the books, you are still looking at a cost under $250.

Microsoft’s Web site currently lists Microsoft Windows 2000 at a purchase cost of $319, assuming you are not upgrading from a previous version. You must also add Microsoft Office 2000, which lists for $579. This brings your total to $898 per machine. Microsoft does offer volume discounts.

Of course, the purchase cost is just one aspect of the total cost of ownership. We must consider what it might cost to maintain your enterprise system. System administration staff would be the next major cost to consider. Even if you can get by using few people to maintain a Windows system, the cost of labor will dwarf the initial purchase cost in only a few years. Getting your staff up to speed on the Linux operating system should not require any more cost than that of upgrading your Windows environment. And if you take into consideration the cost savings, uptime, and lower manpower requirements to operate, you can quickly see how Linux makes most budgeters happy campers.

If you need technical support from Microsoft, they offer several options. You may call them and discuss your specific needs to get a quote. Red Hat offers similar assistance; again, you may call them to discuss your specific needs.

Both operating systems have a number of enthusiasts available on the Internet for free consultation. Newsgroups abound on which people seek help from others. I have had incredibly good success using this forum in the past, and I highly recommend that everyone take advantage of this resource. If your in-house staff is fairly competent, they should be able to get all needed support from other users on the Internet.

Next, let’s consider what happens when you discover a problem in either your operating system or one of your critical applications. If such a problem exists in an open source product, you can find someone who will fix it for you. You can go to someone in-house, seek help on the Internet, or hire a consultant or contractor. You are the master of your enterprise system’s destiny. If you have such a problem with a proprietary product, then you must somehow persuade the manufacturer to send you a patch or an upgrade. Your problem, if it gets fixed at all, will be fixed on someone else’s terms and on their schedule. I don’t know how to put a price on this kind of security and peace of mind. This is perhaps the most significant advantage to open source products.

The office product application is perhaps the only factor that really inhibits Linux from being the ideal enterprise system platform, but a number of products exist to fill this void. Also, a number of workarounds exist to allow the Linux user to run Microsoft Office under Linux, so this issue is perhaps less severe than many people realize.

Linux’s open source philosophy ensures that support will always exist. No company can ever discontinue support for Linux, leaving your business to suffer the consequences. From the discussion of file system tuning and NFS tuning, we can see that Linux allows the system administrator to optimize performance for specific needs. The extra features of CPU sharing and other resource sharing go well beyond anything known to Windows users. After examining all of the enterprise system requirements, I believe that Linux provides excellent support for even the most challenging enterprise system requirements.