The other day, I blogged about the Debian Installer, and I stated that I find it to be one of the most flexible and possibly most powerful operating system installers. Well, continuing with a series of posts on Debian, I want to mention how flexible the operating system is by itself, from installing to running. The claim from the Debian project that it is "The Universal Operating System" is spot on, and I hope this post shows you really how universal it truly is.
First off, let me start by saying that Debian isn't perfect. No operating system is. However, I find the flexibility of Debian extremely powerful. So powerful, in fact, that Debian can meet the needs of most individuals and situations. While it may not meet the needs of all individuals all the time, I'm confident that it can either meet the needs of all individuals some of the time, or some of the individuals all the time. Let's take a look.
First, as mentioned in my previous post, the Debian installer is fantastic. I won't cover everything here that I already covered in that post, but I will mention a few things. To start, you can download the entire 5-disk DVD set, in addition to a 1-disk DVD update to get you caught up to the latest stable release, and use this set as your software repository, keeping your system completely offline, should you so desire. You could also download 31 CDs, including 5 additional update CDs for the same thing, should you not have a DVD burner at your disposal.
Of course, not everyone is up do downloading 30GB of software, so, should you desire, you could download just the first DVD or CD to do a complete base "default" install. This way, you've only downloaded ~5GB if you grabbed the DVD, or ~700MB if you grabbed the CD. Much better than 30GB.
But, Debian doesn't stop there. Even 700MB might be too much. So, you can download "net installers" which are substantially smaller images. These installers come in two flavors- businesscard and netinst. The businesscard images are designed to be burned on business card CDs, which only hold 50MB total. As a result, these are great to carry in wallets (I do myself) should you be a Debian system administrator. The netinst image is a bit bigger, roughly ~170MB, give or take. The different with these from the business card images is they contain the base software on the ISO, where the business card relies on an external software repository for that.
Aside from ISOs, you can install Debian from a USB drive, PXE or from a local hard disk should you desire. Debian ships expansive documentation covering how to do each of these in detail, so you're not left stranded.
Part of what makes Debian GNU/Linux the universal operating system is the architecture itself. The developers of Debian want to reach as many people as possible with the widest array of hardware and software, while not compromising the philosophies in regards to software itself. As such, the developers of Debian have split the software repositories into 6 repositories:
- oldstable: This is the release that was previously the "stable" release. This software is supported for one year by the security team after it has become "oldstable". If a new stable release happens within that year, then this release will become "oldoldstable" for the remainder of the year, with the new oldstable receiving a new full year of security updates. This is currently aliased to "etch".
- stable: This is currently aliased to "lenny". The stable release is the officially supported release by the security team, meaning that security updates and bug fixes are applied in a timely manner.
- testing: This release becomes the test bed for the next stable release. It has filed against it a number of "release critical" bugs. This count must reach as close to zero as humanly possible, while still keeping the idea of a close release at hand before becoming the next stable. Packages enter this release from the "unstable" branch only after a stringent testing criteria. The testing criteria is:
- It must have been in unstable for 10, 5 or 2 days, depending on the urgency of the upload.
- It must be compiled and up to date on all architectures it has previously been compiled for in unstable.
- It must have fewer release-critical bugs than, or the same number as, the version currently in "testing".
- All of its dependencies must either be satisfiable by packages already in "testing", or be satisfiable by the group of packages which are going to be installed at the same time.
- The operation of installing the package into "testing" must not break any packages currently in "testing".
A package which is said to pass 3 of the above criteria is said to be a "valid candidate". Packages in this release do not get security updates from the security team. This release is currently aliased to "squeeze". This release is also coined a "rolling release" as there are no release dates, but updates come in on a near daily basis, fixing bugs and preparing for the next stable release.
- unstable: As the release name implies, packages here are not guaranteed to be stable. Packages could break other packages in this release, and regularly do. Security updates are not applied to packages in this release, however, due to the nature of the release, most packages here are bleeding edge with the latest versions. This release is permanently aliased to "sid". It is also considered a "rolling release" like testing.
- experimental: This release is not indented for installs. It is solely suited for package building, testing and signing. Packages entering this release have just come through the package queue, and are brand new, usually upstream as well. Quite often, packages here are still in development, usually alpha quality. Packages should not be installed from here, as they can be potentially dangerous to your system, even for experienced users.
- volatile: The packages in the stable release sometimes get old out outdated, as the time between releases could be great. This not only includes binaries, but configuration files, libraries, databases and other pieces of software. As such, the volatile release is aimed at keeping things, such as configuration files, more up-to-date. For example, spam blacklists for SMTP servers. It is important for administrators to keep on top of their spam, so keeping up-to-date spam definitions is critical. This release supplies these definitions. Generally, binaries are not included in this release. All package dependencies in this release are satisfiable in the stable release.
Aside from the 6 software releases, of which stable, testing and unstable are named after Toy Story characters from the Disney/Pixar movie, Debian GNU/Linux ships 4 kernels as well. This is part of the reason for the name "Debian GNU/Linux" as the name implies that Debian is an operating system that comprises of mostly GNU software with the Linux kernel. However, other kernels and software can be added. As such, the four kernels we have are:
- Debian GNU/Linux
- Debian GNU/kFreeBSD
- Debian GNU/Hurd
- Debian GNU/NetBSD
Debian GNU/kFreeBSD is the furthest developed of the three kernels outside of the Linux kernel mentioned above. Currently, the FreeBSD kernel has landed in the "testing" release, meaning it will be fully supported by the security team for the next "stable" release, codenamed "Squeeze". Advantages of this bring the ZFS filesystem to the Debian userland, and the PF firewall from OpenBSD. Debian GNU/kFreeBSD will only be supported on two architectures out the gate, namely i386 and amd64. Debian GNU/Hurd and Debian GNU/NetBSD are still under active and heavy development. In fact, the Debian project seems to be doing more for the Hurd kernel than the GNU project itself, as most Hurd developers are also Debian developers.
If this isn't enough, when the Linux kernel initially released, it only supported Intel 386 back in 1991. Fast forward nearly 20 years later, and the Linux kernel supports a massive array of CPU architectures. The Debian project has strived hard to reach as many of them as they can. As such, under the current stable release, Debian GNU/Linux supports 12 CPU architectures, namely:
- EABI ARM ("ARMEL")
- HP PA-RISC
- Intel x86
- Intel IA-64
- MIPS (big endian)
- MIPS (little endian ("MIPSEL"))
- IBM S/390
There are three additional CPU architectures that are under development, and will probably find their way into a "stable" release. They are:
- Armeb (big endian ARM processors)
- Atmel's 32-bit RISC
- Hitachi SuperH
- Renesas Technology's 32-bit RISC
Now granted, not all of the software that is available for the Debian operating system is available on every architecture. The Intel processors get the most attention obviously, as they hold the largest market share. But, package support for each architecture is growing, and the heavy hitters in the packages selection are likely already compiled for that architecture, such as Apache, NFS, OpenLDAP, GNOME, etc. NetBSD might be the only other operating system in the world with more hardware support than Debian.
Coupled with all this software and hardware that Debian GNU/Linux supports, you can choose your software based on your personal philosophies toward software freedom. The Debain project prides itself in being an operating system that ships Free Software as defined by the GNU project. As such, by default, a Debian operating system will only ship Free Software, leaving the proprietary software out. However, holding true to the universal operating system paradigm, they have made proprietary software available for installation, should you choose to use it. So, they've split out their software repositories as follows:
- main: This repository holds the bulk of software installable from Debian. All software in this repository is deemed Free Software as defined by the Debian Free Software Guidelines (see Appendix). This is the only repository enabled by default on a new Debian GNU/Linux install.
- contrib: This repository also contains Free Software, however, it might rely on proprietary counterparts, such as images or media codecs. This repository must be added by the user manually after install.
- non-free: This repository contains only proprietary software, or software licensed such that it does not meet the Deian Free Software Guidelines. This repository must be added by the user manually after install.
Because the Debian project is a community-driven project run entirely by volunteers in many countries across the world, it also strives to provide package translation for as many languages as possible. Unlike Red Hat, who can say they support 19 languages out the box, Debian has provided package translation, mostly in part, for nearly 250 languages! However, most of these translations are works in progress, and are not considered complete. If you speak one of these languages, feel free to join in on translating packages to get Debian closer to complete in this area.
Outlining the vast array of software and hardware that Debian supports, coupled with the flexible installer, and package translation for hundreds of languages, truly makes Debian the universal operating system. Nevermind the fact that Debian also appeals to a large crowd of users. Everyone from complete "newbs" to the ultimate hardcore hacker can easily fit within the Debian ecosystem.