After considerable effort and not inconsiderable frustration, I believe I have a Linux laptop configuration that “works”. Not perfectly, but possibly well enough.
Disclaimer: the observations that follow are true and accurate as far as I can determine. They're made without any real, deep understanding of the root causes. YMMV.
When last we met our intrepid hero [fool? —ed], he'd swapped hard drives to put Windows on spinning rust and Linux on the SSD. That worked, and I lived with it for a few days, but having 100+G of disk permanently consumed by Windows just didn't leave any breathing room.
I didn't want to make it impossible to boot Windows because I can imagine some future BIOS upgrade or something that's going to require Windows. If I ever have to ship this laptop off for service somewhere, having it boot Windows will simplify things, I'm sure.
I had another, new laptop drive lying around, so I swapped things around again. I took out the Windows drive and stored it carefully away, swapped the SSD back into the “main” drive slot, and put my new, blank disk in the expansion tray.
Ok. Lots of disk space, Linux up and running, time to settle in.
Love the pointing stick. Love it. After using the new laptop for five minutes, I was already frustrated everytime I had to go back to the Mac for something.
Like the keyboard. It's ok. It's chicklet style and feels reasonably good. I'll get used to it.
Hate the awkwardly inconsistent keyboard shortcuts, especially for cut-and-paste. It's Ctrl+C/Ctrl+V in most contexts, except the shell window where Ctrl+C means something else so it's Ctrl+Shift+C/Ctrl+Shift+V. Most, but not all, apps exit if you type Ctrl+Q. Generally, I think I prefer Alt to Ctrl for this sort of thing. But whatever.
Love having multiple mouse buttons. Don't know what the keyboard shortcut for “copy” is? Just click the third mouse button and pick “copy” off the context menu.
But all was not well for our hero. There are two things that a laptop absolutely <rfc2119>must</rfc2119> do: it must boot, suspend, and resume reliably and it must be able to send output to the VGA port.
This our hereo's new laptop at this point could not do.
It's worth noting that I picked a not-quite-bleeding edge laptop that uses a proprietary video card. I scrawled “kick me” on a piece of paper and taped it to my back. I've no one to blame but myself.
I wanted something with a high resolution LCD, lots of memory, and a fast processor. I acknowledge that I took a risk on the video card. There are a bunch of web pages that claim successful results with this laptop. I gambled.
And man did I very nearly lose. It took a frustrating number of hours of experimentation and abject failure before I found something that worked. Had not the very last thing I tried succeeded, I had already decided that I was going to cut my losses and give up. I had come very close earlier in the process too.
Experience has taught me that there are [at least —ed] three interacting systems involved in driving an external monitor: the underlying hardware, the drivers for that hardware, and the window manager that orchestrates the whole thing.
On this laptop there are two graphics cards; the external display ports are only connected to the NVIDIA (Quadro K2000M) graphics card. There's one VGA port on the laptop. There are two DVI ports and one VGA port on the docking station. (Pro tip: if you're plugged into the docking station, the VGA port on the laptop is disconnected.)
On this laptop, it's possible for the system to switch between graphics cards. This is called “Optimus”.
There are two sets of drivers for the NVIDIA graphics card, proprietary ones from NVIDIA and an open source “Nouveau” set.
I cut my teeth on the “Debian” flavor of Linux
I like it better than the “Red Hat” flavor. I used Debian for a long time,
then Ubuntu when I found the politics of Debian inconvenient.
But I think Ubuntu Unity
is an abomination. I discovered Linux Mint a while
ago and have used it successfully in virtual machines for a while.
I installed Linux Mint with the “Cinnamon” desktop.
I tried, for a long time and utterly without success, to use the open source Bumblebee project and the NVIDIA drivers to get Optimus working. I was able, sometimes, to get an application displayed on an external monitor, but I could never get the desktop to span across displays.
I found web pages that said if you just specified “discrete graphics” in the BIOS (effectively disabling Optimus and always using the NVIDIA card), the NVIDIA drivers would work with multiple monitors.
That was not my experience. [This was the first point at which our hero almost gave up —ed]
Then I found comments on some blog post that suggested the Nouveau drivers would work with multiple monitors if you specified “discrete graphics”. So I tried that.
Lo! And behold! It worked.
Except… [You knew there was an “except”, right? —ed]
The machine would no longer boot reliably. With the Nouveau drivers, about 3 times out of 4 I'd get a black screen at boot time. No cursor, no keyboard, no nothin'. [This was the second point at which our hero almost gave up —ed]
Eventually I found reports that adding “nox2apic” to the Linux boot options would resolve this problem.
And it did.
Fsck me! I have it working!
Except… [No, our hero wasn't expecting another “except”, either —ed]
Now it wouldn't reliably resume from suspend.
I poked around for a bit and finally found some bread crumb in the system log that suggested some part of the Cinnamon infrastructure wasn't resuming properly.
I don't actually give a tinker's damn about fancy window animations or transparency or whatever-the-fsck the hot new desktop provides. So I decided to just switch to “MATE” which used to be called “Gnome” and I neither know nor do I care about why it got forked. Mint ships with MATE not Gnome. What-ever-the-fsck.
This is the point at which I resolved to give up. If this did not work, I was done.
But it did.
Imperfectly. It boots. It suspends and resumes. It drives multiple displays (the laptop plus two external monitors at the moment). It does not react gracefully to some kinds of configuration changes. Switching from different displays to “mirrored” displays, for example, sends the LCD panel into a fit from which it cannot be coaxed back.
I think I can live with that. Maybe. I'm going to CA next week where I'll have a chance to carry my laptop around, occasionally plugging it into projectors. That works reliably enough or it doesn't. I'll let you know.
There are probably other stories to tell from the trenches too. I'll try to keep a list.