Updated: July 3, 2016
Today, I shall attempt to be bold and beautiful. Or rather, boot, install and then pimp CentOS 7.2 into a near-as-perfect desktop as conceivable on my modernest hardware, the often misbehaving and Linux-not-too-friendly Lenovo G50 host. There's a lot of background info on this one, so bear with me. Bear so much that you might as well grizzly.
Anyhow, my Lenovo box is a 2015 machine with UEFI, Secure Boot, currently set up with sixteen partitions, spanning Windows 10, a whole lot of Linux distributions, and such. It also comes with a Realtek Wi-Fi card, which has been the bane of pretty much every young man, I mean distro, that I've tested. Because the drivers suck, and no one bothers fixing them. Then, to make it even more intriguing, CentOS used to not boot on this box, until now. Follow me.
I love CentOS. It is not meant to be a home distro, but it works great in that capacity. If you recall my CentOS 6 games, it was simply amazing and fast and cool and good. And the latest version also works remarkably well on the LG RD510 machine, which also has an aging Nvidia card.
So I thought, what about new hardware? Alas, for a while, CentOS 7 would not boot there. In fact, no Red Hat distro would, adding to the growing list of distros that caused me grief and thus ended up becoming yet another infamous entry on my rejection reports. After a while, I decided to try updating the laptop firmware, and we had some progress, at least in the Red Hat space. First Fedora, and now CentOS, although from a DVD. But UEFI poses no threat, and in the past, we've even seen the ancient version 6 run pretty well on SSD. Booya.
Live session & installation - Awful start
Booted okay, if slowly, but then I had no Wireless. Not at all. The RTL8723BE module is not a part of the CentOS live KDE edition, probably because it's proprietary and such.
I was really keen to move forward, so I manually downloaded the driver kmod RPM from ELRepo, installed it, and then added the kernel module into memory.
rpm -ivh kmod-rtl8723be-0.0-4.el7.elrepo.x86_64.rpm
warning: kmod-rtl8723be-0.0-4.el7.elrepo.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID baadae52: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:kmod-rtl8723be-0.0-4.el7.elrepo ############ [100%]
Working. This may take some time ...
This triggered an oops, but it didn't crash the host:
Message from syslogd@localhost at Jun 16 18:05:18 ...
kernel:BUG: soft lockup - CPU#0 stuck for 23s! [NetworkManager:1130]
And more of the verbose vomit in the messages, with some of the misc information removed, and only the important pieces in there. Maybe someone will actually finally bother to look at this neverending Realtek saga.
BUG: soft lockup - CPU#0 stuck for 23s!
Modules linked in: arc4 rtl8723be(OE) btcoexist(OE) rtl8723_common(OE) rtl_pci(OE) rtlwifi(OE) mac80211 cfg80211
 rtl8723_fw_free_to_go+0xb6/0x110 [rtl8723_common]
 rtl8723_download_fw+0xbb/0x150 [rtl8723_common]
 rtl8723be_hw_init+0x13f/0xc00 [rtl8723be]
 rtl_pci_start+0x51/0xc0 [rtl_pci]
 ? rfkill_blocked+0x23/0x30 [rfkill]
 rtl_op_start+0x51/0x80 [rtlwifi]
 ieee80211_do_open+0x351/0xdc0 [mac80211]
 ieee80211_open+0x69/0x70 [mac80211]
 ? rtnl_newlink+0xf3/0x830
 ? cred_has_capability+0x90/0x120
 ? security_capable+0x18/0x20
 ? ns_capable+0x29/0x50
 ? rhashtable_lookup_compare+0x36/0x70
 ? rtnetlink_rcv+0x30/0x30
 ? sock_has_perm+0x75/0x90
 ? __alloc_pages_nodemask+0x199/0xb90
 ? do_truncate+0x86/0xc0
 ? free_pages.part.62+0x40/0x50
 ? free_pages+0x13/0x20
 ? __do_proc_dointvec.isra.6+0x30c/0x3a0
 ? mntput_no_expire+0x3e/0x120
 ? mntput+0x24/0x40
 ? __fput+0x183/0x270
