Dust has finally …. FINALLY …. been released.
We’ve had the driver update packs out there for a while, but finally we’ve released DUST.
What is DUST you might say? How about a way to automatically update drivers from source/distributions?
But wait … isn’t that just dkms? Sort of. We’ve found … horrific problems … with DKMS that we couldn’t solve. We wound up writing scripts to work around DKMS as it didn’t build things the way we needed them built. In fact, DKMS was reporting in some driver cases, that it had run correctly, when in fact the driver install had failed. Kind of annoying when the server is 10k km away from you and you have no easy access to fix the thing.
Hence DUST (Driver UpdateS Tool) was born. Its mission in life is to JUST WORK. Failing is just plain wrong. So the dust tool has to be as simple as possible. And it is.
Each driver pack has 3 components:
- install file (populates a tree with stuff needed to build a working driver)
- driver payload (tarball, zip file … hell, whatever you want … you have to unpack it, so it can be whatever you want to unpack … just make it reliable)
- the update script, which will do nothing but a) copy the old driver kernel modules to a backup directory, b) build/install a new copy of the driver kernel, c) run depmod if needed, and d) if you need to mkinitramfs or mkinitrd or dracut, yeah, you can put it in there.
The install file is really brain dead simple. Very trivial. Easy to recode this as an RPM or DEB. As long as it moves the driver payload and update script to the right location, you can use any mechanism to do this.
The driver payload is the stuff you need to build the driver. You can make it as complex or as simple as you need. Just make sure you can actually build a driver from its contents. If stuff is missing, then you need to make sure its in the payload. If you have everything, great. Its kind of annoying to start a build process, and realize you are missing a library or a header file, so if you think you need it, build it in, or add checks for it.
The update script is the thing that drives any compilation, installation, etc.
All of this is currently set up as a bash script with a perl helper code. Old version (which was gnarly, and poorly implemented) was a monolithic perl code. I needed to make it simpler, so I did.
See the site, feel free to pull it down and use it.
Next version may include a few neat things, like pulling updated driver packs down from particular sites. But have a look, play with it, enjoy it, use it in your distro.