A number of pundits like to bemoan Linux’s supposed lack of an integrated server stack, and wail about the difficulty of figuring out what you need, and how toilsome it is to install all the pieces separately, and how arduous it is to configure everything after you have found and installed all the separate pieces. Fortunately they’re wrong, because there have long been a number of specialized Linux-based server distributions to choose from: XAMPP, Trixbox, Zeroshell, AsteriskNOW, CitadelBBS, various Red Hat editions, various Mandriva versions, FreeNAS, and dozens more. Ordinary general-purpose Linux distributions like PCLinuxOS, Fedora, and Debian come with options for quick server setups. So the question is not “where are all the integrated Linux server stacks”, but “which ones meet my needs.”
So in this two-part series we’re going to dig into the newly-released Ubuntu Server 7.10, take a look at its feature set and system requirements, and decide if it is a worthy contender in the Linux server stack category. I’ve been running it long to enough to say that it has some very attractive features, and it does a number of things better than anyone else. But it has a major flaw, the same flaw that has bedeviled Ubuntu since its inception: incomplete and hard-to-find documentation, especially Ubuntu-specific documentation.
Dammit, Jim, I Need Documentation
Whatever anyone may think of Ubuntu, you can’t deny they’re busy little critters, stuffing all manner of new things into every release. Which is a splendid thing, and what would make it even better is if they documented all of these wonderful new things. And also the old things. I think it’s the worst of the major Linux distributions for documentation. I spent a considerable amount of time trying to find out what makes Ubuntu’s server kernel different from a desktop kernel, what exactly is the OEM installation, where is the online package search page, what’s new in this release, and what’s included in this release. www.ubuntu.com is poorly-organized and seems more marketing-oriented than informative.
My first stop for any new Linux installation or upgrade is the release notes. These are treasure troves of helpful information about changes, workarounds for bugs, and cool new stuff. Or at least they are in other distributions, such as Ubuntu’s parent Debian, and Fedora. Not only that, but they are easy to find, with nice big links on the front pages of the two sites, which you can see at Debian.org and FedoraProject.org.
The Ubuntu release notes are quite sparse, and they lump the server and desktop editions together. There are bug reports and workarounds, but where is the list of major and new features? AppArmor is a radically new inclusion, but the only mention of it is that it breaks printing. What is it, and what do you do with it? What are the kernel versions, and versions of major applications like Apache and … well, what exactly comes with this release? What hardware architectures are supported, and what are some of the specific issues for them? And so forth—just cruise the Debian and Fedora release notes to see how it should be done. In fact you can check out older Ubuntu release notes—the farther back you go, the more complete they are, though they’re still short of what they should be.
It’s also typical to include batches of READMEs and CHANGES and other helpful documentation on installation CDs. Don’t bother looking on the Ubuntu Server CD for these, because there aren’t any. However, it does include the “Ubuntu Installation Guide”, which is actually the Debian Installation Guide with some minor modifications, such as changing “Debian” to “Ubuntu”, and adding useful links to online Ubuntu resources. This is a comprehensive installation manual that goes into detail on various installation methods such as using pre-seed files, network installations, using a boot server, how to use the installation CD for system rescues, and using a built-in tool for sending in installation bug reports. But there is nothing about Ubuntu-specific installation options such as the OEM install option and the “Install a command-line system”, or what the various package groups are.
System Requirements and Supported CPUs
System requirements are all over the map depending on what you read, and again not easily found. You’ll find RAM requirements as low as 32 megabytes (the OEM installer says this). The installation manual mentions 48MB of memory and 500MB of hard disk space on one page, then on another recommends a minimum of 64MB of memory and 1 GB of disk space for an installation without X windows, and 128 MB RAM plus 5 GB of storage for a graphical desktop.
In real life 64 MB of RAM + 1 GB hard drive space works OK for a text-only system, and 128 MB RAM + 5 GB hard drive space is acceptable for a lightweight graphical desktop such as IceWM, Fluxbox, or XFce, or any of the many nice lightweight graphical environments for Linux. Ubuntu will run on a 486 CPU, but it won’t run at all on a 386 CPU, even though there are kernel packages with 386 in the name like linux-image-386. Debian hasn’t supported the 386 CPU family since Sarge (r3.1) was released.
Ubuntu Server Edition supports the x86, AMD64 and UltraSPARC T1 CPU architectures. x86 includes VIA (formerly Cyrix) processors, all AMD 32-bit processors from Am486 up, and all Intel 32-bit processors from the Intel 486 and up.
AMD64 includes all AMD 64-bit processors and Intel EM64T. The EM64T is not the same as the Itanium, which is also call IA-64, so Ubuntu does not support Itanium processors.
The UltraSPARC T1 is an 8-core processor that is both multi-core and multi-threaded, and power-efficient. Sun is an official Ubuntu partner and has certified some of its systems with Ubuntu.
You no longer need to look for a separate SMP kernel for multiple processors or processors with multiple cores, because there is a SMP-alternatives kernel option that automatically turns off SMP support on single-processor systems.
What Do You Get In Ubuntu Server?
The Ubuntu Server is not fundamentally different from Ubuntu Desktop. It uses the same package repositories; the differences are package selection and special “server” kernels. What makes these special “server” kernels? That’s a good question, and so far I have not found a good answer other than “different options are selected at kernel compilation.” So I’m going to examine kernel config files, which contain over 3000 lines, make the definitive comparison my own self, and report back next week.
We’ll also dig into the different types of installations, the various server meta-packages, and check out how much post-installation work is necessary to have functioning servers. Ubuntu claims “security by default”, so we’ll also take a look at the default security settings.
- Part two of this article: “Ubuntu Server: Considering Kernel Configuration“
- Ubuntu’s parent, Debian, supports the most CPU architectures. See Debian Ports for good information
- Ubuntu Partners page has information on official certified hardware
- Ubuntu Server Edition
- Common Ubuntu Questions
- The Packages page has several good ways to help you find packages, detailed information on packages, what packages specific files are in, and links to the source tarballs
- Online installation guide for Feisty, which is similar to Gutsy’s installation guide
- Community documentation
- Official documentation