[HOW TO] Install the latest Nvidia driver on Zorin OS 16.x/17.x & Pop! OS 21.04/24.04

A couple of thoughts on this, now that I've used this method a few times rather than the PPA:

  • At the point where you have users confirm nouveau is blacklisted, you might want to include just what the output of the cat should look like. It tells me to check it, but I don't know what good and bad are. I assume two lines of text matching the echo commands are good, but the first time I did this I actually missed one of the echo commands, saw only one line in the cat output, and didn't know I'd messed up.
  • People's mileage may vary when using the nvidia installer from the terminal in GNOME as opposed to the multi-user environment. For me, the installer hung the computer very badly when run from a terminal, and when I restarted, I couldn't get into a desktop. Trying the installer again from that broken state actually fixed it, fortunately. Anyway, might want to warn people of that risk.
  • There are new options in the Nvidia installer since they open sourced more stuff. Your instructions say to hit "yes" on everything, but now the user needs to choose between proprietary and MIT/GPL, may need to choose between rebuilding initramfs or not, and so on. In my case, I find the difference between proprietary and MIT/GPL matters A LOT. For whatever reason, the proprietary option fails to detect my 5090 correctly and I'm stuck with llvmpipe. The same thing happens with the proprietary option from Zorin's own "additional drivers" menu though, so it's an Nvidia problem, not a Zorin problem, I think.

This is interesting, given that using the user environment will actually just run the same command.
The action is exactly the same as with the terminal.

My thought as a long-time Windows user may be completely off-base for Linux, but my guess was that something important was in use and got pulled out from under it--something not running when the system's not in a graphical environment. It really hung the PC though. I had to hold power until it turned off; absolutely nothing was responsive.

Your thinking is quite sound in my opinion.
However, when we reach the above quoted line, this particular speculation is actually not possible.
Especially in regards to the graphics driver.

The graphical environment is more dependent on the graphics.

We know that the GUI application merely runs the same package management and command as the terminal as a front end.
So we can discount that, even if your experience seems a bit leading.

I can only speculate alongside of you that something suffered a rather rare and obtuse error.
I find a module transfer unlikely since the system will halt the module and display manager during install.
I find the possibility that the display server froze equally unlikely due to the DM being halted and that the system will automatically switch to a safe state or defer changes until next reboot.

But, you say you are using the 5090 card. If the driver has incomplete support for that card, then this can cause either a DKMS fatal error, a data mismatch that results in kernel panic or a nvidia.ko crash.
To me, this seems the likeliest.

It was the graphical environment that hung. I edited my post to say terminal in GNOME. What did not crash was the multi-user environment. That is, under systemctl set-default multi-user.target when there is no GUI. That mode is like ye olde days when you'd log in at a tty terminal and run startx. (In fact, I did that, and was disappointed that it was stock GNOME, none of the Zorin stuff, so I abandoned the idea of leaving it that way.)

I'm not fit to say it's none of these, especially since I don't know what the last is, but it froze prior to the point in the install at which it asks if I want to register the driver with DKMS, and it's not using prepared modules as far as I understand, which is why I'm able to build them via Nvidia's installer and get kernel 6.14.6-x64v3-xanmod1, with driver 570.144, which wasn't possible with the PPA. (In fact, I'm currently using 575.51.02, as 570 is notoriously dodgy. For clarity, I switched after the crash with 570; I didn't crash with the beta as I didn't try installing in a terminal window.)

As for incomplete support for the card, 570 is the first major version to support 50 series cards, but I wouldn't bet my life that support could be properly called "complete." As I said, I switched to 575 beta to get away from it.

For anyone using this method as opposed to Ubuntu's graphics-drivers PPA, Nvidia on Thursday released a non-beta 575 driver for Linux, version 575.57.08. I haven't yet installed this, but plan to this weekend. I've been running the previous beta driver, 575.51.02 from Nvidia's own package for several weeks now and haven't had any problems with it, OTHER THAN having to use the open/MIT license version as noted above, rather than the proprietary license version. That's one person and anecdotal, so take it with a grain of salt.

Since originally writing this post, I've installed it and given it a quick test using Cyberpunk 2077 as it's the game I have with the most feature support. One run with all RTX and AI features on, one run with no AI features, but RTX ray tracing on, and one run strictly rasterized, no raytracing, AI, or any other RTX feature. No problems, but again, very small sample size.