Revisiting Linux Part 1: A Look at Ubuntu 8.04
by Ryan Smith on August 26, 2009 12:00 AM EST- Posted in
- Linux
A Word on Drivers and Compatibility
As we mentioned earlier, Ubuntu and the Linux kernel are open source projects, particularly under the GPL license. In large part due to the philosophies of the GPL, compared to Mac OS X and Windows, Linux handles drivers in a notably different fashion.
In a nutshell, the developers of the Linux kernel believe in the open source movement and wish for all related software to be open source. Furthermore they do not like the implications of attaching a closed source “binary blob” driver to the Linux kernel, because if something goes wrong it can be impossible to debug the issue if it occurs in the driver for which they do not have the code for. As such they have moral and technical objections to the Linux kernel supporting external drivers and actively prevent the creation of such drivers. This is done through mechanisms such as not having a fixed API for external drivers, and by not artificially keeping themselves from making changes to the kernel that would break external drivers. Drivers that they do have the code for can usually just be recompiled against the new kernel and are unaffected as a result. The result is that “binary blob” drivers are systematically opposed.
For the most part, this works fine. Not all hardware is supported under Linux because not everyone is willing to share the specifications and data needed to make a driver, but more than enough device manufacturers are willing to share such data that Linux generally supports non-esoteric hardware quite well. There is one class of notable hold-outs here however, and that’s the GPU manufacturers, namely ATI and NVIDIA.
Compared to other drivers, GPU drivers are different for two reasons. First is the sheer complexity of the drivers - besides interfacing with the hardware, the drivers are responsible for memory management, compiling/optimizing shader code, and providing a great deal of feedback. This in essence makes GPU drivers their own little operating system – one that its developers aren’t necessarily willing to share. The second significant difference here is because of the above, GPU drivers are among the only drivers that have a compelling reason to be updated regularly; they need to be updated to better support newer games and fix bugs in the complex code that runs through them.
Complicating matters further is that some intellectual property in GPUs and drivers is not the property of the company who makes the GPU. AMD doesn’t own everything in their Universal Video Decoder, and just about everyone has some SGI IP in their drivers. In the interest of protecting that IP, it is difficult to release the code for those drivers containing other companies’ IP.
Because of all of this, manufacturer-supplied GPU drivers are not always open source. Intel and S3 do well in this respect (largely because they have few tricks to hide, I suspect), but hyper-competitive NVIDIA and AMD do not. AMD has been looking to rectify this, and back in 2007 we discussed their starting work on a new open source driver. Development has been progressing slowly, and for the R6xx and R7xx hardware, the open source driver is not yet complete. Meanwhile NVIDIA has shown no real interest in an open source driver for their current hardware.
So if you want to use a modern, high-performance video card with Linux, you have little choice but to also deal with a binary blob driver for that card, and this becomes problematic since as we mentioned Linux is designed to discourage such a thing. Both AMD and NVIDIA have found ways around this, but the cost is that installing a binary driver is neither easy, or bug free.
The fundamental method that both use for accomplishing this is through the use of a kernel shim. Both analyze the headers for the kernel to identify how the kernel is organized, then they compile a shim against that kernel. The shim resolves the issues with the lack of a stable API, and the other end of the shim provides the stable API that NVIDIA and ATI need.
Ubuntu in particular takes this one step further, and in the interest of promoting greater out of the box hardware compatibility, includes a version of the binary drivers with the distribution. This is unusual for a Linux distribution and has earned Ubuntu some flak since it’s not strictly adhering to some open source ideals, but it also means that we were not forced to play with driver installers to get Ubuntu fully working. Ubuntu had no issues with both our AMD 2900XT and NVIDIA 8800GTX cards, both of which were picked specifically because we wished to test Ubuntu on suitably old hardware which would exist in time for Ubuntu to include support for it. With that said, the drivers Ubuntu includes are understandably old (once again owing to the idea of a stable platform) which means we can’t avoid installing drivers if we want better performance and application compatibility.
And this is where “easy” comes to an end. We’ll first start with AMD’s installer, the easier of the two. They have a GUI installer that puts in a driver along with a Linux version of the Catalyst Control Center. It’s Spartan, but it gets the job done.
NVIDIA on the other hand does not have a GUI installer – their installer is a text mode installer that requires shutting down the X server (the GUI) in order to install. It’s difficult to understate just how hard this makes driver installation. Not only is doing all of this completely non-obvious, but it requires interfacing with the CLI in a way we were specifically trying to avoid. It’s something that becomes bearable with experience, but I can’t call it acceptable.
Driver upgrades are an issue on both sides, because the installers are not completely capable of finding and eliminating older versions of the binary drivers. In one instance, for the NVIDIA drivers we had to track down a rather sizable shell script that automatically deleted the old drivers before installing the new ones, as that was deemed the “right” way to install the drivers. We had less of an issue with ATI’s drivers, but to be fair the primary card I used for my time with Ubuntu was the 8800GTX. I can’t confidently say that there are not other issues that I may have not run in to.
The Ubuntu community does supply tools to help with GPU driver installations, Once such tool is EnvyNG, which reduces the driver installation process to selecting what driver you want to install and it does the rest. This is a far easier way to install drivers, in the right situation it’s even easier than it already is under Windows. But it suffers from needing to have the latest driver data hardcoded in to it, which means you can only use it to install drivers it knows about, and nothing newer. It’s not regularly updated (as of this writing the latest driver versions it has are NV 173.14.12 and ATI Catalyst 8.6) so it’s good for installing newer drivers, but not the newest drivers.
The other tool is access to Ubuntu’s Personal Package Archives, which are a collection of user-built binaries that can be installed through the Ubuntu package manager (more on this later). It’s harder to use than EnvyNG, but anyone can build a PPA, which makes updates more likely. As it’s user-generated however, this still means that there won’t always be the latest drivers available, which means we’re still back to using ATI and NVIDIA’s installers.
As it stands, installing new GPU drivers on Ubuntu is between an annoyance and unbearable, depending on how many hoops you need to jump through. It’s certainly not easy.
The other problem with GPU drivers is that they do not always stay working. Among the issues we encountered was ATI’s driver failing to work after installing an Ubuntu update, and an NVIDIA driver that kept rebooting the system during testing for reasons we never determined (once we wiped the system, all was well).
Our final issue with the state of GPU drivers on Ubuntu is their overall quality. With a bit of digging we can come up with issues on both sides of the isle, so it’s not as if either side is clean here. But with that said, we only ended up experiencing issues with ATI’s drivers. We encountered some oddities when moving windows that was eventually fixed in the Catalyst 9.3 drivers. It turns out that the problem was that ATI’s drivers lacked support for redirected OpenGL rendering; Linux guru Phoronix has a great article on what this is, including videos, that explains the importance of this change.
Ultimately we hate to sound like we’re beating a dead horse here, but we can’t ignore the GPU driver situation on Ubuntu (and really, Linux as a whole). The drivers have too many issues, and installing newer drivers to fix those issues is too hard. Things could be worse, Ubuntu could only distribute driver updates with OS updates ala Apple, but they could also be better. For the moment it’s the weakest point for Ubuntu when it comes to installing it on a high-end system.
195 Comments
View All Comments
brennans - Sunday, August 30, 2009 - link
I use both XP64 and Hardy (Ubuntu 8.04).I am also a power user.
Both these operating systems have pros and cons.
Cons for XP64:
1. It does not recognize my hardware properly.
2. Finding 64 bit drivers was/is a mission.
Cons for Hardy:
1. It does not plug and play with my hardware (i have to compile the drivers).
2. Not as user friendly as windows.
Pros for XP64:
1. Windowing system is super fast.
2. User friendly.
Pros for Hardy:
1. Recognizes my hardware.
2. Command line tools are awesome.
Conclusion:
I think that the article was good.
I am one of those people who has always had problems installing windows straight out of the box and thus find that paying a large amount of money for their buggy OS is unacceptable.
I can get a lot of stuff done with Hardy and it is free and if I find a problem with it I can potentially fix that problem.
I also find it unacceptable that manufacturers do not write software (drivers or application software for their devices) for Linux.
For me, it is difficult to live without both XP64 and Hardy.
ciukacz - Sunday, August 30, 2009 - link
http://www.iozone.org/">http://www.iozone.org/JJWV - Sunday, August 30, 2009 - link
How can people use something like Aero and its Linux or OSX equivalents (that pre-dates it if I am not mistaken) ? The noise is just hiding the information. Transparency is one issue, another are those icons that are more like pictures : one looses the instant recognition. With Aero knowing which is the active window is not something obvious, you have to look at small details. The title of the window is surrounded by mist making it more difficult to read. Even with XP the colour gradient in a title bar is just noise : there is no information conveyed by it.The OS GUIs are more and more looking like those weird media players, with an image of rotary button that is to be manipulated like a slide button.
The evolution of all applications to a web interface reminds me of the prehistory of personal computers : each program has its own interface.
The MS Office Ribbon UI is just in the same vein: more than 20 icons on each tab. The icon interface is based on instant recognition and comprehension, when you have so many it turns into a mnemonics exercise. And of course with MS one does not have a choice : you just have to adapt to the program. An end user is only there to be of service to the programs ;-)
If i want to look at a beautiful image I will do it, but the when I want to write an letter or update a database all those ultra kitsch visual effects are just annoying.
As a summary the noise is killing the information and thus the usability.
Ronald Pottol - Saturday, August 29, 2009 - link
The thing with windows has been seen before, back in the win 3.1-OS/2 days it was found that while one instance of excel didn't run any faster under OS/2, two in separate VMs (ok, not technically the same thing) ran in about the same time as one on windows.I like the package management, and hate when I have to install something that doesn't support it, it means I have to worry about updates all my self. If they have one, they I get updates every time I check for Ubuntu updates, very handy. Nice to get the nightly Google Chrome builds, for instance (still alpha/very beta).
Frankly, supporting binary kernel drivers would be insane. Now they are stuck supporting code they cannot look at and cannot fix, they cannot fix their mistakes (or are stuck emulating them forever). If they supported them, there would be even more of them, and when they wanted to fix something broken or that was a bad idea, they would have to wait a reasonable amount of time before doing it, so it would be supported. Frankly, I don't see why people don't have automated frameworks for doing this and automated deb/rpm repository generation. I add their repository, when I get a kernel update, perhaps it is held up a day for their system to automatically build a new version, but then it all installs, instead, I am stuck with having to run a very old kernel, or not having 3D on my laptop, for instance.
cesarc - Sunday, August 30, 2009 - link
I found this article very interesting, because is oriented to windows user and is helpful to them because you just didn't die trying it.But you can't blame ubuntu (or any distro), about the pain in the ass a video card's drive could be to install, blame ati and nvidia for been lazy, and if using wine for playing games is not as good as playing in windows blame games company for don't release a GNU/linux version.
Also, the thing about why GNU/linux overpass windows in file management is because ntfs is a BAD file system, maybe if windows somehow could run under ext3 would be even better than it is.
And why your negligence to use a console (stop saying cli please), you are not opening your mind trying to use GNU/linux as a windows just because it is not windows is a completely different os. Look from this point of view... something that you can do in windows with 5 clicks maybe you can do it in GNU/linux in just one line of bash code. So, sometimes you will use GUI and others you will use console and you will find that having this options is very comfortable. So start using the console and do the same article a year later.
I hope some day have a paid version of GNU/linux (still open source), that could pay salaries to programers to fix specific issues in the OS.
In the other hand, when you do the IT benchmark is very disappointing that you don't use linux with those beautiful Xeons. Servers environment is were GNU/linux get stronger. And Xeons with windows are just toys compared with unix on sparcs or power architectures.
PS: try to get 450 days of uptime in a windows 2003.
rkerns - Saturday, August 29, 2009 - link
Ryan,Thanks for your good work.
Many people considering linux are still on dial-up. These are often folks with lesser expertise who just want to get connected and use their computer in basic ways. But getting connected with dial-up is something of an adventure with many distros and/or versions. Ubuntu 9.04 has moved away from easy dial-up, but Mint7KDE includes KPPP for simple dial-up connection. Mint7KDE has other nice features as well.
I am asking you to expand your current picture of the landscape to include people who want to use linux with a dial-up connection. This of course would have to include a brief discussion of 1) appropriate modems and 2) distro differences. Thanks,
r kerns
William Gaatjes - Saturday, August 29, 2009 - link
GRATIShijg hijg hijg hijg
hijg hijg hijg hijg
lgude - Saturday, August 29, 2009 - link
Really glad to find this in depth article after all this time. Thank you Ryan. I too have run Ubuntu as my main OS even though most of my experience is in Windows and have had similar experiences. Because this was a very long article it got into detail about things like the Package Manager or the multiple desktops that I have not seen discussed elsewhere from a user perspective. As someone else pointed out it is moot what people would like or complain about if they were moving from Linux to Windows or OSX, but imagine for a moment if they were used to getting the OS and all their apps updated in one hit and were asked to do it one app at a time and expected to pay for the privilege!If you go on with the Linux series I'd like to see discussion of the upcoming Ubuntu and other distros - I've been impressed with SUSE. I'd also like to see projects on how to build a Linux server and HTPC - including choice of distro and the kind of hardware needed. I'm less sure of where benchmarking is really useful - the tradition of detailed benchmarking at AT arose from the interest in overclocking and gaming which I think is a much lesser consideration in Linux. More relevant might be comparisons of netbook specific distros or how to work out if that old P4 will do as a home server. There is a lot of buzz in the tech world about things like Symbion, Chrome OS, Moblin, Maemo on portable devices that could possibly draw new readers to the Linux tab at AT. A great start in any case.
jmvaughn - Saturday, August 29, 2009 - link
I just wanted to say thank you to the author for a very thorough article. After reading it, I decided to use Ubuntu for a PC I'm building out of spare parts for a retired friend who's on fixed income. My friend just uses web, e-mail, and some word processing, so this will be perfect.The article gave me a good idea of what to expect -- a good honest appraisal with all the good and bad. After installing Ubuntu 9.0.4, I am very impressed. The install was very quick, and easier than XP. Everything is quite snappy, even though it's running on a AMD 3800+ single core processor and an old hard drive.
xchrissypoox - Saturday, August 29, 2009 - link
I only skimmed the article (I saw the part on gaming being poor), I'd like to see a comparison of several games using the same hardware on windows and linux (results given in fps). If this has been mentioned sorry and good day.