Upgrading a Windows Laptop w/ odd hardware configuration - questions

I have a Dell G3 15" 3579 laptop that I am about to upgrade, and I have a couple of questions on how to go about this that I wondered if the SDMB could help me with. They’re kind of esoteric, but I’d like to know if anyone has any knowledge about what I might do wrong here.

This computer came with a 128 GB NVMe drive and a 1 TB HDD. I mainly use Linux, which is installed on the HDD, and the Windows partition on the HDD was shrunk from the full disk to just about 400 GB.

I can dual-boot Windows and Linux. To boot Windows, the NVMe drive needs to be set to “RAID” mode, although I suspect there’s no actual RAID going on and the BIOS is setting up the NVMe drive to use as a cache for the HDD (kinda like the Apple FusionDrive, from back when flash storage was pricey).

The complication is that the NVMe drive is invisible from Linux when it’s set up in this “RAID” mode. No problem, I can switch the setting back in order to dual-boot; it’s a bit of a pain, but I can handle it. Booting Windows will be if-and-when usually; my first Windows boot in several months was earlier this week, doing some testing on that RAID setting in the BIOS. I would still like to have Windows on this computer, though, so keeping it in working but shrunken form is still important. (It wants me to upgrade to 11, which I’ll put off until after this hardware upgrade is done.)

I’ve picked up a 512 GB NVMe SSD that will replace the current NVMe drive. My ambition will be to clone the various partitions on the current NVMe drive so that it will work just the same as the current smaller drive does, so that Windows need not change. Then, I will install Linux to the rest of the new (larger) NVMe drive and use the current Linux parition on the HDD as archival storage.

So here are my questions:

  • Will I have do do anything special to clone the NVMe drive, or can I just set up the partition table to look the same as the current drive, then image-copy each parition from the old NVMe to the new one?

  • If there is something more to do, is there a (Windows-based??) utility that can do it?

  • What’s the best way to back up the Windows data, just in case?

  • If I break something while doing the copy, is there a way to reinstall Windows on the new drive, and then restore the backup?

Any help you can give would be great. If keeping Windows on this computer is a fool’s errand, I’ll make the sacrifice, but if keeping it around isn’t too much trouble, I’d like to do that.

Given the lack of answers perhaps you should modify the title (flag the article) as you definitely need to include Linux in the title- so the relatively few Linux users here will read it.

If no one here can help you there are all kinds of very active Linux forums around, such as at Reddit.

I’m a less worried about the Linux aspect of things - I know how to make that side work. What I’m worried about is getting the Windows part to carry over correctly to the new SSD, as that is something I don’t work with regularly.

Sorry, it’s been a few years since I’ve done this and so I’m only about 60-70% confident, but if it helps, I think what you’re doing will work… maybe not immediately, but with some tweaking. If you can make a whole-disk backup at the block level rather than the file level (meaning at the layer above the partitions and file systems), it would be safer to experiment with.

I think the tricky part is getting the boot loaders set up right, especially with the RAID controller involved. (FWIW I don’t think it’s actually acting as a cache like the FusionDrive, but rather just that some earlier laptops with SSD used Intel SSD drivers that required RAID to be on for some reason; there was no actual RAID array being used for either the SSD or HDD).

In general, I would be less confident with your approach (trying a copy-and-upgrade) than a fresh install (of both operating systems), if that is an option at all. If I were doing this, I would instead:

  • Extract your current Windows 10 license key if possible. This may or may not be useful later, but try it just in case.
  • Back up any Windows & Linux files & apps I need (or at least their license information)
  • Take out the old SSD. Disconnect the old HDD (just to make sure you don’t accidentally do anything to it)
  • Put in the new SSD. Install Windows 10 on it and reactivate it. Hopefully it will “just work”, but if not, you might have to call Microsoft for a phone activation or use another method to force activation (Google it).
  • Before you reinstall your Windows apps and docs (just so you don’t waste time if it doesn’t work), first use a live USB to install Linux in dual-boot mode. Many distros will help you set up a dual-boot setup, keeping Windows safe while adding the Linux boot records and adding Grub as a bootloader so you can seamlessly choose which OS you want to use at every startup.
  • Once you make sure both Windows and Linux are working right, then reconnect the HDD (to be used as storage only, not booting) and then proceed to restore your apps and files.

This may or may not be more work (depending on how much you have to back up and restore manually), but will certainly be a cleaner end result.

Alternatively, if you don’t use Windows all that much, I’d suggest just doing a fresh new Linux install and then running Windows virtualized inside Linux. You can actually image your existing Windows install into a disk image that you can then load from a Linux VM after the reinstall. There’s much less bootloader shenanigans that way, you get to keep your existing Windows, and future upgrades become much simpler.

