Mastodon

Cloning an ancient laptop to new hardware requires care

Send to Kindle

Astute readers of the headline will realize that I failed to do that… There was a happy ending though (thankfully).

The past few posts have had TL;DRs up front. This time is will be at the end, so if you don’t want to follow this saga (and who could blame you!), just skip to the end to absorb the lessons

History

Lois and I each got new laptops in 2014 (February if I recall correctly). If you read this space, you know I replaced mine this past July (2023) with a Minisforum UM790 Pro mini pc (which I’m extremely happy with). My laptop was working perfectly even though it was 9.5 years old. I have run Linux full-time for at least 14 years, so the demands on the hardware don’t dramatically deteriorate with each OS upgrade.

Lois’ laptop was just as old, but she’s a tougher one to upgrade simply for safety sake (hence this history section). Those who know Lois know that she is effectively legally blind. Much of what she does is accomplished via muscle memory and vague (familiar) outlines. That makes her averse to any changes in her environment that make things look different.

That is particularly true of technology (though it applies in general). When apps or Windows make the slightest change to their UI, she instantly knows that something’s different even if she can’t articulate what changed. If it’s very different, she’ll ask me if there’s any chance of reverting to the way things were…

Every time that I have asked her if she’d like to preemptively get a new laptop, both for speed and to potentially avoid an emergency should the old one fail, she says no. The reason is that I can’t guarantee that a new one will be exactly like the old one (visually).

How can that be true (you ask)? Because Lois is on Windows 10 and her main tools are Outlook 2003 (yes, the 21 year old version) and Word 2003 (did I mention that Lois doesn’t like visual change?)! I can’t guarantee that a new machine, with Windows 11 likely on it, will even allow Office 2003 to install! For example, even Windows 10 won’t index Outlook 2003 emails (Windows 7 did it perfectly, so MS just decided to ditch that code!). Thankfully, Copernic indexes it just fine.

One last problem. Lois has run her laptop (capable of 1600×900) at 800×600 (the lowest resolution permitted) so that things are big enough for her to see. There are windows that don’t fit in the screen (thank you app developers who don’t care about people with particular needs) and a very few that won’t even launch in that resolution (even though it’s supported by the OS natively).

That means that when I look for a new laptop, I don’t look for the latest/greatest screen tech with UHD and high-end GPUs. I want something boring and lower res. There aren’t many of those where the CPU is worth the upgrade, and where I can still get high-speed SSDs (NVMe) and high-speed RAM.

The Proposal

I have been shot down many times when I’ve offered a new machine that I thought might work for her. A couple of weeks ago, I saw a machine on NewEgg that looked like it might be ideal. It had a 17.3″ screen (a requirement, since that’s what she currently has!), a Ryzen 7530 APU (CPU with integrated graphics), 32GB of RAM and a 2TB NVMe SSD. Blah, blah, blah… The critical thing was that the max resolution on this thing is 1600×900, so it matched her current machine, but with newer tech inside all around!

The price was really good too, but I bothered to double-check Amazon, and they had the identical machine available for $60 less (both were at very attractive prices!). I asked Lois if she would let me get it, and to my great surprise, she said yes.

It’s an HP 17z-cp300 (that’s the base model, not the one I ordered, for those who care).

The Wait…

I ordered it on Sunday January 21st. It was scheduled to arrive Thursday the 25th. On Thursday I got a message from Amazon that it was running late, but still on the way (tracking showed that UPS had picked up the machine, so the problem was not Amazon’s, or the vendor that sold the laptop, upgraded from the base model).

The next day, no laptop either, and no updates on the tracking site. On Saturday, Amazon sent another message saying that if it didn’t arrive that day, I could request a refund or replacement unit on Sunday. Of course, it didn’t come, and there was still no update from UPS.

On Sunday I asked for a replacement, which they promptly processed (for the identical specs) and once again it was scheduled to arrive the following Thursday, February 1st. This time, it showed up late in the afternoon on the expected date.

