OK, so something posessed me to reinstall my perfectly functional Dell Inspiron 7559 with an Nvidia discrete 960m display adapter.  I’ve been through this a few times, and every time it’s been a hassle.  The Fedora project has made some changes recently that have made it even trickier.  I just went through a fresh install, and I’m writing this article on said laptop, with a freshly reconfigured video configuration. It’s been a frustrating few days.  Yes, I said few days.   I’m an accomplished linux sysadmin, Red Hat certified, and have been running linux in some capacity since I was a 17 year old kid in my parents basement. You could say I’ve been around the block when it comes to a linux install.  So the fact that this took me several days should tell you something. Well I got it working, of course, and I thought I’d share how, in the hopes that it will help someone else.

Changes in the F29 Installer

I was not aware of this when I started, but quickly discovered two very important changes in the Fedora 29 installer.  I installed from the Fedora 29 workstation Live USB.  From what I’m reading, that specific install workflow has been modified slightly.  You may recall in past Fedora and RHEL installers, after you’d made your disk, network, time zone, and software selections, and the install was executing, you’d have the option to set your root password, and create your user.  You’ll find in F29 that not only have some of the install time options been removed (like software selction?) but you’re also never asked to set a root password, nor create your user.  I’ll go into some pros and cons here, and explain why this was a big problem for me.

How is this a good thing?

Here’s why this is a good choice.  It simplifies the installer, Linux is notorious for being a complicated operating system.  Mainly that’s because it gives you the power, and control, to completely customize every aspect of your system.  Literally, down to the source code (if you’re so inclined).  This is great for folks like me.  Not so great for the average user who’s just looking to boot up this linux thing on their windows laptop.  Even a windows power user, may feel overwhelmed with a linux installer.  I can remember some of my first linux installs, as night-long install marathons, where I’d try to install, totally hose my system, and then reinstall and try again.  The history of Linux installers has not been pretty.  So I can understand why Fedora, and Ubuntu are trying to make these installs easier.  The Fedora 29 installer is VERY clean compared to those installs past.  And don’t get me wrong, I consider this a good thing.

The F29 installer intentionally collects as little information as possible about your desired install, so that you can install fedora, in a very clean state, so you could then hand the installed system off to someone else, and they’ll just power it up, and complete the configuration on their on.  Things like user creation, and some config, are handled on first boot.  Think, for a moment, about the first time you power on a new smart phone.  Whether its iOS or Android, the device makes no assumptions about who you are or how you want the phone setup, it asks you all of these things.  I think this is the workflow Fedora is trying to replicate.

So, why is this a bad thing?

So why did this awesomely slick install throw this experienced sysadmin into several days of headaches?  Take that smart phone use case.  What’s the one major difference between the smart phone ecosystem, and the commodity PC ecosystem?  I’ll give you a few seconds to think… 

Control.  In the smart phone game, the hardware manufacturer has control over both the hardware, and the software.  So when Samsung installs adroid on the new fangled galaxy S29, they know how the hardware and software are going to interact.  They know what CPU is in there, how much memory, what sort of graphics they’re dealing with, everything.  When you’re installing Fedora on your laptop, you’ve got a hardware/software disconnect.  Dell designed my laptop to work well with Windows 10.  It’s certified to run Windows 10, and if I were to call support, they’d assume I’m running…. Windows 10.  As a result, if i install Windows 10 on my laptop, everything just works.  I personally don’t love Windows 10, so I dual boot Fedora.  I run Fedora for my daily stuff, and boot windows for things that require it (mostly… games).  I’m sure I’m not alone here.

The Fedora project needs to remember my use case, because it’s probably a lot more common than they seem to think.  I’ll go into why in a moment.

How has the F29 installer failed folks like me?

My Dell Inspiron is not certified to run linux.  And even if it was, it’d likely be Ubuntu.  No one that I’m aware of certifies on Fedora.  So the chance that I’ll run into driver issues is not insignifigant.  The one major pain point with this laptop is the graphics adapter.  It’s an Nvidia GeForce 960M, it’s one of these discrete display adapters.  That means when I’m not asking it to render 3d, it presents a lower-end, less power hungry, intel graphics adapter chipset.  Then when I’m doing something that needs 3d, it firest up the gpu while it’s needed.  Great idea right?  This has been a pain point on linux for a long time.  The nouveau open source graphics driver has always been perilous on this laptop.  Out of the box, on an F29 install, it flat out fails.  I cant boot my machine without fiddling with the OS, and getting the Nvidia proprietary graphics driver installed. 

So run through that in your head.  You turn on your laptop after a fresh install.  You don’t have the root password, and your user has not yet been created.  The machine starts to boot, and then flat out hangs, locked up good, during the plymouth boot screen.  What do you do?  If you have an account you might have a chance to get to a login prompt in text mode, and then fix your system.  Guess what, not only do you not have a login, you don’t have a root password to login with. 

Stay Tuned

I’ve realized that this is turning into more of an opinion peice, than a technical article.  So!  Instead of making this a long winded technical article, I’m going to follow-up with smaller bits about all of the things I had to do to get into my laptop.

I’ll start by describing how I created a local user from within the liveusb environment before I rebooted into my newly installed Fedora system. You can find that article here: Adding a Local User In Fedora 29’s Live Environment

Then I’ll talk about how I got into my broken system, so I could work on the actual problem, installing the NVIDIA drivers. Fedora 29 – Discrete NVIDIA – Boot troubles

Then, finally, Installing the proprietary NVIDIA drivers on Fedora 29