![python oolite python oolite](https://www.unitedreptiles.co.za/content/images/thumbs/0008578_red-sea-reef-base.jpeg)
Still, there are times when, for some reason, it doesn't happen by itself. And the vast majority of the time, Linux will automatically load a new device's module without you even knowing it. There's nothing stopping you from writing your own module to support a device exactly the way you'd like it, but why bother? The Linux module library is already so robust that there's usually no need to roll your own. Kernel modules act as translators between devices and the Linux kernel. In turn, the kernel makes the device available to users and processes and oversees its operation. As shown in the figure below, you can think of a module as a piece of software that tells the kernel where to find a device and what to do with it. To create an effective balance between the opposing virtues of stability and usability, Linux isolates the kernel, but lets you add specific functionality on the fly through loadable kernel modules (LKMs). Having to reboot each time you add a device to get the system to recognize it is hardly efficient. But if it's impossible to make even small changes to the compute environment without rebooting the whole system, then plugging in a new webcam or printer could cause a painful disruption to your workflow. Considering how many details have to be simultaneously managed on a live system, it's better to leave the kernel to do its job with as few distractions as possible. After all, the kernel is the software that drives everything your computer does. Here's how that works.Ī running Linux kernel is one of those things you don't want to upset. Linux manages hardware peripherals using kernel modules. This article is excerpted from chapter 15 of Linux in Action, published by Manning.