27 July 2016

Proprietary ATI/NVIDIA + UEFI = Personal Nightmare, thanks to ATI/NVIDIA

Nah, don't come saying "omg just use bios!". UEFI is light-years better than bios with a lot of reasons (I will not enter in this details here, you can search yourself).
This isn't a real howto, is more like a safeboat.
The Problem:
Everybody knows the problems of proprietary drivers in linux, and everybody knows how sweet those companies are about that. They think someone will stole a chip idea just looking to the fucking source code of a fucking driver (well, I don't see any other reason to be less stupid than that). Well, isn't only the fact that those closed-source drivers have compatibility issues, they're broken, incomplete and incompatible MOST of time.
For example, why the binary drivers doesn't work with a lot of type of configurations? Because "fuck you" - ATI/NVIDIA says. Why the binary drivers doesn't work with EFI framebuffer, since is something that just cames from the firmware? Because "fuck you" - ATI/NVIDIA says. Really? Incompatible with EFIFB? So huge companies like ATI and NVIDIA aren't capable to make a fucking less-retarded driver that works with the goddamit EFIFB that is so common than textmode?
The Solution:
Eh.. there's no solution...Well.. sort of...
1) Making two different kernels
This is the most secure and easy way.
Make the first kernel without any framebuffer, with a different name (you know how to customize your kernel name, right?), so you can enter in single mode if something happens. Another one without any framebuffer, with your binary driver proper installed. I have this configuration in my funtoo install without any issue. However, you'll need a different approach if you use CloverEFI instead of rEFInd (nothing to hard to deal, if you're here already).
2) Don't use EFIFB at all
It's quite dangerous if something happens. But still, you can make a pendrive (or use a sdcard with at least 128Mb of space and configure some bootloader to deal nomodeset in case of some emergency).
3) Don't use proprietary drivers
Disregard the problems of proprietary drivers, the opensource drivers aren't well to use in regular basis (Yet? YET?). But the choice is yours.
1) You don't need a bootloader if you use rEFInd or CloverUEFI. Learn about EFISTUB. You can even pass a kernel cmdline using EFISTUB, but isn't necessary since rEFInd and CloverUEFI can pass kernel cmdline without any problem at all (I use rEFInd+EFISTUB with initram incorporated to vmlinuz+LVM).
2) The ATI/NVIDIA drivers make your life harder as hell when you want to use EFI.Apple devices with nvidia cards doesn't have this problem because their EFIFB ARE NvidiaFBs, no big deal. Same for some IBM devices I did some research (of course I didn't use a proprietary driver on a server). Don't know about motherboards with native ATI/NVIDIA, also don't know about notebooks with discrete cards (my notebook with a nvidia card doesn't have EFI, unfortunately).
3) I've already tried to trick using CloverUEFI and even modifying my firmware and SMBIOS. It doesn't work anyways.
4) There's some options for the kernel change on-the-fly the framebuffers drivers from EFI to any some others drivers to make a more "native" approach, mysteriously those two big companies are not able to achieve this (efifb can change on-the-fly to nouveau, nuff said).

Update 20170515: They work now, you can use efifb+proprietary drivers, don't know exactly who had the problem atm.

No comments:

Post a Comment