Going Linux all the way on my hybrid-card laptop

Updated: November 10, 2022

For those of you not familiar with Dedoimedo's adventures, here's the gist of it. I would like to attempt to get rid of Windows in my home setup. When? Around 2025-ish, when Windows 10 goes EOL. Why? Because its successor, Windows 11 is totally pointless, and I have no intention of running my computer like a two-digit IQ chimp. Hence the attempt to go full Linux.

This is something I've started earlier this year, and even written at quite some length. I've also shared with you roughly half a dozen tutorials outlining what you need to do to deploy various Windows-only applications in Linux, like say SketchUp Make 2017 (the last proper free non-cloud version) or say Notepad++. As part of this journey, I have also installed Kubuntu on my IdeaPad Y50-70, which is going to be the scapegoat for today's experiment. Indeed, I want to expand this endeavor, significantly. Follow me.

Teaser

Background story

Back in 2014, I purchased the above-mentioned laptop, mostly to use as a hefty travel machine, a backup system with enough power to let me do all the fun stuff - and games, of course. It came with some rather decent specs, including a solid Nvidia card and 4K screen, the only real disappointment being a slow 5,400rpm mechanical disk. Other than that, pretty good.

The machine had Windows 8.1 on it, and I used it in that fashion until last year, when I set up a dual-boot configuration with Kubuntu as the second operating system. But then, Windows 8.1 is going EOL in just a few months, and I've only dedicated a small partition to Linux, and so I thought, I've got nothing to lose. I might as well wipe the disk clean, start fresh, and go Linux solo on this box, with Kubuntu 22.04 as the logical choice, due to the obvious aesthetic and functional superiority of the Plasma desktop. So let's.

Installation - not easy

Things didn't start well at all. First, the live session GRUB menu, when shown on a 4K 15.6-inch screen, is tiny, and you can barely see the text. I've outlined how to work around this problem as part of my Kubuntu testing on this machine last year, but this isn't something you can do right away with the live media.

The machine did not boot, though. Black screen.

I tried a second time, with safe graphics. This worked, but the problem is, the safe graphics mode boots with a weird resolution, so you don't see your entire screen really. The bottom 100px or so were missing, so I couldn't really see or use the Plasma panel and all its associated goodies. Reboot.

The third boot was successful. I had a normal live session, so to speak. With some problems, UHD scaling being one of them. I was able to make things more usable, but not all elements obeyed my 200% zoom. For instance, the installer itself looks rubbish when the desktop is scaled (from 4K to 1K). This meant I didn't enjoyed the live session at all, and I hurried through the installation.

Live session, 4K

As Zoolander would say, what is this, a desktop for ants? 4K across 15 inches, details be too small.

200% zoom

Scaled to 200% (ergo as if 1080p), you can see details just fine, even on a 800px screenshot.

Installer, scale all wrong

This is what the installer looks like after 200% scale is activated.

Still, some extra observations:

Partitioning, encryption

Installation in progress

Now that looks bad, doesn't it?

Begin to commence to use the system

Reboot. The cryptsetup message overlaps with the Kubuntu logo once you enter the password and unlock your partitions. This is only a very quick, brief message, but even so, it does not look pretty. The boot was very long, more than 90 seconds. Not sure why. Anyway, the system did load fine, so let me walk you through my two-day setup ups and downs.

Hybrid card setup, Intel, Nvidia, problems

I have never really truly bothered with any dual-card hybrid setups before, so there's an element of novelty here, for me, if you will. What I discovered right away was that the system was booted with the Intel card, and the Nvidia driver was not in use. The Nvidia settings utility also showed nothing.

Intel only used

I realized I had to resort to the command-line, unfortunately, in 2022, and use the prime utility to make the system boot with the Nvidia card. This updates the initramfs file, and then you must reboot to get the desired effect. Back in the day, we'd just drop to init level 3 then back to 5, but no such things with the "modern' systems.

I noticed that the boot with the Nvidia driver active is faster (if still very long and slow). I also noticed that the UHD scaling that I've configured looked totally messed up. I had to undo it, reboot, then set it up again to 200%, and reboot again. A lot of time got wasted in the process.

With the Nvidia driver loaded, I could start experimenting with software, to see what gives. You can use the command-line nvidia-smi tool to see which processes are using the Nvidia driver, as this is quite useful for when you want to utilize the hybrid setup to the max. Namely, low-perf low-battery stuff gets offloaded to the Intel card, and high-perf high-battery stuff goes to the Nvidia blob.

Nvidia only in use

SMI list

However, in the current setup, only the Nvidia driver was being used, the reverse of what we saw earlier. Not bad, except my laptop battery couldn't keep up. The laptop turned itself off after about 10 minutes. No prompts, nothing. A second time around, the estimated juice of about only 1.5 hours went down to 30 minutes in quite a bit less than 60 minutes. Pure maffs. So I realized that I do want the hybrid setup after all, and then I can manage individual apps as needed.

