So when I install the Windows, I need to install all the drivers that are respective to my laptop.
Why don't I do the same with Ubuntu installation?
Does the installation somehow detects my hardware and install proper drivers on its own?
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It only takes a minute to sign up.Sign up to join this community
For the most part, you don't need to install additional drivers. Almost all available drivers are included.
Ubuntu comes with many drivers out-of-the-box. You may need to install drivers only if some of your hardware is not working properly or not being detected. Some drivers for graphic cards and wireless adapters can be downloaded.
The easy way to find out if any drivers are needed is to choose to Try Ubuntu from the installation screen first to see if you need any drivers and to see if Ubuntu is working with your hardware.
Ubuntu is an open source operating system, and in an open source operating system it is possible to provide users with additional protection against problems caused by installing the wrong driver and additional help recovering the system after installing the wrong proprietary graphics driver. I'm referring here to the built-in open source graphics drivers like nouveau and the amdgpu packages and proprietary graphics drivers like the NVIDIA drivers from the official NVIDIA website and the AMDGPU-Pro driver1 from the official AMD website.
The built-in open source drivers in Ubuntu provide the user with an additional layer of protection against having to reinstall the operating system due to a problem that was caused by installing a proprietary driver. The reason why some drivers do not need to be installed in Ubuntu is that some open source drivers are already built-in in the default Ubuntu installation. Installing a proprietary driver can sometimes make your system unbootable, were it not for the open source drivers that are still installed that enable the system to boot again after the proprietary driver that was causing the problem is uninstalled.
Linux (and some other open source unix) systems treat drivers very differently from how Windows OSes do.
In Windows systems (especially pre-Windows 10), the OS kernel provides a stable binary software interface against which a driver can be written, and that interface is (with exceptions) guaranteed to be unchanging across the support cycle of a given Windows version. This favours drivers being written and supplied by third parties, they will usually work for at least one version of Windows across that support cycle. The downsides are that this driver interface is hard to improve or fix within that lifecycle, and favours binary distribution of drivers which (all politics aside!) often limits consistent multi-platform support.
Linux kernels do have a changing driver interface that is only strictly specified at the source code level, and biased towards improvability and multi-platform consistency. This means that, unless an additional "translator" driver offering a specific, stable binary interface is used, a driver binary is specific to an exact kernel build. One could "fudge" a driver binary to maybe be compatible with a couple dozen exact kernel versions on one platform, but the effort to maintain it (as a binary offering) would be uneconomical. This bias is also politically wanted in the linux kernel community, since they
pretend a closed source binary driver could do much worse than malicious firmware on a busmastering-capable peripheral consider closed source code as both too untrusted and too distasteful to have it running with kernel privileges. Thus, open source device drivers for all major hardware are supplied within the kernel package itself, with the second option of there being a relatively easy to use method of distributing an outside driver as a source tarball, to be compiled against the installed kernel.
Some other linux drivers (eg classic X11 graphics drivers, scanner drivers, printer drivers) are not handled as pieces of the kernel, but as parts of some userspace software that is providing the functionality as a system wide service (XOrg, Sane, Ghostscript...) - these, too, tend to be specific to and mostly distributed with a given version of the relevant userspace software.