Results 1 to 5 of 5
Hi, this is a question from someone new to the workings of Linux. Why are the drivers built into the kernel? Why are they not "pluggable" or "modular" and able ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
- 10-27-2008 #1
- Join Date
- Oct 2008
Why are drivers built into the Linux kernel?
Hi, this is a question from someone new to the workings of Linux.
Why are the drivers built into the kernel?
Why are they not "pluggable" or "modular" and able to be added in while the kernel is running?
Shouldn't they exist separate from the kernel, and the kernel just manages them as add ons?
- 10-27-2008 #2
Linux kernel drivers can be built into the kernel or built as modules. Many distributions have kernels that are modular i.e. some drivers are built into the kernel, but most are modules that are loaded when needed.
- 10-28-2008 #3
- Join Date
- Oct 2008
Why is there a page like this:
Linux 2 6 27 - Linux Kernel Newbies
If the drivers arent part of the kernel, it says these drivers are new features of the Linux kernel. I can understand many of these, but for example:
"Add driver for Tabletkiosk Sahara TouchIT-213 touchscreen"
Is that really a fundamental feature of an OS... why can't it be added in later by the user, or package manager, etc. Why add all these drivers to the kernel codebase and cause code bloat?
It seems to me like the kernel will have to become gigantic to support every driver ever made in the future ...
Please clear up any misunderstanding I have here. I just want to understand why these things have to be built in, or what the rationale behind it is.
- 10-28-2008 #4
You will get better answers if you ask the kernel developers at kernel.org because they know more about the reasons for designing the kernel in the manner that they did. You also need to investigate the differences between monolithic and microkernels. This may help answer some of your questions.
My interpretation of "the drivers are part of the kernel" would be that the source code of the driver is in the kernel codebase, but you do not have to compile it if you wish. You can build the driver directly into the kernel or as a module if you wish. Adding more source code for drivers and other features in the kernel source tree can potentially cause bloat and this is evident if you look at how the Linux kernels have increased in size over the years.
- 10-28-2008 #5
To make a long story short, the "connection interface" (the API) between the kernel and the driver are constantly changing for
a) political/philosophical reasons, because this way hardware manufacturers are motivated to publish open-source drivers and work closely together with the Linux developers (instead of just distributing closed source blobs for their hardware)
b) technical reasons, because the progress done in the kernel development is not held back by unnecessary compatibility issues (you can be reasonable sure that a certain hardware driver will be supported and maintained for a long time, once it is in the official source)
But as it has been explained before, this has nothing to do with the question whether the driver is compiled as a separate module that gets loaded only when it is needed.Debian GNU/Linux -- You know you want it.