3

I tried installing Linux on a computer with an Nvidia GPU without bundling the necessary driver just for fun. Although I expected an error or a blank screen, to my surprise, I could install Linux just fine. The caveat was that the resolution was bad. When I checked the About section it says that llvmpipe is in use. How does Linux utilize a graphics card that it does not have the necessary drivers for?

1

1 Answer 1

3

All PC video cards are able to work at least in the "standard VGA mode". This is de facto standard that appeared with IBM VGA cards, so all competing hardware at the time implemented it, and everybody still support it even today. It came with an external interface which is currently known as "the VGA port", which is 15-pin D-Sub connector, which also became a de-facto standard on its own. So, if you ever tried to build a kernel yourself, you saw "VGA framebuffer" amongst others, this is how Linux supports this common mode.

There are also additional "common" modes that hardware usually supports and Linux is able to use, colloquially called SVGA (super VGA). There was much more diversity when cards started to add resolutions and color rendition beyond the limits of VGA (everybody extended it in different incompartible ways), so the actual support of different modes from this set could vary.

The performance of such modes is very bad, because there was no hardware acceleration in graphics at the time. The best things you you could have is to map the frame buffer to other memory location (to have a "shadow screen" or to scroll the screen).

And, finally, as it is suggested in the comments, for common hardware there actually are open source drivers built into the kernel and userspace software. Linux is able to set modes and allow accesses to NVidia hardware by the means of its nouveau driver, but the Mesa library is using the Gallium LLVMPipe software renderer, which doesn't use card features. This driver was created by reverse engineering, as the input from the Nvidia to the open source community was always scarse. The compatibility of this driver with the hardware is mediocre, it is buggy and lacks stability and it is not able to use all the features, which always frustrated the community; yet, for many cases it is enough and if it works for you I'd suggest to leave it as is, because it has its benefits too — it works out of the box, it uses kernel modesetting.

2
  • 1
    The "standard VGA mode" applies only to x86 systems using legacy BIOS. On systems using UEFI, the "standard VGA mode" is replaced by UEFI GOP or UGA framebuffer display specification, both of which are supported by the efifb driver in Linux. Like the standard VGA mode on BIOS-based systems, it is a very simple, unaccelerated display interface, but it allows for higher resolutions than VGA.
    – telcoM
    Nov 8, 2022 at 11:20
  • I think most cards still include the "VGA BIOS" part to be able to work when plugged into machines that don't have UEFI (like HPE ProLiant Gen8 except DL580). Also, probably UEFI CSM could emulate VGA BIOS functionality by translating its calls into UEFI GOP calls for the video card which lacks VGA BIOS. // VESA BIOS Extensions (supplied as part of the video card BIOS) supported higher resolutions too. UEFI just offered two additional interfaces in this area, the only difference is that they are supported by the UEFI itself. To me that looks like NIH syndrome. Nov 9, 2022 at 8:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .