O P E R A T I N G S Y S T E M P O R T S
In my signature I make the claim that NetBSD is the `most widely ported operating system in the world.' This has been disputed by some people, usually in favour of Linux. I've put this page together to show that, using most reasonable counts, my claim is true.
If you find any factual errors here, please drop a note to me at cjs@cynic.net so I can verify and correct this page. Please include references. If you feel you have a way of counting that shows that NetBSD is not the most widely ported OS in the world, send me e-mail and perhaps I'll put up a note here about it.
To start with, I should note that I consider a `port' to be a kernel with a full set of facilities, running a userland essentially identical to that of the other ports. This pretty much limits ports to machines that support:
This gives you the capabilities to run a full set of kernel features, including
I should make it clear here that I am not saying that something without all of the above features is not an operating system. I'm saying that a `port' of NetBSD that doesn't support these features is an incomplete port. Other operating systems will have their own, different feature lists of course. This means that there are limits to what machines you can port an OS to, of course. You can put some software on a toaster and call it `Linux,' but I don't consider it to be Linux unless you've got a pretty darn sophicsticated toaster with an MMU and the like in it.
You should also have the capability to build and run programs ported to your OS on every platform the OS is ported to with no source changes. This includes programs such as
This is basically an expansion of my litmus test for a `real' port, versus a different version of the OS. The question I ask is, `can I log in over the network administer the machine, compile and install various sources, and never worry (or even know) which particular hardware I'm running on?'
These critera exclude many machines that Linux users claim to be `ports,' typically stripped-down versions of Linux running on CPUs without memory management or on handheld computers with very limited hardware.
The following are ways one can look at how `ported' an OS is. I compare NetBSD with Linux in the examples below, because Linux is, as far as I can tell, the second contender in most of these categories. If there is another OS out there that should be here, let me know.
Note that here I compare the most recent versions available (often known as `development versions,' rather than `releases'. However, I do have some minimum requirements; while the development version doesn't have to be as rock solid and bug-free as the i386 port of the OS (typically be best port), it does have to boot multi-user and be able to rebuild itself, as well as run unchanged third-party software that the other ports run.
NetBSD has been ported to the following CPUs:
NetBSD almost always supports the greatest number of systems using any particular CPU family. (If you know of exceptions to this rule, let me know.)
As examples:
NetBSD is likely to stay ahead of Linux in this area for the forseeable future, since Linux folks have to do a lot more work to keep their ports up to date. This is because Linux developers tend to use a separate development tree for each port, so a machine-independant feature added to the i386 kernel won't automatically appear in an m68k kernel, for example.
Under NetBSD, device drivers are not specific to machines, but to chips. This means that all ports use a single driver for a particular chip which talks to the software that deals with the appropriate I/O bus. This means, for example, that NetBSD has one driver for a Lance Ethernet chip, whether it be on an ISA card in an i386, a PCI card in an Alpha, an SBus card in a Sparc, or the on-board I/O on a Sun 3. You can take an ISA or PCI card from a PC, put it into an Alpha, and it will Just Work. No other operating system has this sort of device independence. This means that while Linux may support a huge number of peripherals on an i386, the support on an alpha is much more limited.
My information on NetBSD ports comes from the NetBSD web pages, at http://www.netbsd.org/ .
Most of my information on Linux ports comes from the following pages:
http://www.linux.org/projects/ports.htmlNote that you can't actually count ports from any of these, since they list ports that don't exist. (All list the `VAX port,' for example, which currently consists of nothing but a boot loader.)
http://www.ctv.es/USERS/xose/linux/linux_ports.html
http://metalab.unc.edu/LDP/devel.html