Simplifying Linux Driver Installation
prostoalex writes "O'Reilly Network posts an update on Project Utopia that produced Hardware Abstraction Layer for Linux simplifying device changes. They also link to the Driver on Demand project on SourceForge, whose goal is to create a central database to enable Linux desktops download the drivers automatically when the user plugs in her new hardware device."
For what it's worth, I'm somewhat sympathetic to Linus. Look at what HAL did for/to Windows. Crappy driver/HAL implementations were responsible for a lot of Windows perceived and real stability problems. Now Microsoft likes to certify drivers (WHQL), so they only take the blame for their own damn bugs.
Basically, it's a double-edged sword. Convenience vs. Stability. Personally, I think if Linus is serious about the desktop there needs to be some compomise. Me, I just dumped Linux on the desktop for my sweet new OS X system. Viva la UNIX!
Just as soon as KDE and Gnome merge, and XP gets Final Cut Pro - never gonna happen.. too many egos in the way.
It is obvious that I as an corporate user, would refuse to install *anything* on my Linux system that has not gone through my distributor. After all, that's why I pay them. And pushing third-party binary modules in my running kernel would be a very quick way of nullifying their support agreements.
For the home user, things might well be different. But most people are running a distribution anyway, and would probably feel more comfortable getting drivers from them. That's how they get the security updates, so both the trust and the technical procedure is already in place. So if the distributors are to share the workload of getting these drivers, then a open project may be the right way -- but only for distributing the module source. Not many users would get drivers from here (Gentoo users come to mind).
The article has an ivory-tower stance to it and I think they solve the wrong problem. First we need to establish what the problem actually is. If the drivers are few and small then all drivers could be included in a typical distribution and updated with the rest of the system. Perhaps all that is needed is for distribution to update their kernel packages more often?
Question for the Kernel coders, what perctage of drivers are reverse engineered?? 60-70%
The percentage would be near 0% if not 0%. Plenty of hardware manufacturers have released open or open-enough programming specifications for their hardware. Intel, AMD and National Semiconductor are a few examples.
For example, here are the programming specifications for my network card, a Netgear FA312 - DP83815 10 100 Mb s Integrated PCI Ethernet Media Access Controller and Physical Layer (MacPhyter)
Companies like NVidia and ATi are the exception, not the rule.
The Internet's nature is peer to peer - 20050301_cs_profs.pdf
Hardware Abstraction Layers are VERY old. Even the 6502 based Commodore computer series (PET, VC20, C64 et. al.) had some kind of HAL, it was called the Kernel ROM, and developers were strongly encouraged to use the I/O-Routines provided by the Kernel ROM instead of writing their own.
The whole point of the VM/CMS operation system from IBM was hardware abstraction. That's where the name comes from: Virtual Machine CMS. VM/CMS was providing an abstract CMS system (CMS being the predecessor of VM/CMS) for each process or task, so you could use multiple virtual CMS systems on your hardware.
Just because WinNT uses hardware abstraction doesn't make it an innovative idea from Microsoft.
Same about KDevelop. Ever used an OSF Motif Toolkit? They are around since the early days of Motif (around 1988), and the Visual series from Microsoft could easily be called an ripoff. Not to forget the Turbo Pascal/Borland Pascal/Delphi IDEs or again IBM with the VisualAge series of compilers.
The real power of Microsoft is not innovation, it is the sheer manpower and organisation they have to integrate ideas that proved to work into a single, quite coherent system (even though in the beginning, Microsoft's offerings didn't integrate very well into each other... The first MS Office suites for instance had different file dialogs in every program, and different ways to set up the printer... but it got better every version).
And for becoming "more and more similar to Windows": If the default installation is in a substantial way different than Windows, the whining goes: "Steep learning curve! It's too different!". If the differences are hidden, then the whining is: "It's becoming more and more Windows! Where is the innovation?" It seems as if the GUI developers have to choose between Scylla and Charybdis here.
But disk activity kills the machine. It's a laptop, so disk access is a little slow, but if I work with large files (open, close, save, copy, etc) especiallyi zip/rar files (lots of file operations) the system begins to slow to a crawl. Now I understand that the disk activity can slow the computer, but after all the transfers are complete, the computer is still slow. Opening IE goes from near instant (before all that) to seconds of the computer chugging. After that if I close IE and open it again, it still has to chug to open it (so it's not some simple cache thing). The computer is just slow as heck to respond to anything untill I reboot it. At that point it's fine! The same happens after defragging my disk if it's bad (and requires lots of operations to fix it).
I swear, it's like there is some internal limit in Windows when after a certain number of file operations, the system purposly slows down. Frankly I wouldn't be suprised if a little box popped up saying "You are doing too much heavy disk activity. Please buy Windows Server .Net 2003 for better performance" or something.
Never happens with Linux on the same machine, so it has to be something Windows is doing. Windows has gotten much MUCH better from the 3.1/95 days, but it still has some problems.
Comment forecast: Bits of genius surrounded by a sea of mediocrity.
Hell, I had trouble with a Lexar JumpDrive (a USB solid-state storage device) today on Windows XP. Had the thing in my pocket, at my parents' house, and they wanted me to touch up a photo but seemed reluctant for me to take the original. OK, no problem. So I sat down at their computer, fired up their image-editing software, and set the scanner to scan at 1200dpi, grayscale. Then:
/dev/sda1. /etc/fstab.
1. I plugged in the Lexar JumpDrive.
2. I went to My Computer, and was delighted to learn that the JumpDrive hadn't been detected.
3. Unplugged the Lexar JumpDrive.
4. Went into the Control Panel and Device Profiles, only to find that some sort of obscure-sounding USB device was misconfigured. Since they have a largely from-the-factory-setup Dell, I thought that had to be my hardware. Let Windows search for the drivers; it failed.
5. Plugged in the Lexar JumpDrive.
6. Unplugged the Lexar JumpDrive.
7. Plugged in the Lexar JumpDrive.
8. Restarted the XP machine, because my parents said they'd had the machine "acting squirly for a while."
9. Waited for restart, opened My Computer.
10. Unplugged the Lexar JumpDrive.
11. Went to the Lexar website looking for 3rd-party drivers. None available or needed.
12. Plugged in the Lexar JumpDrive.
13. Went to the Dell website. Waited for an eternity for the site to load.
14. Unplugged the Lexar JumpDrive to get a specific model number, and typed it into a Search box.
15. Plugged in the Lexar JumpDrive.
16. Raise an eyebrow since the device was autodetected and properly configured without human intervention.
Contrast this with my experience with a relatively user-unfriendly Linux install:
1. Plug in the Lexar JumpDrive.
2. Do some command-line magick to find that it's set up as
3. Edit
4. Set up a KDE device icon.
5. Click on the icon. Note: from now on, clicking on the icon mounts the device and opens a Konqueror window, while right-clicking gives me an unmount option.
Or, on Mac OS X:
1. Plug in the Lexar JumpDrive.
Stating on Slashdot that I like cheese since 1997.
The real problem isn't the kernels and the device support therein, rather, its the devices. Really, how many different ways do you need to send data to a printer, or a disk, or get images off a digital camera or webcam, or sound to and from a soundcard, or a 3d command pipeline to a vid card ? The plethora of different device interfaces for substantially identical devices is the real problem.
Instead, I think there should be a (small set of) _device_ standards.
That is, something like a architecture standard: a standard category of devices which the manufacturers will agree to provide standard interfaces for
Combine that with a standard, architecture independent way of allowing devices to carry their own drivers. Perhaps something like a fast Forth like bytecode interpreter.
Maybe not the best approach, but a lot better than what we have now.
-- Pat
The biggest problem with communication is the illusion that it has occurred
You could, for example, have a graphics library that was setuid root, to allow non-root users to access the graphics hardware through a rectricted API.
This gives you the advantages of a shared library (no context switching, driver is distributed and managed separately from the kernel) without the disadvantages (processes must run as root because the library requires root privileges to access the hardware). There's only one disadvantage that I can think of: all arguments must be passed on the stack because the caller and the protected library have different data segments. If the protected library can be given access to the caller's data segment as well as its own, that problem disappears - the 386 supports six segments so that should be possible in principle. But passing arguments on the stack might be a better solution because it would allow arbitrary nesting of protected libraries.