Linux is kinda different to how MacOs and Windows do things - both use a kinda “abstracted” HAL (hardware abstraction layer) and a micro kernel, although Windows is pretty feckin’ obese for a micro kernel). MacOS’s is basically FreeBSD ontop of the Mach Kernel (and Microsoft based their NT kernel off Mach research too).
Due to Linux’s monolithic kernel, if you want “Driver X” to work - it needs to have “symbols” or suchlike (don’t ask me for more details than that) in the kernel at compile time…
If your driver isn’t supported in the kernel - you need to get the source code for the driver, plus the full kernel source code, and build your driver and kernel…
i.e. in MONOLITHIC kernels, there’s driver “hooks” in the kernel… if they’re not there, the driver won’t work…
It can be a REAL PITA at times… e.g. Google’s version of the Linux kernel for Android, eschews NFS support - so if you buy an SBC (single board computer) from a lazy vendor (e.g. Pine 64 people*), they just grab the Android kernel for that SoC (system on chip), and the android kernel doesn’t support NFS - so you can’t mount NFS shares on your NIX O/S running on an ARM board 'cause the SBC vendor is too lazy and just sponges off Google’s kernel efforts…
The thirty year old “Monolithic VS Micro kernels debate” was what helped inspire Linus Torvalds to develop the Linux kernel in the first place, he disagreed (sometimes publicly) with Andrew Tannebaum’s micro-kernel approach…
Note - I’m pretty sure most of the BIG UNIX vendors use/used monolithic kernels too - e.g. AIX and Solaris… I think the “OSF” (i.e. the body formed by Digital and HP and other UNIX vendors to compete with IBM and Sun Microsystems) foundation were pursuing micro / mach kernels for their RISC platforms. Note : HP-UX is pretty much “dead”, and Digital UNIX (AKA “Tru64”) is extinct, in the wild, damn shame too 'cause Tru64 on Alpha (64 bit in the 1990s!!!) was a thing of beauty. Did a fair amount of work on 64 bit IRIX on MIPS, but can’t remember what an IRIX kernel looked like, or DG-UX for that matter…
* better to use DietPi or Armbian than any work from the Pine64 people - IMHO…