The vast majority of drivers are included with the Linux kernel now (in tree) so the difference usually comes down to kernel version (newer kernels have more drivers, of course) or kernel configuration set at compile-time (this can be anything from including or not including drivers, to turning driver features on and off, or more fundamental changes beyond drivers)
You can get kernel version info from uname -a
and a lot of the time, probably most of the time (this is also down to configuration), you can get kernel configuration info from /proc/config.gz
(use gzip -d
to decompress) or something like /boot/config
Then you can run diff
on configurations of 2 different distro kernels you’re interested in to see how the 2 distribution’s kernels were set up differently
This could also be caused by different setups of userspace tools or UI that interact with these drivers in different, sometimes worse ways but this is usually much less likely in my experience (most Linux distros do things like this the same way these days tbh)
Oh, also, there are a lot of drivers that require vendor-supplied firmware or binary blobs to function and most of the time distros don’t bake these into the kernel (although it is possible) and different distros might have more or less of these blobs available or installed by default or they might be packaged differently. The kernel should print an error message if it can’t find blobs it needs though
I guess there’s kinda a lot to consider lol. Sorry if all of this is obvious
What hardware are you talking about specifically?
You can check to see what drivers were compiled as modules or into your kernel by reading the kernel configuration at
/proc/config.gz
or/boot/*config*
There might also be out-of-tree (not included with the kernel) drivers installed as packages on your system but this is very rare outside of like… having an NVIDIA card and running the closed-source vendor driver