Code: fc 53 65 44 8b 2c 25 1c a0 00 00 66 66 90 0f ae e8 e8 9b bf d1 ff 66 90 89 c3 eb 14 0f 1f 44 00 00 f3 90 65 8b 04 25 1c a0 00 00 <41> 39 c5 75 1d 66 66 90 0f ae e8 e8 76 bf d1 ff 66 90 89 c2 29
However, after a few seconds, I had Wireless connectivity, and I was able to connect to my router. For the duration of the live session, the network remained stable, which is more than can be said of most other modern distros we tested this spring. Open my Software & Security page, check the last half a dozen reviews and revel in all the stupidity and this sad inconsistency that we were handed out.
After this, I initiated the installation, and overall it went well. CentOS 7 assumed control of the bootloader, and it happily chained most other systems available into its menu, including Windows, but not GeckoLinux, which uses BTRFS. Not all distros do this, and CentOS is among those that don't. Not happy about it, and that means it cannot remain the top dog in the GRUB area. Roughly half an hour after starting my test, I had CentOS up and running.
Things are improving - fast and steady
I did need to grab the driver again and load it into memory. Before doing this, I made the modprobe.conf file with the tweaks I described in my tutorial on the Realtek drivers for Trusty, and there no lockups this time. In the last three days, I have not had the network drop even once, which is much better than any recent Ubuntu flavor, for example. This also includes actual work with some semi-rigorous networking, in terms of speed and connections. After that, I tried updates, but there were only a few small ones, as the available image seems to be up to date and contain the new and fancy stuff.
Do you know why my CentOS 7 pimping articles are good? Because I used them to help myself pimp my CentOS. That's called inception. I used both the first article, linked at the top, and the second article for making CentOS perfect. It comes down to using additional software resources, like the NUX repo. Then, I installed LibreOffice, GIMP, Skype, Steam, Lyx, VLC, media codecs, Flash plugin, and several other components. I also added Google Chrome. And VirtualBox. And YuMex. And more.
Then, I applied a layer of beauty. We shall discuss CentOS makeover in a separate article. In a nutshell, I went for some nice square icons, an openSUSE theme, which might feel like cheating a little bit, and a dazzling wallpaper. But it did transform the somewhat old KDE 4.14 into a modern and relevant thing. More screenshots below. Be patient.
Finally, in order to never get caught red-handed should I need to compile anything, I grabbed the build-essential bits and pieces, like the kernel source and headers, make, and gcc, just to be on the safe side. The network was true and steady.
Let's talk about this a little more. So we had the Realtek issue resolved. Proper resolved. Even after waking up from sleep, the laptop always resumes nicely. I tried this at least a dozen times. Compare that to Ubuntu Xerus. What a shame. And I've been telling people about these Realtek issues for more than a year.
Samba sharing also works well, including both IP and names. You do need to authenticate, this is the new security crap, but you only need to do that once, for real, and it works fine. CentOS actually remembers the authentication, and it's only the KDEWallet that may prompt you the first time you login into a session or wake from suspend, but this applies for all your different credentials stored in the wallet. Surprisingly smooth. Plus the speed is also decent, roughly 4-5 MB/sec, twice the typical distro. And steady.
The network speed was quite all right with the Realtek driver, about 55/19 Mbps on a line that is capable of 80/20 Mbps. And it's steady and works fine all the time. Samba printing also works - if you follow my instructions on this subject. Not by default, because KDE likes to suck sometimes. Still, the solutions are simple and robust, especially because I wrote them. As a dessert, the firewall will auto-adjust itself to allow the right kind of connections. Very nice indeed.
CentOS 7 handled Lumia just fine, which can't be said of most KDE and Plasma distros. Ubuntu Phone was a no go, and iPhone requires its special tweaks to be seen and usable. I don't understand why Dolphin can't support this natively. In this regard, Gnome-based environments are far ahead. All in all, good but not perfect.
Please note that the phone was mounted using PTP rather than MTP, and this means read-only access, so you can download files off the phone, but not upload. So this is a niggle that we need to fix. Plus the iPhone nonsense also makes KDE a difficult choice for daily use. This is annoying, and I am currently working on how to sort out MTP under KDE4. I will follow up with all the necessary information and resources and whatnot in a separate tutorial. It will be a nice one, hopefully.
Media supportAfter getting the right codecs, everything worked fine. Now, Flash Player performance in Firefox is pretty choppy, with or without hardware acceleration, but the native plugin in Chrome seems to work well, for those few sites that still may require this technology for playback. There were also a few other tiny niggles around live streaming, but I must tease you with a cliffhanger and resolve that separately, in another article. Good things shall come to those who wait. Other than that, it was excellent. MP3, HD, lovely.
Hardware compatibility, suspend & resume
I am really pleased how CentOS handled the G50 machine. It's not perfect, but it is much better than most other distributions. The screen auto-dims instantly if you go to battery power. The laptop suspends itself after a while. Most home distributions have poor power management profiles, and they often don't bother with these seemingly trivial things. Overall, suspend & resume worked majestically.
The laptop did have three kernel errors, around machine check events, but this comes from a firmware misconfiguration rather than any real hardware problem. Trust me, I know, I'm an engineer. And the other outstanding issue is that the Fn volume buttons only control the system volume but not per-app volume. This could also be a weird KDE issue, but it can be embarrassing when you have to stream your po ... files full volume and the buttons don't respond. Again, I have a fix for how KMix handles stuff, and we will talk about this in another guide.
CentOS 7 likes to eat memory, but it is fast. This distro, despite its KDE layer of bling bling, is pretty responsive and agile, and the CPU does not toll high and mighty. It's rather well optimized, I have to admit, and it does not lag behind any modern Linux you can think of. Only Xfce flavors are perceivably faster, but then by a tiny margin. For those of you who love numbers, CPU idled at about 2-3%, and this is KDE we're talking about, and memory usage was about 950 MB without doing anything else.
Nothing too spectacular. But for a distro that is somewhat behind the recent crop in terms of power management and whatnot, plus the older desktop environment, it's not too bad really. You get 2.5 hours, a pretty okay number given the circumstances.
I mentioned this earlier, but yes, lots of pretty stuff. Got the right decorations, then the CentOS menu icon got lost, but I had it restored manually, so the distro has its badge and pride. And it does look quite majestic and as relevant as any.
End of the day
Good stuff really. Not perfect, far from it, but way and beyond my expectations. CentOS 7 managed to deliver a passable, and even more importantly, a largely consistent setup, which is only improving by the minute, as I'm tweaking the finer details of the KDE desktop more and more. And every little fix stays permanent.
CentOS 7 is an excellent choice for home use, even on a laptop that's not Linux friendly, and it does its work well despite the challenges, the likes of Realtek, UEFI and other buzz words. Now, if only different distros could blend the good elements from their peers. In this case, Ubuntu and friends are more media friendly, and you have better smartphone support. But CentOS does the basics much better, and this means stability, consistency, and weirdly, hardware support.
It's like being asked whether you want to lose an arm or a leg, and you can't have both. In theory, Ubuntu is supposed to give you that LTS fun plus the latest and greatest software, but in reality, this is not happening with Xerus. Yes, Trusty is there, and it's still the best overall candidate for desktops, in whatever guise. CentOS comes rather close. Yes, it does have its antiquities and enterprise idiosyncrasies, but the problems are solvable. That's a really nice thing. You can actually fix issues, and there are no surprises waiting for you the next day.
I did invest a significant amount of energy in making CentOS 7 work on the G50 machine. We can't ignore that. But the yield is highly positive. The outcome is worth the effort. You need the right network support and some extra repos, but after that, you can add new software, codecs, bells and whistles, drivers for other filesystems and protocols, and anything else you fancy. Well, almost. All considered, this is far more than you'd ever expect. There's still more work to be done. I will address all sorts of issues in follow up articles, including stuff like MTP, Flash performance, adblocking, volume control, and more. And I think you will be amazed how far you can take CentOS if you set your mind to it. Hint, Gnome edition perhaps?
Which makes it a darn good candidate for your systems. For one reason only. It needs fixing only once. It does not regress. For me, this is a hugely important attribute for anything I may consider for my production setup. CentOS 7, the biggest and most pleasant surprise this awful spring testing season. Modern hardware, here you go. Off to you guys. Do it. Do it.