What’s holding the Linux desktop back?
Linus Torvalds looks to Chromebooks and Android for the future of the Linux desktop, while Linux Mint developers aren’t happy with each other.
One of the electronics chain stores here in Switzerland recently had an HP Pavilion 14 on sale; regular price CHF999.- (about €900 or £815), marked down to CHF599.- (about €540 or £490). That is just too good of a price for me to pass up. Here are the configuration details:
Model: Pavilion 14-ce 1806nz
CPU: Intel Core i5-8265U (4 cores, 1.6 GHz)
Memory: 8GB DDR4 | Disk: 256GB M.2 SSD
Display: 14″ 1920×1080, Intel UHD Graphics 620
Wi-Fi: 802.11b/g/n/ac | Bluetooth: 4.2
Ports: 1xUSB 3.1 type C, 2xUSB 3.1 type A, 1xHDMI, 1xRJ-45, 1xSD Card
That is a really nice configuration, especially at that price.
The unfortunate news is, of course, that it came preloaded with Windows 10 Home. But that didn’t last long.
I let the Windows setup procedure run on first boot, until I got to the point where it became clear to me that it is now impossible to install Windows without a Microsoft account. Absolutely impossible. Windows 10 has always asked for a Microsoft account during setup, but there was a tiny (nearly invisible) option to use only a local account, which I always did. Well, now that option is gone, and if you dig around long enough you can eventually find an explanation that says if you don’t want to use a Microsoft account, well, you have to anyway, but after the installation is complete you can go back into the configuration and change it to use a local account.
So, that was the end of Windows on this new system. I have never had a Microsoft account, and I never will. I booted a Linux Live USB stick, deleted the Windows partition, and set about the task of installing a few of my favorite Linux distributions.
The first thing I had to do was get into the BIOS Setup Utility to disable UEFI Secure Boot. That turns out to be a bit more tricky than you might think, because there is a “POST hotkey delay (sec)” parameter in the BIOS which is initially set to 0, so there is very little time after power-on to press F10 before it starts to boot Windows (or at least tries to). Once into the BIOS Setup, I went to System Configuration / Boot Options / Secure Boot, and changed that to Disabled. While I was in there, I also changed the POST hotkey delay to 5 seconds. Save that (F10) and exit.
Then I plugged in an openSUSE Tumbleweed USB stick, and went back to power-on and tried to be quick enough pressing F9 to get the boot select menu. From there I could select the USB stick for boot, and the openSUSE installer came up normally. That’s a good start.
When installing Linux on a UEFI firmware system, you have to remember that the system will boot from images that are stored in a special “UEFI Boot” partition, rather than from the MBR as it did for Legacy boot. You can identify this partition because it will be a FAT filesystem, and will usually have the ESP and Boot flags set.
Some Linux distributions will recognize the EFI Boot partition and automatically use it for the bootloader installation; otherwise, you need to select it during the disk partitioning procedure, and designate it to be mounted on /boot/efi. In addition to that, I created a 64GB root partition, formatted as btrfs, and a swap partition.
With the disk partitioning done, openSUSE installed with no difficulty, and within about 15 minutes it was ready to reboot. Then I ran into the first bit of trouble. I had deleted the Windows C partition, but had not changed anything else. HP is rather difficult about modifying the UEFI boot configuration, so even though openSUSE had changed the boot order to put itself first, when it rebooted the HP firmware decided to “help” me by resetting it to boot Windows. That of course failed, so it then kicked over into the Windows recovery boot. Sigh.
Back to the BIOS Setup Utility, System Configuration / Boot Options / UEFI Boot Order. Choose OS Boot Manager, and a window will pop up with a list of boot targets. You can use F5/F6 to move items up and down in the list, so I just had to move openSUSE to the top of the list. Unfortunately there is no “delete” option, so I just pushed the Windows boot line to the bottom as well.
Save and reboot, and this time it booted up openSUSE! Hooray!
This whole process that I had to go through to get this far illustrates the general ideas you have to use to install Linux on a system with UEFI firmware. In a nutshell:
- Get into the BIOS Configuration Utility. This usually requires pressing F2 (Acer and many others), or F10 (HP), or perhaps something else, depending on the manufacturer of the laptop. If you get it right on the first try, you should consider buying a lottery ticket that day.
- Disable UEFI Secure Boot, unless you know that you are going to install a Linux distributions that supports it. Some systems (Acer, for example) require you to set an Administration password before they will let you disable Secure Boot. The logic behind that escapes me.
- Install Linux, and if necessary point it at the EFI Boot partition. You could actually create a new partition for this purpose if you wanted (Fedora does this by default). If you choose to create one, it doesn’t have to be very large; something like 250MB is plenty.
- Reboot; if the system boots Linux, you’re good to go (and probably should buy another lottery ticket); if it still boots Windows, you need to go back into the BIOS Configuration and change the UEFI boot order, as described above. Some systems will let you change the boot order from the Linux command line using the efibootmgr utility, and some will not – HP is definitely in the “not” column. Some are particularly maddening, because they will let you change it, and it will initially work, but then at some later time, for no apparent reason, they will suddenly change it back to booting Windows. Grrr. In this case, you have to use the BIOS Configuration Utility to change it permanently.
That’s really all there is to it – at least the highlights. I still get surprised now and then by a new system, but if you keep these general points in mind, you can usually find a way to get it to work. If all else fails, and the system absolutely insists on booting Windows after Linux is installed, you can always resort to pressing the boot-select key during POST (power on sequence). That key is usually something like F12 (Acer), or F9 (HP), or ESC (Asus and Samsung), or perhaps something else. Sigh. Anyway, when you find the right key, you will be presented with a list of boot objects, including Windows and whatever Linux distributions you have installed.
So, at this point my lovely new HP laptop was up and running my Linux distribution of choice. Time to poke around a bit and make sure everything is working.
Oops. One of the first and most obvious things was not working – Wi-Fi. It was not even listed in the Network Manager window. Well, wired ethernet was working, so I started up on that and continued investigating the laptop. Everything else seemed to work – display (correct resolution), keyboard (correct keymap), touchpad (it’s an awful clickpad, sigh), USB, SD, all ok.
Investigating the Wi-Fi issue a bit further, the “lspci -v” command shows that the wireless adapter is a Realtek RTL8821CE. A quick check of the internet shows that this is a relatively new adapter, and the drivers are not included in the Linux kernel yet. But the openSUSE Build Service lists community packages for it, and they were relatively easy to download and install. I have run into this situation before, and what usually happens is that the drivers eventually show up in the kernel. Anyway, this took about 5 minutes of web searching, and 5 minutes to install, and the Wi-Fi was then working.
SEE: 20 quick tips to make Linux networking easier (free PDF)
Oh, there was one other small adjustment that I made. It seems that the F-keys at the top of laptop keyboards are becoming more popular for their control functions (media, hardware control and such) than as the old function keys, so some laptop manufacturers are making the Fn-key operation the default, and to get the F-key function you have to press Fn (yeah, I know that sounds weird). On the HP there is a BIOS Configuration option to control this, called “Action Keys”, so i went back to the BIOS Configuration, and changed that so they are F-keys by default, and “Action” keys when combined with the Fn key.
Everything now seems to be working as expected. The Fn-keys for volume up/down/mute, screen brightness up/down and internal/external screen select all work. Bluetooth pairs with various mice and trackballs. Suspend/resume works, including on closing/opening the lid. Audio quality is good (relatively speaking); there is a “B&O” logo on the wrist rest, so I guess that is supposed to mean audio quality is extra good. Battery life seems like it is going to be very good, but I haven’t run it from the battery for long enough yet to be more specific. Even the “clickpad” seems to be less objectionable than many I have used, at least it doesn’t go jumping the cursor all over the screen every time my thumb gets near it.
I connected an external monitor to the HDMI port, and it came up as an *extended desktop” automatically.
Changes to the dual-display configuration can be made either by using the Fn-key, which brings up this simple display control, or using the Displays utility, which gives you a bit more control over the resolution and other characteristics of each screen.
So, with openSUSE running, it was time to try a few other distributions. I just saw the announcement of Linux Mint 19.2 Beta, so I decided to give that a try. Downloading the ISO image and copying it to a USB stick was routine, and it booted with no problem. This time it was a full “Live” image (openSUSE was an installer-only image), so I could poke around a bit and see that everything was ok before installing. With the exception of the Wi-Fi adapter, everything looked good.
Installation was easy and uneventful; I noticed that Mint has improved their installer on UEFI systems so that it now allows you to choose the EFI Boot Partition, that’s nice. Unfortunately it still installed the bootloader to a directory called “ubuntu”, which can be inconvenient if you also have Ubuntu installed on the system.
Booting after the installation completed still brought up openSUSE by default, which is actually what I wanted – but if you wanted to boot Mint by default, it would simply require a trip through the BIOS Configuration again. In my case, I just generated a new grub configuration file on openSUSE (grub2-mkconfig), and it added Mint to the Grub boot menu.
As I had already seen on the Live system, the Wi-Fi adapter wasn’t working. Again, there is plenty of information online about how to download and install the necessary driver, and that process took about 5 minutes – and didn’t even require a reboot! Wi-Fi is now working perfectly.
Once again, everything looks good and seems to be working. Bluetooth, Fn-keys, suspend/resume, display resolution, all ok. One rather nice thing, Mint noticed our HP printer advertising wireless printing, and set that up automatically. My first impression of Mint 19.2 is good – no obvious big changes, some improvements in graphics and such, but generally what you expect from Linux Mint, stability and functionality.
Next up for installation was Manjaro – another of my favorites. Download, copy to USB stick, and boot Live image all went smoothly. Everything seemed to be working except for Wi-Fi, which I now expected. Installation was routine, and reboot once again brought up openSUSE. Rebuilding the openSUSE Grub config file added Manjaro to the boot menu, and I was up and running.
This time the Wi-Fi drivers are actually available through the AUR (Arch User Repository), so I installed them that way. The result was the same, Wi-Fi came up without even rebooting. Everything else works, just as it did for openSUSE and Mint. Nice.
One of the reasons that I always load Manjaro on my laptops is that they always have the “next” Linux kernel available – meaning, the one which is currently in development, which at this time is 5.2. I had some hope that the Realtek Wi-Fi drivers might already be included in the next kernel, so I installed the Manjaro “experimental” 5.2 kernel and booted that… alas, no luck.
Debian 10 (Buster) was just released, so i had a USB stick handy with the Debian network installer. I booted that, and ran the installation using the wired network connection. No problems and no surprises. The installation process took a bit longer, because it was downloading everything as needed, but total installation time was still under 30 minutes.
Wi-Fi driver installation was identical to Linux Mint, so that took about two minutes. I started to say “everything else works, just as for the previous distributions”, but I just noticed that the Fn-key for internal/external display selection doesn’t work. Hmm. Odd.
Because I generally use Debian testing, rather than Debian stable, I went ahead and upgraded to that. The procedure is easy enough, just go to /etc/apt/sources.list and change every occurrence of “stable” or “buster” to “testing”. Then run.
apt update && apt dist-upgrade && apt autoremove
No problems, no surprises, and it is now running Debian bullseye/sid
Oh, while I am thinking about it, I have been using a Bluetooth mouse while writing this, and going through each distribution in turn. There is a nice new Bluetooth management application that is even easier to use (shown here). Whenever you start this application it scans for Bluetooth devices in the area, and if any of them are in pairing mode all you have to do is click that item and it will automatically pair with it.
Finally, I installed Fedora 30. Once again, this was a fairly new release so I still had a Live USB stick handy. Booting, testing, installing, configuring all went very smoothly.
I actually had a very small hope that the Realtek Wi-Fi drivers might be included in this distribution, because Fedora sometimes just solves this kind of problem a bit sooner than other distributions. No such luck – but installing the driver was exactly the same as for the other distributions, so it was not an issue.
As with all of the other distributions, there is nothing new to report here. Everything works, it’s fast and pleasant to use.
So there you have it. Five different Linux distributions installed and working, and the only issue I had to address was the fact that support for the Realtek Wi-Fi adapter hasn’t made it into the standard Linux kernel yet. Fixing that, by manually installing the driver, was essentially the same on each distribution, and required 5 minutes or less each time.
This laptop seems so good, at least so far, that I am going to consider using it as my standard system, either instead of or in addition to the Acer I have been using. I am particularly impressed with the smaller screen (14″ vs 15.6), still 1920×1080 and quite easy to read, and the overall smaller/lighter package. I will continue using it over the summer, and then decide which to take along when it is time to start commuting to Amsterdam again.