En bug i nouveau driveren betyder at Emulatoren i Android Studio crasher. Så nu har jeg besluttet at udskifte den med den proprietære driver fra NVIDIA.
Erfaring gjort : Efter installationen virkede Emulatoren i Android Studio helt som den skulle. MEN… Den ekstra skærm jeg har tilknyttet kunne nu kun køre samme opløsning som laptoppens indbyggede skærm, hvilket er noget lort, rent ud sagt, fordi den har et andet ratio. Derudover gik det galt første gang jeg opdaterede Fedora og skulle genstarte. Jeg fik den frygtede sorte skærm med en blinkende cursor, og intet andet. Derfor er dette indlæg nu udvidet med information om hvordan du kommer tilbage til nouveau driveren 😉
Mit grafikkort:
1 2 |
$ lspci -v | grep -E "VGA|3D" 01:00.0 VGA compatible controller: NVIDIA Corporation GK104GLM [Quadro K3000M] (rev a1) (prog-if 00 [VGA controller]) |
Installér nvidia driveren
Jeg har benyttet denne fantastiske guide. Må indrømme at jeg var skeptisk efter første gennemlæsning. Det er meget man skal igennem, og da sandhedens time kom ved reboot, var jeg helt sikker på min laptop ville eksplodere 😉 … men det skete ikke. Det virkede!
Du må IKKE blindt følge det jeg har skrevet på denne side, da de enkelte trin kan variere afhængigt af dine omstændigheder. Læs selv ovenstående guide og tag stilling. Og husk: Dit fuckup, dit ansvar.
Jeg hentede version 418.113 til mit grafikkort med følgende søgning på NVIDIAS hjemmeside:
Download driveren når du har fundet den og gem den i en mappe til formålet. Lad os kalde den nvidia-driver .
Filen du får skal hedde NVIDIA-Linux-<arkitektur>-<version>.run , som f.eks. NVIDIA-Linux-x86_64-418.113.run
Den version jeg hentede, er en af dem der er testet i guiden, nemlig version 418.113. Dette er også en af de 3 versioner der skal patches, så det gjorde jeg også ud fra denne guide:
Tjek at wget og patch er installeret. Hent scriptet og patch *.run filen fra NVIDIA:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ which wget /usr/bin/wget $ which patch /usr/bin/patch $ cd /sti/til/nvidia-driver/ $ wget -O inttf-nvidia-patcher.sh https://nvidia.if-not-true-then-false.com/patcher/inttf-nvidia-patcher.sh $ chmod +x inttf-nvidia-patcher.sh $ ./inttf-nvidia-patcher.sh -v 418.113 |
Nu har du, udover den oprindelige *.run fil, en ny der hedder noget i retning af NVIDIA-Linux-x86_64-418.113-patched-kernel-5.10.run , og DET ER DEN DU SKAL BRUGE ved den endelige installation af driveren.
Sørg for at Fedora er opdateret:
1 |
# dnf update |
Tjek at følgende pakker er installeret:
1 |
kernel-devel kernel-headers gcc make dkms acpid libglvnd-glx libglvnd-opengl libglvnd-devel pkgconfig |
Jeg tog derudover en backup af min laptop, så jeg om nødvendigt blot kunne reinstallere, hvis det gik helt galt.
Hvis “Secure Boot” er slået til, skal det slås fra, medmindre du vælger at signere driveren. Jeg valgte at slå “Secure boot” fra, og det er nok en rigtig dum beslutning, men tiden var knap og overskuddet lavt:
1 |
# mockutil --disable-validation |
Den beder om en adgangskode som du skal gentage… og naturligvis huske! 😉
Så skal nouveau blacklistes:
1 |
# echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf |
.. og i /etc/sysconfig/grub skal du tilføje rd.driver.blacklist=nouveau i slutningen af GRUB_CMDLINE_LINUX=”…”. Som f.eks.:
1 |
GRUB_CMDLINE_LINUX="rhgb quiet rd.driver.blacklist=nouveau" |
Derefter:
1 |
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg |
Fjern nouveau pakken:
1 |
# dnf remove xorg-x11-drv-nouveau |
Generér initramfs… Lav en backup af den aktuelle:
1 |
# mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img |
Og opret den nye
1 |
# dracut /boot/initramfs-$(uname -r).img $(uname -r) |
Nu bliver det nervepirrende… Du skal nu reboote til runlevel 3 og installere driveren.
- Genstart maskinen.
- Du bliver muligvis bedt om at bekræfte deaktivering af “Secure Boot”. I mit tilfælde bad den ikke om adgangskoden direkte, men spurgte hvad tegn nr 3 er, dernæst tegn nr 2 osv… Det lykkedes.
- Når du kommer til listen over tilgængelige Fedora versioner, bruger du pilene til at markere den du normalt bruger og trykker på ‘e’.
- Brug pilene til at navigere til enden af den linie der starter med ‘Linux…’ og skriv et mellemrum og et 3-tal.
- Tryk derefter Ctrl+x for at fortsætte. Du skulle nu gerne få en shell prompt i stedet for det vanlige grafiske login.
Foretag login i prompten. Derefter:
1 2 |
# cd sti/til/nvidia-driver/ # ./NVIDIA-Linux-x86_64-418.113-patched-kernel-5.10.run |
Nu ledes du gennem en række spørgsmål som du primært skal svare ja til. Derefter:
1 |
# reboot |
Efter denne reboot bør alt virke som normalt, bortset fra at nouveau driveren er udskiftet med nvidia:
1 2 |
$ sudo lshw -c video | grep configuration configuration: driver=nvidia latency=0 |
Geninstaller nouveau driveren
Nvidia installeren kan også afinstallere, så det starter du med:
1 |
nvidia-installer --uninstall |
Fjern blacklist nouveau linien fra /etc/modprobe.d/blacklist.conf
Rediger etc/sysconfig/grub og fjern rd.driver.blacklist=nouveau fra slutningen af linien der starter med GRUB_CMDLINE_LINUX=”…”
1 2 3 4 |
## Eksempel med Fedora 33 BTRFS ## GRUB_CMDLINE_LINUX="rhgb quiet" ## eller med LVM ## GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/swap rd.lvm.lv=fedora/root rhgb quiet" |
Opdater grub2 konfigurationen, du har sandsynligvis kun den ene af dem.
1 2 3 4 5 |
## BIOS ## grub2-mkconfig -o /boot/grub2/grub.cfg ## UEFI ## grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg |
Installer nouveau
1 |
dnf install xorg-x11-drv-nouveau |
Generér initramfs ved først at tage backup og derefter lave en ny:
1 2 3 4 |
## Backup ## mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nvidia.img ## Opret en ny ## dracut /boot/initramfs-$(uname -r).img $(uname -r) |
Geninstaller disse pakker (det er en del, så bliv ikke forskrækket)
1 |
dnf reinstall xorg-\* mesa\* libglvnd\* |
Herefter er det blot et spørgsmål om at genstarte, og så er alt godt igen 😀