We didn’t quite finish up our server kernel vs.
desktop kernel comparison, so today we’ll wrap that up, plus we’ll dig into the included
services in Ubuntu Server, amaze at a couple of interesting blunders, and decide what is this
thing good for, anyway, fueling the tireless Canonical hype machine, or something actually
The server kernel uses CONFIG_M686=y, and the desktop kernel gets
CONFIG_M586=y. This means that the server kernel is optimized for Pentium Pro instruction sets,
and the desktop kernel for the entire 586 and 686 CPU families. This isn’t hugely significant,
as even a generic 486 kernel will run on modern computers. If you’re into compiling your own
kernels, the one change you can make that might actually improve performance is to choose the
CPU option that matches your own CPU. That way you’ll get full support for the instruction set
for your CPU.
Leaky IPC Namespaces
Before virtualization became all the rage, there was a single
set of Inter-Process Communications (IPC) objects (shared memory segments, message queues, and
semaphores) that the kernel used for everything. But virtual environments need to keep their own
IPCs confined inside their own containers; can’t have them leaking out all over the place. So
IPC namespaces, or virtualized IPC, were invented. This is enabled in the server kernel
(CONFIG_IPC_NS=y, CONFIG_UTS_NS=y) and not in the desktop kernel. Does this means virtual
environments are leaky and insecure on the desktop kernel? It seems so; perhaps some smart
person will tell us for certain.
The final difference of note is the server kernel supports multiple IPv6 routing tables,
which the desktop kernel does not.
Included Packages, Sort Of
The Ubuntu Server Edition page
“In around 15 minutes…you can have a LAMP (Linux, Apache, MySQL and PHP)
server up and ready to go. This feature, exclusive to Ubuntu Server Edition, is available at the
time of installation.”
Well no, it’s not exclusive. There are many prefab Linux LAMP stacks, with XAMPP for Linux being one of the most
comprehensive and versatile. That same page also emphasizes the excellence of the Linux Terminal
Server, which is a wonderful thin and diskless-client server. But it’s not included with Ubuntu
Server, so I’m wondering why it gets so much attention.
I like to see in the release notes, or somewhere close by, a complete package list. I
couldn’t find one anywhere, nor even a detailed description of what comes in Ubuntu Server. So I
installed it on a test system and installed every package group. Then I created a
complete package list by running dpkg -l. Ubuntu Server weighs in at nice lean 355
packages, and takes up 899 MB when you select everything.
And thus we learn that Ubuntu Server includes a LAMP stack made from a 2.6.22-14 kernel,
Apache 2.2.4, MySQL 5.0, PostgreSQL 8.2, PHP 5.2, Perl 5.8, and Python 2.5. So you get a couple
of options for your LAMP: MySQL or PostgreSQL for your database, and PHP, Perl, or Python for
Inexplicable hype aside, you also get Samba for cross-platform network authentication, and
file and printer sharing. You even get ntfs-3g for read/write access to Windows NTFS
filesystems. There are Postfix and Dovecot for a nice SMTP/POP3/IMAP mail server, CUPS for
printing, BIND for name services, and AppArmor for enhanced security. There is a reasonable set
of networking packages that support Ethernet, dialup and wireless, and basic set of common
networking utilities. It also supports a serial console, but since Ubuntu uses the Upstart init system rather than the
old-fashioned Sys-V init, it’s configured in /etc/event.d/ ttyS* instead of
The installer itself requires that you stick around to answer
questions; it’s not like Ubuntu Desktop, which asks everything at the beginning and then you can
go away. But it’s not too bad, as it installs fairly quickly.
If you install MySQL it will ask if you want to change the default MySQL password. It
doesn’t tell you what the default password is, and you only get one chance to enter a new
password, so you better get it right the first time.
The installer looks for a DHCP server and does not give you the chance to set a static IP
address. It would be nice to have the option to set a static address during installation instead
of having to remember to do it later.
Missing Sudo and Root Users
The installer prompted me to create only an unprivileged
user, which is standard for Ubuntu. Ordinarily this would be a sudo user with full
administrative privileges. But that didn’t happen — my user was an ordinary unprivileged
user who did not exist in /etc/sudoers. So there I was with a server that I couldn’t do
anything with. Until I booted with a rescue CD and fixed it by resetting the root password, that
You always need a “real” root user anyway; some commands don’t work with sudo, and
the ext3 file system reserves 5% exclusively for the root user, so if a user process goes nuts
and fills up the filesystem, the root user can still save the day.
Just like Debian, Ubuntu starts services immediately after installation.
(Run netstat -untap as root to see what ports are open). So out of the box your server is
open for business. I would rather that none of them start until I’ve had a chance to configure
some access controls, and am darned good and ready to start them. So be extra careful until you
have things configured the way you want.
AppArmor is supposed to be the “real world” alternative to SELinux. Unfortunately there is
nothing included that explains the default AppArmor configuration, or how to modify it.
Of course you get iptables for packet filtering, just like in any Linux.
Ubuntu pulls packages from Debian Testing, Unstable, and even Experimental. These are not
supported by the Debian security team. In addition, the default repositories
(/etc/apt/source.list) include Universe and Multiverse, which include these scary
“## N.B. software from this repository is ENTIRELY UNSUPPORTED by the
## team..software in
## multiverse WILL NOT receive any review or updates from
## security team…..”
This turned into a long ole review, so let’s sum up.
First the good stuff: It’s an easy, one-CD installation. It’s a lean, barebones package
selection with no lard, which I like because it’s easier to add things than to wade through and
figure out what needs to be deleted.
Some users might have an expectation that Ubuntu Server will be all shiny and easy like
Ubuntu Desktop. It’s not—you need to know what you’re doing, because it doesn’t do any
hand-holding. It’s a honest-to-gosh proper server with no X windows or GUI tools cluttering it
up. You can have a GUI via remote administration; for example, Webmin is a high-quality and popular remote GUI adminstration
tool for servers.
The bad stuff: Poor documentation on the Ubuntu-specific customizations; it’s too hard to
find out what’s in it before downloading it. Bleeding-edge package versions are scary for
servers, and I question the effectiveness of putting something like AppArmor on a system that is
already security-questionable. LAMP security is famously difficult even with conservative
package choices and careful attention to security patching. Quality control seems in need of
some quality control.
Regarding expectations, I expect that with the funding, resources, and commercial aspirations
behind Ubuntu, it should be a marvel of quality, security, and stability, and with the awesomest
documentation of all. Debian succeeds at all of these with hardly any funding. Debian and Fedora
both show how release notes should be done.
The concept behind Ubuntu Server is wonderful— a lean, carefully-selected batch of
packages that gets you up and running quickly, and that you can easily add to as you need. I can
see using Ubuntu Server as a LAN server, and as a training server, but I think opening it up to
the Internet is asking for trouble.