If operating systems use 'drivers' to communicate with external devices, does that then mean that OS's (like windows, linux, & osx) have to come prepackaged with drivers for every single external device, ever created?

I ask this because I have never, personally, had to go download a driver for an external device. When i install a new graphics card or plug in something through USB it seems that the operating system already has drivers for everything, but how is this feasible?

For example, what if some company out in the middle of nowhere, randomly, decide to start developing a new network card or graphics card.

How exactly does the various OS's get a hold of drivers for this new device? Does the company have to develop the drivers themselves? and then proceed to notify the various operating systems?

How does the operating system maintainers know if the drivers are safe? i mean if they have drivers for every single piece of hardware it must be impossible to audit everything.

and what about smaller, hobbyist, OS's? How do they get drivers for various devices?

and furthermore how are things like the BIOS chip able to communicate with various hardware devices? does it have drivers for every single piece of hardware ever created, too?

  • i wasn't exactly sure if this should go under stackoverflow or Software Engineering. I ended up choosing here since the question doesn't actually have much to do with programming. Apologies if it is wrong.
    – Stavsen
    Commented Sep 27, 2019 at 19:20
  • 3
    This will probably be downvoted because the question is much too broad. Just a few hints: Hardware devices often have standardized interfaces, so one driver can handle hardware by different manufacturers. For very specialized hardware, the manufacturer provides drivers to be installed by the user, a couple years ago this was common for network and audio interfaces, too. Commented Sep 27, 2019 at 20:33
  • 2
    @Hans-MartinMosner: IMHO we should not close every broad question just because it sounds very broad at the first sight - if someone manages it to give an equally broad answer here which fits into the sites Q&A format, that is IMHO ok. I am under the impression some folks here use the "close" and downvoting features of the site just like a clicker game.
    – Doc Brown
    Commented Sep 28, 2019 at 8:32

1 Answer 1

  • Yes, OSes come prepackaged with drivers. Normally they are loadable, and don't get loaded unless the device in question is installed. In many cases, the driver may be not on the original media but would be downloaded when the OS detects a new device.

  • No, not for every single device ever created. For many devices, drivers are available form the device's manufacturer, and are not included into OS distributions. A problem with many Android phones is that the drivers for particular hardware are proprietary binary blobs, never upstreamed or even made otherwise available, so running things like PostmarketOS depends on reverse-engineering, to a degree.

  • A number of devices need a class-compatible driver. A network card can live well with a generic / reference driver for the NIC chip it uses, provided by the chip manufacturer, or even a driver for a backwards-compatible chip. Most USB devices do not need specific drivers because they follow a class specification for a keyboard, a mouse, a network interface / modem, etc.

  • Hobbyist OSes are screwed. If they are run on real hardware, you end up with drivers for the hardware that enthusiastic contributors may have. They can run graphics in a VESA framebuffer mode, without any acceleration; still much better than nothing! USB support helps a lot: you can have keyboards, mice, networking, and maybe even external storage with relatively little effort. Many hobbyist OSes run on very particular hardware (an IBM PC, an Amiga), or just in QEMU, virtualbox, etc, so they need to support a small number of drivers to become usable.

  • BIOS is specific to the motherboard; it is loaded with knowledge about particular mass-storage controllers to allow booting from them. At best, it knows about USB devices, and maybe can draw a GUI using a USB mouse and a VESA framebuffer. RAID controllers used to come with own BIOS to allow booting from them, etc.

  • apologies for posting off topic and thanks for answering it anyway
    – Stavsen
    Commented Sep 27, 2019 at 21:04
  • 1
    Hobbyist kernels is not necessarily screwed. Some of the lesser used kernels implements Linux driver interface and therefore can often load and use the Linux drivers for that hardware. Linux itself sometimes implements Windows driver interface so it can use proprietary Windows' driver blobs (e.g. ndiswrapper).
    – Lie Ryan
    Commented Sep 27, 2019 at 23:13
  • 3
    This is a question about the life cycle of certain software components, so it is IMHO not off-topic for this site - the top scope definition of this site is the SDLC. But it is a question which would usually fall under the too broad category. However, I think certain kind of broad questions can be answered in a broad, but still comprehensive manner, and if someone manages to give such a comprehensive answer (like we see this here), I don't think the question deserves to be closed.
    – Doc Brown
    Commented Sep 28, 2019 at 8:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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