The Nvidia settings tool now did show two different PRIME profiles, but no hybrid mode at first. That one showed up after another reboot. You can then switch from Nvidia-only high-perf to mixed, which means Xorg will run under Nvidia, various random processes will run under Intel, and under heavy load, the GPU stuff will be turned over to the more powerful card. You can also pin individual apps to use different drivers, but we will talk about that later. I couldn't switch back to Intel only, though, not using the GUI.

Nvidia settings, select mode

The Additional Drivers utility of the system's software & update framework listed my driver as Other basically, which sort of makes sense, 'cause it's hybrid. Also, on a positive note, in previous versions of Kubuntu, the drivers utility was not installed by default, and you had to grab it by hand. Now, it's here, but then there's no more drivers manager package at all. You can simply access the necessary functionality through Discover. So this is better, overall.

Here are some more details for those of you of keen and curious persuasion. To see if your system supports a hybrid setup, you can run the prime-support command:

sudo prime-supported

If the output is YES, you're good. Then, to switch:

sudo prime-select nvidia
Info: selecting the nvidia profile
Deleting /lib/modprobe.d/nvidia-runtimepm.conf
Updating the initramfs. Please wait for the operation to complete:

Display scaling

Speaking of graphics and whatnot, there's the question of display scaling. Overall, Plasma does an excellent job. I mean, better than anything else, Windows included. I did try a fractional scaling setup on a Windows 10 box a while back, and it wasn't as smooth as Plasma. However, it ain't all golden.

As I mentioned, going from one driver to another completely messes up the DPI, and you need to redo it if you want normal looks. Some applications, mostly non-native ones and some games, don't necessarily obey the scaling rules well. Plasma's very own login screen (the first one, before entering the session) is not scaled either, so I must resort to my SDDM scaling trick. On the other hand, the lock screen is scaled correctly.

I had to separately scale the mouse cursor (from 24px to 48px), too.

Hardware support

Excellent, I must say. And better than what we had with Kubuntu last year. The system now even has the keyboard backlight support. Sleep & resume works fine with both Intel and Nvidia as the primary drivers. No hiccups or any issues, apart from the wonky battery (it says 88% capacity left, but I doubt it). I was also able to use the camera and the microphone in different VoIP programs. I did need to tweak the touchpad and mouse pointer speed, and the touchpad remains finicky, but no different than how it was in Windows 8. In general, I don't like to use them, and I prefer a proper mouse.

Keyboard backlight

Touchpad fixes

Gaming, gaming, gaming!

This is a critical factor of the overall experiment. After all, one of the main blockers for moving away from Windows is the availability of games. I decided to see how far I can go with the current setup, namely Steam with Experimental Proton compatibility layer turned on for all titles.

First, I installed Steam. No problem at all!

Steam

Steam folders

I configured games to be installed in a normal folder rather than ~/.steam - easier to backup.

Then, to make sure all Steam-powered content always runs under Nvidia, I changed the Steam application launcher (through the KDE menu) to the following:

env __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia /usr/lib/steam %U

Then, I installed Wreckfest, a Windows-only title. The game downloaded, I fired it up. And ... success. I had the startup setup window, which clearly listed the Nvidia card, and it offered me the choice of different resolutions and detail level. To see whether the card performs up to its standard, I chose High graphics and 2K resolution, to match the gaming desktop setup. It took a while to load the game files from the slow mechanical disk, but after that, the game ran well. Not amazingly given the strain I imposed on it, but it delivered reasonably. The Nvidia GPU didn't get too warm, about 48-49 degrees (C). Sweet!

Wreckfest, start

The only downside is that games don't necessarily respect the Plasma desktop scale.

Wreckfest, start menu zoomed

It says DirectX 11 and all that.

WINE support

Well, after native (and almost native) gaming, we also need to look at WINE. How well will various Windows programs run in this Kubuntu. The experiment here was a little convoluted. I started with the wine-stable package from the distro's repo, which turned out to be WINE 6.X branch.

WINE, working

However, this didn't give the best results. For example, KeePass couldn't run (the Windows version), and it kept complaining about missing mono:

01fc:err:mscoree:CLRRuntimeInfo_GetRuntimeHost Wine Mono is not installed

I did try the native KeePass build from the repos, but it rendered really badly on the screen - it ignored the Plasma scaling and went for the 4K resolution, resulting in a tiny and unusable UI. KeePassXC works without any problems, btw. I tried to grab Mono and various dotnet runtimes using Winetricks, but all I got was a bunch of messages telling me that there's a bug and that these packages aren't available for the 6.x version.

Executing load_dotnet45
------------------------------------------------------
warning: This package (dotnet45) is broken in wine-6.0.3. Broken since 5.18. See https://bugs.winehq.org/show_bug.cgi?id=49897 for more info. Use --force to try anyway.

