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 useful?
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 says:
"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 scripting.
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 /etc/inittab.
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.