Thursday, July 24, 2008

Linux sucks: Hardware drivers

Today, I'm going to talk about the sad state of Linux's hardware drivers.

Drivers are something you need to use a modern computer. Computer manufactures, in order to reduce the cost of computers, constantly change the hardware a computer uses. This isn't a problem normally; one simply downloads the drivers for the new hardware and everything works fine.

Well, it's not a problem in Windows. See, Microsoft has made it as easy as possible to make a driver in Windows. Once a driver is made, that driver is guaranteed to work for years. Indeed, most XP drivers work just fine in Vista; Microsoft went to a lot of effort to make sure, when you upgrade the OS, the hardware still works.

This level of stability goes both ways. Installing Windows XP on new hardware is possible; installing a version of Linux from the same era (RedHat Enterprise Linux 3 or CentOS 3) on a new computer is impossible.

The problem is that Linux doesn't have a unified driver model. Drivers frequently break between minor kernel versions and forget about having a new driver work with an older kernel.

This is a real-world problem. I bought a Linux compatible notebook. I very specifically chose hardware that would work with Linux with the minimum of hassle. When Ubuntu proved to be unusable (the wireless driver never worked with a static IP and one day just stopped working altogether), I put CentOS 5.2 on this computer.

The video card finally worked with CentOS; X, unlike the kernel, is pretty stable about their driver API. The sound card doesn't work. I only got the networking card to work by installing a third-party driver; it's an older driver version and has an issue with crashing if I don't send traffic over the wireless interface; I usually have a process ping the gateway router once a second, which causes the problem to not manifest itself.

I wish the core kernel developers would find something more productive to do with their time than constantly changing the kernel-level API and ABI for drivers, breaking drivers and making it nay-to-impossible to backport drivers for new hardware.

This is one area where Windows clearly kicks Linux's ass: Drivers. Drivers for a given version of Windows are pretty much guaranteed to work for at least five years. This laptop has no problem working in Windows XP, a seven-year-old OS; none of this laptop's hardware works with a circa-1991 era Linux kernel (yes, I tried this), since new drivers don't work with older kernels.

Wednesday, July 23, 2008

OK, I just didn't publish two poor arguments

OK, a couple of people tried publishing some rather pathetic arguments trying to argue that Linux is not a commercial failure. Pathetic argument number one:
If you're technically competent enough to use Linux, you're probably not buying Dell computers voluntarily
Bzzt. Argumentum ad hominem. Please play again. Let's see. I'm technically competent enough to use Linux. Hell, I'm technically competent enough to create my own Linux distribution. I use a Dell. They're fine computers.

And a couple of dumb arguments from another person:
However, calling Linux a "commercial failure" with "less than 1% marketshare" is wrong.
Ok, nice assertion. Does this person have any stats to back up their argument. Let's see:
The stats for the sites that I work with show between 5% and 7% Linux market share
Bzzt. Anecdotal evidence. I specifically asked the fanboys to not post that kind of evidence; I wish fanboys would, like, actually read my blog entries before trying to comment.

This particular person posted some other arguments:
You can't really point to Dell stats until the mainstream customization form has a radio button for Ubuntu for $50 less than Windows
Err, if a significant number of users wanted Linux on their computers, the Dell Linux program would have been successful enough for them to do that. The fact of the matter is that Dell doesn't want to deal with the support nightmare of average users finding this (to them) monstrosity called Linux on their computer because they clicked the wrong button. This is why Dell makes people go out of their way to get Linux.

It's difficult to buy a Toyota Prius. You have to get signed up and go on a waiting list to get one. The wait can sometimes be months. Despite this, the Prius is extremely popular. To get a Dell with Linux, all you have to do is go to go to this page and order your Dell from there. Much easier than getting a Prius, yet Linux computers aren't exactly selling like hotcakes.

This user also pointed out that Dell specials don't exist for Linux computers. Not true; a year ago there was a Dell special that existed for Windows, not Linux, on the 1420, and it even made it to the Slashdot front page. So much stink was raised about it, Dell recanted and made the special available for Linux users also.

Anyway, if you want to post your fanboy arguments, please do so in the Linux haters blog. Any other posts trying to argue that everyone is secretly using Linux instead of Windows on the desktop, or that more than 2% of desktop users use Linux will not be published. Save your rant for the Linux haters blog.

My next article will be about the reasons why Linux has failed on the desktop.

Tuesday, July 22, 2008

Deadwood update

OK, as of today I have ended my break with MaraDNS.

I have just updated Deadwood, which is the next-generation recursive core for MaraDNS. There is a bug where sometimes an empty packet would get in to the cache. This is a big deal; an empty packet in the cache will cause Deadwood to be unable to resolve the name in question until the packet is flushed from the cache.

The update to Deadwood doesn't resolve why these empty packets get in the cache, but works around the issue by making sure any packet from the cache is not empty. Cached empty packets are deleted when seen and then the packet is re-cached.

This resolves the problem I have seen with Deadwood this last week where, every now and then, I'm not able to go to a web page.

In addition, I have revamped the signal handling code so that, when stopping Deadwood with Control-C, Deadwood will write the cache to disk before terminating. This resolves the annoyance of having to open up another windows and send Deadwood a signal if I want the updated cache written.

It can be downloaded here:

- Sam

Thursday, July 17, 2008

Another Deadwood bug

It would seem Deadwood sometimes caches "null" entries; these are entries that don't have any actual answers. I should add a check for that.

Maybe this weekend.

Sunday, July 13, 2008

Linux is a commercial failure

If you buy a Dell computer with Linux preinstalled, you get two benefits:
  • The computer is about $50 cheaper than the equivalent Windows computer
  • The computer's hardware is known to work with Linux
Despite this, for every Dell computer with Linux preinstalled sold, there are some 150 Windows computers sold. Yes, guys, less than 1 percent of people who purchase Dell computers chose to use Linux instead of Windows. [1]

What does this mean? It means no one wants to use Linux on the desktop.

Now, I am aware how Linux fanboys think. Before you try and post the usual "But those statistics are wrong" spiel, other statistics say pretty much the same thing; browser stats at web sites; Loki's failure; etc. If you want to question these statistics, do so with solid evidence showing that more than, oh, 5 percent of desktop users using Linux. And don't waste my time with "Me and my three buddies all use Linux" antecedents. [2]

So, in my next articles, I will talk about why it is, some 14 years after Linux 1.0 was released it has made no headway on the desktop.

- Sam

[1] The volume of Linux computers purchased is still some 40,000 computers purchased per month.

[2] Comments are moderated and regurgitations of these spiels will not be approved. Come up with something original, guys.

Thursday, July 10, 2008

Linux Sucks: Clarification

I noticed that my last Linux sucks article wasn't clear about how I borked my Linux install, so I will explain what happened more clearly:

I installed CentOS 5.2. I like a distribution that works and will continue to work, complete with security bugs being patched, without having to reinstall the OS every 6 months. You know, like Windows. Also, I used RedHat from 1997 until 2004, and a combination of Fedora and CentOS from 2004 until mid-2007, so I'm more comfortable with an RPM-based distribution than a .deb-based one, since, among other reasons, Debian packagers are known to add security bugs to programs.

I then went to atrpms to get drivers for my wireless card. These RPMS are designed to work with CentOS/RHEL, and I only installed the drivers for my wireless card.

Anyway, the atrpms wasn't what borked my system.

What borked my system was going to, downloading the CentOS updates, and starting to install them by hand. You know, like how one updated RPM-based distributions for years.

It would have been fine if I had RTFM and did "rpm -e --allmatches --nodeps"; however I thought fixing this with rpm was impossible because "rpm -e -f" doesn't do the right thing ("-f" here really ought to be treated like "--allmatches --nodeps". Maybe one day I'll submit a patch).

Once I had the xulrunner rpm corrupting my database making "yum update" impossible, I did a Google search on various terms ("Same RPM installed twice", "Corrupt RPM database", etc) and the answers I saw told me to edit files in /var/lib/rpm by hand. So I did that, which completely broke things and forced a reinstall of CentOS.

And, oh, I do have some things in /usr/local/bin. Among other things, version 1 of the FVWM window manager and version 3.96 of the Lame mp3 encoder (which I feel sounds better than Lame 3.97). And, no, that isn't what caused the problem.

- Sam

Wednesday, July 9, 2008

MaraDNS is immune to the new cache poisoning attack.

MaraDNS is immune to the new cache poisoning attack. MaraDNS has always been immune to this attack. Ditto with Deadwood (indeed, people can use MaraDNS or Deadwood on the loopback interface to protect their machines from this attack).

OK, basically, this is an old problem DJB wrote about well over seven years ago. The solution is to randomize both the query ID and the source port; MaraDNS/Deadwood do this (and have been doing this since around the time of their first public releases that could resolve DNS queries) using a cryptographically strong random number generator (MaraDNS uses an AES variant; Deadwood uses the 32-bit version of Radio Gatun).

The only issue is Windows users not using Cygwin; please make sure random_seed_file points to a text file with secret that is at least 16 bytes long.

Monday, July 7, 2008

Linux sucks

Linux sucks.

I have had nothing but problems with Linux. I installed xUbuntu 8.04 (or so) 64-bit. It was OK for a while, but all of the network cards stopped working recently.

No big deal; I was in the process of trying out CentOS 5.2.

So, I installed CentOS 5.2. The video card worked; the sound card and wireless card didn't work. I was able to find some RPMs on the internet for the wireless card, installed the RPMs, then tried to run "yum upgrade".

It didn't work.

It would seem that, for some reason, the same rpm was installed twice. It's impossible to erase an rpm that's installed twice because rpm complains that you're referring to more than one rpm package. "rpm --rebuilddb" doesn't fix the problem either.

So, I tried editing /var/lib/rpm/Packages and renaming one of the two RPM packages. Unfortunately, the version of vi I was using decided to convert the character encoding of the file, and I didn't make a backup. So I lost my entire rpm database.

So now I have to reinstall the OS from the ground up.

Linux sucks.

Wednesday, July 2, 2008

Unbound: A new DNS server

Just today, I became aware of a new DNS server, Unbound. This DNS server appears to come from the same group who gave us the authoritative-only NSD a few years ago; basically this is, if you will, the recursive half of NSD.

I haven't updated my list of DNS servers to incorporate this DNS server, but am impressed the DNS server got mentioned both in Infoworld and on CNN's web page.