It was too late to unpack and start working on, and it turned out that Friday wasn’t convenient to start either, so it sat in the box.

On Friday evening, as we were going out to dinner, I happened to look back at our front steps (I don’t know why, as I wasn’t expecting any packages), and I was shocked to see a box that suspiciously looked like the one I got the day before, sitting there. Sure enough, it was the originally ordered laptop, one day after the replacement one got there.

I returned the original laptop in the unopened box via Kohl’s the next day (they truly make these returns painless).

The Discussion

Of course the machine came with Windows 11 on it (I knew that in advance). That didn’t mean that it had to stay on the machine though…

I discussed the various choices with Lois. The simplest solution (for both of us) was to clone her current 2TB (ancient) 2.5″ SSD to the new machine. That way, theoretically, nothing would change for her, and I wouldn’t have to install a bunch of stuff either.

There were a number of downsides to counterbalance the ease. Outlook 2003 crashes and can’t be relaunched roughly once every other week (sometimes more often, sometimes less) and I have to repair it. I don’t mind, but if I’m not around, or otherwise engaged, Lois is stuck having to use her phone for email. I’ve cautioned her that while I have had a 100% success rate in reviving Outlook so far, any arbitrary update to Windows could kill it forever at some point…

That brings us to the second downside. Windows 10 is supposed to lose support (and most updates) sometime in 2025. At that point, it wouldn’t be prudent to stay on it for much longer, so biting the bullet now and going straight to Windows 11 (and then likely to 12 toward the end of this year) has its benefits.

The two serious downsides of going to Windows 11 would be a complete change of the look and feel of everything on the OS side (even sighted people often prefer Windows 10 to 11!), and the fact that there’s no way that I would try to get Outlook 2003 working there. Lois would have to bite the bullet and either go directly to Outlook 2021 (we own a fully licensed copy of Office 2021, which I was unable to get her to use, yet…) or if I had my way, we’d ditch Outlook and go to Thunderbird (which is what I use on Linux).

We went around and around much longer than either of us cared to, and in exasperation, she chose the just keep everything the same option (in other words, clone the old drive to the new one). At least that was the easy option (famous last words…).

The Problem (that I created…)

As I mentioned above, Lois has a 2TB SSD currently. It has 650GB free. She takes a ton of photos (on her real camera, no sissy phone cameras for Lois!). I obviously could have cloned her drive to the new 2TB NVMe drive and had the same space available, but I had an unused 4TB NVMe SSD that I had purchased a few months earlier in case I got her a bare bones machine. That would give her breathing room, but also give me an emergency fallback, since I could just put the new NVMe drive back in and instantly have a working Windows 11 machine.

It’s actually simple to clone a smaller drive to a larger one. Depending on the size of the partitions, and how full they are, it’s possible that it can take time (or be annoying), to resize things after the fact, but at least you don’t have to worry about shrinking things and possibly losing data.