So I decided to persist with the Windows build, to see what gives. I then configured WINE from the official repositories, but the instructions on the WINEHQ site were a bit off. For instance, they list winehq-stable as an available package, but there is no such package in the repo for the Ubuntu 22.04 family. I had to install winehq-devel. On the bright side, WINE now told me that Mono was missing, and had it configured automatically. And now, KeePass was running awesome.

Mono package

So did IrfanView and Notepad++. Plasma also lets you pin WINE apps, so there's that too. Good stuff. I did have to take care of the scaling factor, but that's something I've also written about in a dedicated tutorial on Wine & HD scaling. I settled on a comfortable 216 DPI (the desktop is at 192).

WINE, default scale

This is what it looked like at first, 96 DPI so it still thinks the screen is 4K.

Applications

I installed a wide range of programs, to see how it goes. First, the trivial stuff, anything that comes from the official repositories. I then configured Edge from deb, Skype from snap, I installed TrueCrypt and VeraCrypt, and the former would not run until I reinstalled libgtk2.0-0 for some reason. Specifically, TrueCrypt threw the following message:

truecrypt: error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory

But then, doing the following fixes it:

sudo apt-get install --reinstall libgtk2.0-0

Some problems

There were a few issues and oddities. Samba throughput is about 11 MB/s, which is good but not stellar. However, I wasn't able to connect to any shares until I've manually added the credentials through Plasma Settings. Normally, Dolphin would prompt for these, and it did in the past. No such issue in 20.04 or even the latest KDE neon. Kubuntu seems to have a unique bug.

Firefox from tar (another app I tried + my custom AppArmor profile) complained about VAAPI, but this is a bogus message really:

glxtest: VA-API test failed: failed to initialize VAAPI connection.

Lastly, the Kubuntu icon does not scale as well as the app icons - I guess it's not SVG but rather PNG, so you get set values once you exceed a certain multiple of 16px. This means things may look a bit weird unless you make the panel even higher. I'd like to see a feature to control the actual in-between-icon spacing and to add a separate spacer between the menu icon and the application launchers, but more flexible and with a smaller minimum width than the current Plasma widget.

Panel icons

Finally, using and having fun

Yes. Perhaps the disk be a bit slow, but things ain't bad.

About

Using, playing music

I did introduce a few small tweaks. No preview for folders in Dolphin, no bookmarks or browsing history shown in menu searches, and such like. But the system was shaping up pretty nicely.

Folder preview off

And we're good, yeah!

Working

And now, a lengthy conclusion

There we go. A long and quite thorough review, and I covered a lot of cool things. I must say this experiment gives me great relief and comfort. It helped me realize that the reality of being able to use Linux as a daily driver for semi-normal (ergo not ultra-turbo-geek) people is almost there. I guess in roughly three years, when Windows 10 goes ex-parrot, things ought to be really smooth, especially on the gaming front.

So yes, there's a lot going on, and mostly good stuff. Display scaling, hybrid card support, overall hardware support, the look and the feel and the amazing and yet simple and elegant Plasma desktop customization, the ability to use a wide array of programs and games of all sorts and shapes and packaging formats, even okay performance for an eight-year-old system. The disk is truly the limiting factor. The responsiveness isn't the best, the boot is slow and even Steam takes roughly 30 seconds to launch, and Windows 8 was definitely a bit sprightlier. But then can we compare a 10-year-old operating system with a brand new one? Well, we should be able to, why not.

My work isn't done. It's only starting. I need to test a dozen games or so, and that will take time, and I need to continue using this laptop, to see how much I can accomplish without Windows. But for now, the experiment exceeds my expectations. Yes, I still faced two days of nerdy work, but wait. When I set up my Windows 10 gaming box, I also faced two days of rigorous tweaking. When you nerd you nerd. And it's the nature of the nerd to tinker, and there's no operating system that will work plug 'n' play and satisfy the mind of a tinkerer. In this regard, Kubuntu delivers well for a free alternative to an expensive proper-corporate offering.

As you may notice, I didn't mention Office. That remains a weak link, and not something I can fix easily. But then I thought, come what may, I might as well pay hundreds of dollars to a professional editor to convert my publication files if and when needed rather than waste that money on Windows + Office, especially the newer editions. The old stuff works great, and you don't need any online accounts or such nonsense. Worst case, I'll just keep a Windows 10 machine on its own network, and use it purely for gaming or an odd DOCX file conversion when needed.

Roughly four years ago, I started my Linux-only adventure with the Slimbook machine, for which I've written some fourteen individual usability reports. Things are going quite well there. Now, we're taking it up one notch. A "gaming" rig, with Nvidia graphics and even more common desktopy stuff. From this early test, I'm quite happy, and for me to be happy about technology takes quite some effort. I feel, for the first time ever, that it might be possible, even enjoyable, for me to leave the Windows desktop behind without any great suffering or major loss of functionality. On that bubbly note, let us bid each other farewell. The testing shall continue.

Cheers.