I know that the kernel uses device drivers to interact with hardware. But laptops for example come with all kind of hardware configurations. Yet, after installing Linux, somehow the kernel manages to function properly. I have not installed any Device Driver myself, yet the OS has no trouble in interacting with the hardware on my computer. This suggests that the device drivers used are built-in the kernel.

But since computers come in all kinds of configurations, how does the kernel have the device drivers for all of them.

Some are integrated and some have to be installed afterwards?
Some Hardware work the EXACT same way regardless of build? [I assume all keyboards might all work the exact same way.]
Which ones are built-in and which are not?
If the kernel can work with my GPU without me installing any device driver, since I obviously see stuff on the display, then what is the nVidia driver for? Does it add anything?

  • This does not look like a duplicate. There was no answer regarding integrated vs close source vs standalone drivers. – Pilot6 Jun 11 '15 at 16:15

Most of hardware drivers are built into linux kernel. It is always better when they are. But in some cases you can or have to install them separately:

1. Hardware vendor does not disclose protocol to interact with hardware and releases closed source proprietary drivers. In this case there is no way but to install them separately.

But frequently there are also alternative open source drivers that are created by reverse engineering. These drivers are integrated into the kernel but may perform not as good as proprietary.

Example: AMD and Nvidia video drivers, Epson printer and scanner drivers, etc.

2. Open source driver exists but is not integrated to mainline kernel yet. Or is integrated to unstable versions, or to unsupported by Ubuntu kernel versions.

In this case drivers can be obtained from PPAs or as source code from github or other places.

Example: Focaltech touchpad driver, Realtek bluetooth driver, etc.

3. Sometimes open source drivers in mainline kernel exist but do not perform as good as some alternative open source drivers developed by hardware vendor or community.

In this case it is an option to install alternative drivers.

Example: Realtek wireless drivers.

If some of your hardware is not supported, it is always good to report it to launchpad. Someone will take care of it and add support to linux kernel. Also co-operation with testing is helpful.

I would like to add an important note regarding installation of standalone drivers.

In most cases hardware drivers are built and installed as kernel modules.

If you build a kernel module from source, after kernel is upgraded the module will not work. It is built for a specific kernel version. You will have to re-install it after each kernel upgrade.

That is why it is always preferred to install drivers from PPAs with DKMS packages, or install them using DKMS manually.

In this case after each kernel upgrade the module will be automatically re-built and installed for a new kernel.

Bad example is installing Nvidia drivers from .run files downloaded from Nvidia site. In this case the driver is not registered correctly in DKMS and after first kernel upgrade you will have a black screen.

But you can always get all Nvidia drivers packed as DKMS from PPAs.

  • I understand. But how about keyboards, displays, mouses and so forth... Do they all work in the same way so that there is basically only one device driver which is built in? Does my kernel have an integrated device driver for the keyboard which works with all keyboards because they are all the same? – RatkinHHK Jun 11 '15 at 16:17
  • Keyboards, mice are not same. But in most cases kernel has drivers for them. – Pilot6 Jun 11 '15 at 16:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.