This is where I made my first mistake, quite a serious one (in retrospect), which had two separate consequences (the first one should have been my clue that the second one was coming, but unfortunately, I was too in the weeds with the first one to pay attention to what was coming…

Having not thought too carefully about it (go back and read the last two words of the post title: requires care) I did the simple, straightforward (and wrong) thing. I used Clonezilla to do a direct disk to disk clone. I put the 4TB NVMe drive in an external enclosure, plugged it into her USB-A 3.0 port, and cloned the drive. The clone took an hour and worked flawlessly.

After the clone, I had 2 extra TB’s that I needed to incorporate. I moved the last partition (the Windows Recovery partition) to the end of the 4TB drive, and tried to resize the main 2TB partition (with all of her data on it!) to fill up the new gap that I created. It should be an instantaneous operation since no data is being copied or written, blocks are simply being reserved for the existing partition to use.

Unfortunately, gparted (the app that I was using), returned an error. While I noted the error, I didn’t really hone in on the details (a very dumb thing on my part), and I just tried to logically think about what could have failed. I tried way too many things (all of which failed) to bore even myself with repeating them (I’m not sure I could articulate them all either), before I finally double-clicked on the specific error code in gparted, and realized that the disk that I cloned had the partition table in MBR format (an old, tried and true format, which was no surprise for a 10 year old machine!).

MBR partitions can not be greater than 2TB, so no matter what tricks I tried, I was never going to be able to grow that 2TB partition to 4TB. Doh!

OK, time to convert the disk from MBR to GPT (the newer format that is standard everywhere on newer installs). Typically, the conversion can be done without data loss (and that was true for the most part in this case, in particular for the 1.3TB of Lois’ important data!).

Unfortunately, one of the consequences of doing this meant that some of my other partitions changed in size, so I could no longer simply grow the big partition, I had to simultaneously grow it and shift it to the right (to make room for growing an earlier partition). That took a very long time to move, even on a fast NVMe drive, as it’s essentially an overlapping copy, which they have to take great care in doing (and it was done perfectly, with no data loss!).

So, problem #1 solved (truly), in that I now had the disk layout exactly as I wanted. Unfortunately, as I mentioned above, I absolutely should have realized that there was another, bigger problem lurking as a direct result of the same MBR issue… I was too busy (silently) celebrating overcoming the first issue to consider there would be another.

The Second Problem

I was finally ready to boot into Windows 10 and declare victory (and turn the laptop over to Lois!). Nope. The boot process complained that there was no OS installed.

It was only then that I realized the second problem. The old laptop was doing a legacy MBR boot, but the BIOS on this laptop was expecting UEFI. I knew it would be shipped with a UEFI BIOS (as Windows 11 requires it), and I even went to the effort of turning off Secure Boot before going to the trouble of cloning the old drive, but I never stopped to think that even with Secure Boot off, the new UEFI BOOT would not recognize the old MBR BOOT partition.

I decided that the most straightforward solution would be to reclone the old drive, but do it as separate partitions, not a single drive. That way, I could restore them wherever I want, rather than have them laid out in the same exact block. But, I couldn’t do that to the NVMe SSD (because that’s where I’d need to restore to, plus reopening the HP laptop was something I wanted to avoid at nearly any cost!).

So I dragged out an 8TB Seagate hard drive, and started up Clonezilla again. This time, it was going to take many hours to clone the partitions (it ended up taking over 5 hours, though I had gone to bed before it finished).

It was getting late in the day (this was Saturday) and I was ready for dinner and a little relaxation, so I let the clone run and tried to put it out of my mind.

I’m not a great sleeper (I used to be, but about 5 years ago, that changed dramatically for the worse). I got a great 4 hours of sleep that night (seriously, if I get 4 contiguous hours of good sleep, I declare victory!). I got out of bed at 2am (without waking Lois up, so double victory!) and went to work on the laptop.

I decided to copy the UEFI BOOT partition from the new Windows 11 SSD to the BOOT partition of the 4TB drive (giving me what I hoped would be a working UEFI partition). But I took the Recovery partition from the Windows 10 clone and put it back on the 4TB drive, so that any repairs would be made by the correct OS version.

When I went to boot, it failed again. But, there was progress. All of my cloning and gparted work was done by booting a live Linux USB drive with an awesome utility called Ventoy on it. Ventoy boots and can then subsequently boot most ISO files that sit in the Ventoy folder. I keep over 10 different distributions and tools on there and boot whichever one is most appropriate to the task at hand.

That turned out to be two different ones for the various tasks. The first (and to some extent most important one) was the aptly named SystemRescueCD. That had both Clonezilla and Gparted on it. I can’t count how many times I booted that ISO (within Ventoy). The other one (that I booted a handful of times at least) was an ISO of Windows 10 from 2004, to get into the command line recovery terminal.

I tried every suggestion that the Internet had to offer about rebuilding my UEFI boot partition. That included bootrec commands, bcdboot commands, etc. Most of them worked (meaning, they declared success), and yet I still wasn’t able to boot.

I then tried something I tried earlier (that failed), but this time it worked, so some combination of the things I tried above did indeed make some progress, even though it did not make Windows 10 directly bootable. Ventoy has a number of functions besides being able to boot arbitrary ISOs. One of those functions (you reach it by pressing F4) is called a Local Boot. Instead of having the UEFI Partition boot your OS, you boot Ventoy, then press F4, then click on Search for Windows Installation (or something similar to that).

When I did that (after a bunch of the above attempts), it found and booted Windows 10, which looked exactly like Lois’ desktop (which is how I knew that with all my machinations, I didn’t have any data loss on the main partition!). None of the drivers were loaded, as this was an AMD Ryzen machine, running off a cloned disk that had only Intel drivers on it. So, no Internet (for one specific example).

Luckily (and at this point, I attribute anything that I did correctly purely to luck!), I had downloaded every available driver from the HP site in advance, and put them all on the Ventoy disk. I was able to quickly get the drivers installed (Audio, Graphics, Internet, Bluetooth, etc.). I still couldn’t boot directly into Windows 10, but I could reliably boot into Ventoy, search for a Windows install, and successfully boot it, every time. Progress!

The Solution!

I continued to try many things. One of the wilder ones (which failed miserably, but eventually made me realize the error of my many ways…) was to install rEFInd (a very cool utility that supposedly takes the pain out of EFI booting (hence the capitalization of EFI in rEFInd). When that didn’t work (after multiple attempts at varying little things each time I tried to install it and reboot), I realized that the BIOS simply wasn’t even looking at the UEFI partition on the disk, and was always booting from the Ventoy disk after failing to boot off the internal one.

I decided that I needed to nuke the EFI partition and build it from scratch. That’s when I discovered the previously mentioned second problem. The partition that I kept calling the EFI partition wasn’t capable of being a real EFI partition for two separate reasons (either one would have failed to boot).

The partition was marked as Microsoft Data (not UEFI) and it was formatted NTFS, not FAT32 (please don’t ask me how I messed that up, as I definitely know better). My only excuse is that it was likely 5am at this point…

I changed both of those errors, flipping the Type to EFI and the Format to FAT32. The format wiped the partition clean (of course). Now I knew that I needed to boot into Recovery (from my Windows 10 ISO on the Ventoy disk), or, use Ventoy to boot into the real Windows 10, and rebuild the EFI partition from there.

So, I reboot the laptop once more, eagerly awaiting the fix, and nothing works. When I say nothing, even Ventoy didn’t boot, because when the BIOS failed to find a working boot partition on the internal disk, it didn’t continue to the next bootable device (in my case Ventoy), but instead just complained that no boot devices could be found. Uh oh, did I just completely hose myself?

Thankfully, when I forced another reboot, and pressed the Esc key to interrupt the boot, I was able to press F10 to get into the BIOS Setup. From there, I was able to change the boot order and place Ventoy before the internal disk. That worked.

I was then able to find Windows and boot the internal Windows 10 (instead of the Recovery one). I was then able to execute the exact commands that I was issuing above (bootrec and bcdboot, etc.) and this time, when they declared success, they meant it! A real EFI parition was created with the correct files on it.

I had to go back into the BIOS and put the internal disk at the top of the boot order, but the next boot went straight into Windows 10, and all was right with the world. That happened at around 6am, so 4 hours of completely missing the point on my part, with a very simple solution in the end…

TL;DR

Instead of cloning the entire drive, especially disk-to-disk directly, clone each individual partition to an interim disk. This will give you the flexibility of formatting and partitioning the target disk however you want, and restoring the individual partitions to wherever you want them to be, and easily grow them without copying data internally.

Make sure that you are using the correct Type and Format for the EFI Partition. Feel free to wipe it (rather than incorrectly copying over an ancient MBR partition!).

Once wiped, boot into either a Recovery ISO (actually, a real Windows Installation ISO, which you then go into Troubleshoot->Advanced->Command Line) or your restored Windows OS and run the various bootrec and bcdboot commands that you will find on hundreds of sites on the net.

Presto Changeo, you have yourself a working clone of your previous install.


Posted

in

, , ,

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *