At a previous employer, my husband, who worked from home as a developer, was given a new laptop every three years, since it was his primary work tool. One of his colleagues, after going through the hassle of setting up a new laptop, apparently opined that he wished he was getting a new coffee machine or something similar.
Speaking of which, hello from my new Lenovo X1 Carbon, likewise my primary work tool! It’s amazeballs. It is the size I like (14″) while having the weight I’ve always coveted and previously associated with <12" laptops (as weight little as possible of course, but 1.2kg or so is OK). I'm also joining the world of SSD drives, luckily modern spinning drives have way more space than what I use on a laptop (my photos are stored on an external drive, my music in FLAC on our central server and Vorbis or MP3 on our phones) so I didn't even need to dial back in order to settle for 120GB. So far, so win.
But, oh, the setup.
First, I've never had a new laptop that entirely worked with Linux, and this one is no exception. It doesn't resume from suspend (looks like this is bug 1084742 and I’m going to need to update the BIOS, so writing this entry has already paid off!). And sheesh moving my working environment from one laptop to another is a monumental pain. Especially when I’ve just reinstalled my Linode for the first time in about a decade, in order to install a 64 bit distro and thereby be able to use their SSD offering.
If you look for how to do such a thing on the ‘net, you get a few possibilities.
Use some kind of scripting/automation of the installer to get exactly the right packages, your config files set up the way you like them and such. I maintain a small number of Linux machines: three (hetrogenous) Ubuntu servers and a Fedora laptop. That’s, in my opinion, about three too few to find it worthwhile to, eg, semi-manually maintain a list of all the packages I need, work out the common versus custom bits of their config files, and such-like, especially when I reinstall so seldom. By the time a reinstall comes around, I can guarentee you I will have accidentally busted my automated install config through lack of testing, or the entire software stack I was relying on for the automation has been discontinued for years.
Copy /home and /etc to the new machine. Yeah, don’t do this.
Well, /home is basically OK, as long as you check the user ids carefully. (Fancy that, some people still run multi-user systems.) But don’t wholesale copy /etc. It worked OK for the Linode, once I edited /etc/fstab to mount the new drive configuration and chowned a bunch of things in /var to account for some of the user ids changing. Which was silly of me and which isn’t really what you’d call working, but it works now.
It was a monumental disaster on Fedora though, because I don’t speak new-fangled Linux. Specifically, I have no idea how one mounts LVM partitions from the command line and had to rely on Nautilus for it, and it turns out that if I, eg, move a new file in over the top of /etc/postfix/main.cf, SELinux won’t let it read it any more and I have to either understand SELinux or invoke random magic commands found on Google that probably amount to “disable SELinux and mail my SSL private key to the NSA while you’re at it”. Or I could understand LVM and SELinux of course, and that would be what I’d do if rebuilding a laptop wasn’t a 3–5 yearly task for me. Once again, whatever I learned will be thoroughly out of date by the time I next need to apply this knowledge.
And separately, there’s the package installing problem. Basically, both Debian-verse and Red Hat-verse systems both now have package managers that track the difference between “this package was installed at the administrator’s request” and “this package was installed as the dependency of another package”. But neither of them, as best I can tell, can export this reliably to a second machine, which means that on my new Fedora laptop, both Firefox and libwhatever.something.the.millionth are treated as sacrosanct “installed at the administrator’s request!” packages and I’m stuck with libwhatever.something.the.millionth forever, because I used rpm -qa. (There’s attempts at getting only the right packages out of the package manager, and the leading solution is now busted to the point of giving about 200 errors and then telling me I’d only ever installed 10 applications on my old Fedora install. You see what I mean about this stuff aging.)
Use some other operating system. Judging from commentary on the “yay, a new lapt— shit, a new laptop, now to spend three days of my life spinning my wheels on reinstalling all my favourite apps and redoing all my config” situation I’ve heard from Windows and Mac-using peeps, I get the impression this is a universal problem.
Use some magical program where one points at an existing laptop and say “make it like that one!” Dreamland. Although you’d think it would be something of a market advantage for Linux, which typically is agnostic on which packages you use (as long as they are open source and have certain trademark properties, admittedly, browsers are an issue here).
But I’d use the hell out of a desktop replicator, if one existed. Or even something that reliably dumped my package status including the “installed as a dependency” distinction, plus gave me some hints as to which bits of /etc I probably want.
Standard disclaimer! I’m not after any of: requests for further information for debugging purposes, exhortions to file bugs, or explanations of how to do anything with LVM and SELinux. I can figure out where to look that up when hell freezes over or it becomes a paid job of mine, one or the other.