PS I don’t know what you need Windows for, but between WINE and Proton and Crossover, Linux can already run many Windows apps & games without needing an actual Windows install or VM. The Linux community and the Crossover company have spent many years translating actual Windows system calls over to Linux, allowing Windows apps to run directly in it. WINE is FOSS and Crossover is a commercial port of it with support and a compatibility database: Compatibility | CrossOver Mac and Linux | CodeWeavers. Might want to check if the apps you need can run in it.

  • A real native Windows dual-boot setup would of course be the most compatible (it’s real Windows). This is the most work and maintenance.
  • Virtualized Windows inside Linux will work the overwhelming majority of the time, and there would be minimal performance losses because you’re still on x86 either way (as opposed to ARM). This is a good compromise if you want almost-perfect Windows compatibility without as much hassle as dual-booting.
  • WINE/Crossover would often, but not always, work… check the compat DBs or WINE user reports on specific apps. This is great if you only need to occasionally use a few specific & simple apps.

A fresh reinstall is definitely an option - if I end up borking things badly, it’s what I’ll end up doing. But I am worried that Windows upon reinstall will try to use the entire new SSD, and that it might be less than amenable to Linux shrinking that partition, if the SSD is being used as to cache the HDD (which you say may not be the case. I’ll boot it in Windows again and take a look - I think if you are correct, there will be both a C: and D: drive).

Thanks for this - I’ll be sure to do it! This is just the kind of thing I was looking for when I created this thread, I would not have remembered and might have gotten into a bit of a spot because of it.

Do you have a recommended way to back up a Windows system? I’m looking for something local rather than to cloud storage, and I do have some USB drives with free space I can use.

The main reason I hesitate to do this is because I worry that Dell might make available some UEFI update or something that needs Windows with hardware access to make work. There’s really not much I need Windows apps for - I’m pretty much Linux-native - but keeping it around for the rare occasions may be important.

Then again, it’s about seven years old, so Dell probably doesn’t have much reason to issue any update, they probably consider it obsolescent.

Though, while researching this, I did find that Dell recommends I create a USB recovery drive and use that to reinstall Windows, so I have that to do as well.

Thanks for your help.

Hey, sorry, I’m out and about right now, but your post reminded me of something. Actually, for a brief period when SSDs first came out, they actually were used as a cache for a slower HDD:

That MAY be what you’re seeing there, which may complicate things somewhat. Maybe check if that is the case, and turn it off safely if you can (so that Windows will solely use the HDD) as a test before you change anything else?

This is what I would do. I’m leaving out details of exactly how to do these things. For that, you’ll have to search, but if you want explanations ask, and I (or others) can answer when I have more time.

  1. Download Clonezilla and create a bootable USB drive
  2. Switch from RAID to AHCI so clonezilla will see your SSD (it is Linux based)
  3. Boot to clonezilla
  4. Backup your entire existing SSD, saving it to your internal HDD, an external drive, or the network
  5. Swap in the new 512G SSD
  6. Boot back to clonezilla and restore the backup of the 128G SSD, clonezilla has various options for handling a larger disk so
    1. Use the whole disk and adjust the partitions later
    2. Mostly keep the partitions the same, but make the last one bigger
    3. Use the original size, and adjust the partitions later
  7. Switch back to RAID mode
  8. Boot into Windows
  9. Find a guide for converting Windows from RAID to AHCI, and do that
    1. If it works, great!
    2. If it fails, go back to step 6
  10. Adjust partitions using your preferred method
  11. Install Linux to the 512G SSD

The safest way to reduce a Windows partition is actually from within Windows itself. It will offer the option in the Disk Manager. You just right click on the partition and choose “shrink volume.”

(and, yes, it works even on the currently active Windows partition. I believe it restarts the computer to do the work).

It is generally considered safer to install Windows first and then Linux. Windows won’t overwrite your Linux partition(s), but it will overwrite the bootloader, and you’d need to reinstall the one from your Linux distro.

Hi folks, been busy with a few other things but I have in the process created a USB recovery drive from Windows, a Clonezilla USB drive, and my Linux install drive, so I’m going to be starting this transition soon.

First off, thanks for all your help! Clonezilla seems it will be very useful, and there were a couple of steps I had missed when outlining my first cut at things.

Second, I’ll be going mostly by @echoreply 's steps, but I will mount the new NVMe drive in an external USB case and doing the partition transfer from the old drive to the new drive directly.

I’ll post more here when I’ve made some progress. Thanks again for the help.

You might be making this harder than it has to be. When I used to have to image desktops in labs, I decided to use Linux Ubuntu as my OS. I was able to install it to a Flash Drive, thus avoiding partitioning my hard drive altogether. I would boot normally to Windows but, when I wanted to boot to Ubuntu, I plugged the Flash drive in and, at the opening window, pressed enter, chose boot order, and chose USB boot. I then booted to Ubuntu. No muss and no fuss.

In case I wasn’t clear, the entire Linux Ubuntu was on the Flash drive.

A quick (final) update: I’ve moved the SSD into the laptop, booted Windows on it and tried it out, installed Linux to the SSD and am currently restoring my working environment bit by bit.

Clonezilla was the big help. I got a copy of my Windows key but it turned out it was not needed (yet - I’m keeping it around because I hear Windows can get a little squirrely if it thinks you’ve moved it to another computer). Fortunately I also didn’t need the USB recovery key, but I have it around in case things suddenly go sideways.

Thanks to everyone who posted to the thread! I appreciate all of your contributions, even if I didn’t need them this time around.