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."
Games.
It's ALREADY that easy.
/dev/dsp is the default sound device for a myriad of programs, and some of them (quake, ET, etc.) can't be changed as fars as I know to use /dev/dsp1 (which is the PCI card, and sounds tons better than the cheap motherboard AC'97 crap.) This wasn't a problem before hotplug, 'cause I could easily resolve this situation by 5 minutes of editing, but I've studied hotplug for longer than I care to, googled till my eyes blead, and still have not found an answer.
If you're using a kernel built by your distribution, such that it has ALL of the drivers the kernel supports (quite a damn lot), then hotplug, or discover automatically set it up, at boot time, or when you plug it in.
I've tried things from scanners, to USB microphones, flash drives, whatever. It works no fail, if it's supported by the kernel or an outside module. What's really cool is that you can modify the scripts such that you could have your CF cards automatically downloaded (and erased if desired), the instant you stick it in--for instance. The possibilities are quite endless.
The only time I've ever had a problem with hotplug is when I have two soundcards (one on board, one PCI), they work quite well independently, except for the life of me I cannot figure how to change their device I.D.s.
Well, point being that the box will run perfectly well without recompiling. Sure, it's got some extra stuff, but as you say yourself, it's not for efficiency, it's because you like to do it.
Shutting down free speech with violence isn't fighting fascism. It IS fascism!
I don't know why people are marking the original poster flamebait. Even I am skeptical of drivers on demand. Last time I installed linux with a HBA with storage area network, it was the most work I have ever seen.
.o using the source .o as a module
1.) Download the driver
2.) rpmbuild kernel source
3.) update kernel to new kernel rpm to be compatible with driver
4.) compile the
5.) insert
6.) modify lilo / grub
7.) reboot and pray
Now I don't know about you, but Hardware Abstraction layers probably work for some video game control pad driver. Unfortunately any real device needs serious attention in linux land.
Get a Knoppix or LiveCD disc. You'll be amazed at how good Linux driver support is. Chances are that everything you got on your machine will just work, without you having to install anything manually.
Oh well, what the hell...
Say you have a function, foo, and it takes three integer arguments. So, here's your theoretical function:Now, say all of a sudden, you decide that the variable d in foo should be passed in (maybe d being 42 is correct for all but one variant of hardware device). At this point, you have two options:
1. Update function foo to include support for parameter d:This breaks the binary compatibility (well, and source for that matter). Probably you'd see segmentation faults/invalid memory accesses, etc.
2. Create a new function (say, foo2) that includes support for d, and maintains backwards compatibility:Then, update foo as such:Existing drivers don't see that foo has changed, and new drivers needing the extra parameter can use foo2. Binary (and source) compatibility is retained, but it becomes a major pain in the butt for the developers. Imagine several of these changes happening, and you (possibly) end up with foo2 through foo15.
Quite frankly, I can see why Linus doesn't want to do it, for both technical and the ideals behind it. Personally, I believe it's the ideals that he favors, rather than the technical side of it. That said, on the x86, maintaining this might not be so bad, but maybe on other platforms it is more difficult. Back when software was typically written in assembly (my favorite example that comes to mind is GEOS on the Commodore 64, it had a huge API, which retained backwards compatibility with older versions), not only did you have to make sure that the parameters passed in were the same (usually on the stack, or registers, or inline), but you also had to make sure that the entry-point addresses stayed the same too (most often accomplished via a jump table).
-- Joe
Is there a normal Hard Disk installer available for it
Yep.
Winboys complain that Linboys say Windows crashes. In 1998, it did. (Incidentally, it still does now. Admittedly, less often, but the only reason you never see it on XP is that it automatically reboots, rather than sitting there with the BSOD.)
Yet, the Winboys continually complain about problems with Linux that were solved in 2000 or earlier.
There are plenty of Linux-only games available, and lots of the good ones that use OpenGL, rather than DirectX crap, have Linux ports. If a developer uses a platform-specific 3D API, then refuses to do a Linux port because it would be essentially a complete rewrite to use a platform-independent 3D API, that they could have used in the first place.....it's not Linux's fault. Blame the developer, for being short-sighted and stupid.
Again, 1998 problem. Get yourself up to date, and see my answer to number 1.
KPackage, Synaptic, YaST, and many other package managers will install just about anything on most distros. Sure, there's the odd one that doesn't work, but you run across that with Windows, too. Ever try installing Norton Anti-Virus 2001 on Windows XP? Both released in the same year, but they're incompatible.
One more thing...if you'd been using Konqueror to post your message, it would have let you know that you spelled 'application' incorrectly. Nice to see IE being so innovative.....NOT! Notepad, Wordpad, DOSedit, TextPad, Boxer, Zeus, GWD Text Editor, EditPlus.....
All text editors for Windows. And the first three come bundled - and installed by default - with Windows XP.
Like what? Windows Update? I have yet to run across any website that doesn't work with anything other than IE, with the exception of Panda Software's Activescan. Unfortunately, it's ActiveX only. Again, not the fault of Linux, but the fault of a poor programmer who used a platform-specific technology to provide a function that could be provided with a platform-independent technology. Trend's housecall, however, works with Java, so will run on just about anything.
Wireless networking randomly popping up and down. Unrecognized hardware being completely ignored and hidden during install, rather than warning the user. Running any old twit as admin by default.
All examples of lack of polish and foresight in Windows.
Can't find enough arguments, so you need to repeat yourself? Not only that, but you chose to repeat the arguments that aren't valid, as the problem was solved years ago.
I know I'm not supposed to respond to trolls, but they're just so fun to shred into tiny little pieces.....
"City hall" in German is "Rathaus" Kinda explains a few things......
Its not borrowing ideas at all... Alot of things MS does are just simple steps, but the trick is they generally implement them in the poor and easy way, instead of the proper way. The truth is that Linux has had the equivilent of Microsofts Plug and play system for a very long time. All their system is, is a bunch of modules, we do exactly the same thing, the difference is that since people dont notice it because distro's have most fo the drivers included, so you dont notice them existing.
Also, Microsoft charges for getting drivers digitally signed to get on their database, and I severely doubt many are of decent quality (I know the nvidia ones they have are useless). Its easy to code somethign when you charge for addition to the database, because its just like any other database.. But to do full, dynamic driver management where you can get drivers that dont even exist on your system, thats what MS is NOT able to do. In fact, because they put poor drivers in their database, I'd say you get driver upgrade warnings which wipe out your already working drivers and replace them with poor copies.. Evidence of poor design.
Either way. I dont believe either HAL or Driver on demand is really a clone, but then again, I am the author of Driver on Demand, and I'm biased. The focus in recent times for driver on demand has been to create a driver search engine anyway first.
Just because WinNT uses hardware abstraction doesn't make it an innovative idea from Microsoft.
Recently noted:
* Linux Support for SMP
* Linux Adds HAL
* Linux Implements O(1) Sheduler
* Linux Now Has Asynchronous I/O
* Linux Gains Journaling Filesystem
I mean what next? How about fine grained security model/kernel level ACLs?
I mean these kind of new innovations make NT 3.5 (1991?) look really good.
> How does a Computer know that when I plug in a USB mouse that the computer knows it is a mouse, and what drivers to use with it?
There is a standard protocol for every USB mouse in existence (same for keyboards, disks, etc.), so special drivers for each brand are not needed.
In general, when you plug a device in, it sends its USB ID (32 bit ID number). In Linux, the system looks up this number in its driver database and loads the kernel module that knows how to handle that device ID. It's really that simple. Windows and Mac OS X use a similar system.
Although gentoo specific you still get the gist to get this to work on other distros.
http://forums.gentoo.org/viewtopic.php?t=217412/
Ok...Debian stable. That's your problem, right there. Debian stable consists of software that's roughly 2-3 years old, at least. It still uses KDE 2.something, if I remember rightly.
n ce.pdf, which covers all sorts of stuff like you need to update it. Look at the section titled "Upgrading a distribution", especially section 5.1, which covers how to select which release you want to install.
There's a Debian administration guide available at http://cdrom.gnutemberg.org/manuali/debian/refere
As far as recent games for Linux....well, I don't play recent games for Windows, either, so I couldn't really tell you for sure. There is, however, a Doom 3 Linux release either coming very soon, or already available. Google for "Doom 3 for linux", and see for yourself.
"City hall" in German is "Rathaus" Kinda explains a few things......
Linux Support for SMP
Linux got it after NT, but does it much better.
Linux Adds HAL
Sort of. Someone added a HAL to Linux. Odds are that it won't actually become a part of the standard kernel. The lack of a HAL in Linux hasn't been because it was too hard, technically, but because Linus and others don't think it's a good idea.
Linux Implements O(1) Sheduler
Does NT have one?
Linux Now Has Asynchronous I/O
Yep. NT did do this long before.
Linux Gains Journaling Filesystem
Linux has had journaling file systems for quite some time, and has several of them, each optimized for different kinds of usage. NTFS, frankly, underperforms all of them.
How about fine grained security model/kernel level ACLs?
Got it, in spades. For file system stuff, you can get traditional ACLs, but with Linux's modular security personality infrastructure, you can go way, way beyond that.
And, in general, if you want to show that Windows is better than Linux, security is probably not a good angle.
I mean these kind of new innovations make NT 3.5 (1991?) look really good.
That is pretty funny, isn't it. I mean, Linux has met or surpassed NT in all of these areas in spite of the fact that Microsoft was shipping a "production-quality" NT when Linux was barely functional.
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.
Actually, the Commodore KERNAL was more of an OS than a HAL. (though I suppose parts of it could be considered that way)
The MLA is definitely not full of shit. The English language has no official group responsible for changes to the language (in the sense that L'Academie Francaise operates). Many of the rules and placements in the language are actually quite logical, and many of the older rules (the rule against double negatives, for example) are based on mathematical concepts.
/.er would appreciate the fact that a set structure for bibliographis or works cited allows for much easier machine parsing of that information. While this was not the original reason for the rules, it is a very pleasant by-product of them.
The purpose of grammar is very similar to the purpose of spelling; a common standard allows for the quickest reading and comprehension possible. While your solution is certainly fine for colloquial speech, it has no place in print (epecially the original case, a semi-official form being posted on a website with readership in the millions). Ignoring the obvious jokes about slashdot and spelling/grammar, phrases that use a plural pronoun to refer to a singular antecedent are unnecessarily confusing for non-native speakers.
As for the citations, I would expect that a
I'm not in development on this, but I have reviewed some of the process.
USB operates with a host controller on a bus. When a device is connected on a PnP system, the controller detects it and polls it for a VID/PID (Vendor ID/Product ID), which is defined by some USB industry group at a cost (though there are some for non-commercial uses). This is polled along with a host of other descriptors. The USB Core (the sum of a controller driver, hub driver, and other things) controls this process for the PnP system. VID/PID is read from the device and referenced to a driver table, from which a driver can be loaded. Drivers are often organized by class according to function.
Descriptors, used to define device parameters, are then polled for all devices in the chain and subsequently devices are registered with the USB Core. Descriptors are formatted, so their organization is uniform, and come in several flavors. All are designed to properly integrate the device - mostly what to do and what not to do. The driver resides local to the system.
Your idea is interesting, but it still requires system setup I believe. If a USB device wishes to act as its own driver, the system needs a way to load an external driver (perhaps through a special type of driver, one which loads and wraps a driver from the device maybe). However this would be accomplished, a standard method of loading the driver needs to be developed and the generic USB driver would need to be built for all systems. Unless of course, such a driver already exists and I am ignorant of it (likely).
http://www.beyondlogic.org/index.htm#USB is a great USB reference.
There already are such standards. Why do you think we can run Linux on a PC at all? Because most things are always the same.
This is caused by the fact that PC manufacturers today still maintain compatability with the IBM PC of 1980. The DOS from that PC will still run on today's systems.
Look at USB too. There are some generic device types and they usually just work. More often on Linux even than on Windows.
System-independent BIOS chips on boards also exist.
In all, a lot has been done, but there always remain devices that don't fall into these categories and for which there are no drivers. They especially exist in the low-end segment, where the driver tends to provide more of the device functionality (to reduce cost in the device itself) so reverse-engineering is much more difficult, and the manufacturer is not interested in Linux investments.
I guess you never heard about yum. Or apt. Or urpmi...
This package dep sorting out thing is not xxx distro specific - you can get it on many many distros. Sure, some don't, but gentoo, debian, redhat/fedora, SuSE and mandrake do.
im in ur
Can there be binary only drivers or will the GPL interfere?
There can be binary only drivers with no GPL problems. The steps you must take to perform this:
1. Publish an API which is independent of any Linux kernel internals (and is therefore not a derivitive of the kernel and can freely be released under a non GPL license)
2. Make a GPL implementation of it and integrate it into the kernel
3. Make a non-GPL implementation of it. It doesn't need to be fully functional, but while we're at it, it might be useful to have a user space test harness for driver development. This can be BSD (or equivalent) licensed.
4. Write binary drivers.
5. ???
6. Profit
8. Restarted the XP machine, because my parents said they'd had the machine "acting squirly for a while."
Couldn't have possibly been because there was a problem on the machine in the first place...especially as you mentioned a USB configurations problem.
Conor "You're not married,you haven't got a girlfriend and you've never seen Star Trek? Good Lord!" - Patrick Stewart