If you read “Jenny’s Daily Drivers” or “Linux Fu” here on Hackaday, you know we like Linux. Jenny’s series, especially, always points out things I want to try on different distributions. However, I have a real tendency not to change my distro, especially on my main computer. Yet I know people “distro hop” all the time. My question to you? How do you do it?
The Easy but Often Wrong Answer
Sure, there’s an easy answer. Keep your /home
directory on a separate disk and just use it with a new boot image. Sounds easy. But the truth is, it isn’t that easy. I suppose if you don’t do much with your system, that might work. But even if you don’t customize things at the root level, you still have problems if you change desktop environments or even versions of desktop environments. Configuration files change over time. Good luck if you want to switch to and from distros that are philosophically different, like systemd
vs old-school init
; apparmor vs SELinux. So it isn’t always as simple as just pointing a new distro at your home directory.
One thing I’ve done to try out new things is to use a virtual machine. That’s easy these days. But it isn’t satisfying if your goal is to really switch to a new distro as your daily driver.
The Reason

The reason this came up is that I generally like KDE and was using Kubuntu for a number of years. They tend to lag a bit on the KDE desktop, so when KDE came out with Neon, I was sold. However, since they were both based on Ubuntu/Debian, there was a mostly working upgrade path to convert a Kubuntu installation to Neon.
Fast forward to today. Neon has been suffering lately. I hear there is one volunteer keeping it running. KDE has decided to shift focus to a new distro that does things I’m not crazy about (immutable system; Wayland). So it was time to hop again.
I’d heard that OpenSUSE was good at keeping up with KDE, and the rolling release of Tumbleweed appeals to me. So I made the switch.
The Hard Way
I am in no way suggesting you do this. It was a bad idea, and while it worked, it was a lot of effort. Even so, it only worked because I have way more disk storage than I need: my root file system is way under 3 TB, and I have about 9 TB of RAID as my primary hard drive. Of course, you should be backed up. But if you’ve ever had to restore from a backup, you know that’s no fun. Better to have it and not need it.
So what did I do? I used kvm to stand up a virtual machine, and then I installed Tumbleweed on it. I turned off the btrfs features since I didn’t plan to use them. Then I set about matching my Neon desktop. All the KDE settings. All the strange systemd
services and timers I have set up. The systems I use to run my own dynamic DNS. As much of everything as I could think of.
I got to the point where working in the VM was comfortable. My browsers and all my other tools were ready and configured.
You know I forgot something. I knew too, so I wanted to save things for reference. First, I booted from a live image and made a copy of my entire root file system under /NEON
. Then I rebooted and created a new virtual machine and booted a “live” ISO file on it.
A Hard Day’s Night
The next step was to copy the snapshot of the /NEON
directory into the VM. Sure, I could have used LVM snapshots or, if I were still using btrfs, a snapshot from that. But I have plenty of disk space, especially after pruning off some very large directories from the copy.
The key to this, by the way, is using the nbd
program to mount the VM’s disk image. You do need the nbd
module loaded, if you have it as a module, and then you export it using nbd
. From there, you get a device you can mount just like any other. I’d explain it, but you really shouldn’t be taking this as instructions. Still, if you need to do it, [shamil] has a good, concise explanation.
Of course, the new VM won’t boot. You have to bind
mount all the running directories (like /run
and /proc
) to the right mountpoint and then chroot
into the mounted file system. Once there, you can rebuild your init image and run grub
. After that, you should be able to boot into the old Neon system in the new VM.
The Beauty of It…

So at this point, I had not made any changes to my main OS. I had a copy of it for backup purposes, and I was able to boot into a clone of it using a VM. I could also boot into the target system with a different VM.
The next step was to boot to a live image again and nuke nearly everything on the root file system except for /NEON
, and the VMs, of course, which were on separate drives.
I thought about running the Tumbleweed installer and then copying files from the VM, but instead I decided to just do it by hand. I copied the files from the new VM over to the real root drive, using nbd
again. Then I had to do the whole bind/mount/chroot/reinstall steps again.
Did It Boot?
It did, in fact, boot up. There were a few glitches, mostly due to self-inflicted problems. When I restored some large directories and some SSD-based temporary directories, I created some SELinux problems that were fun to track down. I had, of course, forgotten a few things installed deeply, too. But that wasn’t a problem. I could still go grab stuff from /NEON
or even boot the Neon install up in the VM to compare things.
I am about to the point where I will delete the extra copies of things. I’ve already released the Tumbleweed VM. But it occurs to me: I won’t do this again. That leads to my question for you. If you distro hop, how do you do it? Let us know in the comments. Then again, current thinking is to have a minimal system and then put everything in its own container anyway.
Again, I beg you, don’t follow my example. This was way too much work and risk. But I’m also crazy enough to relocate /usr.
My home ‘data’ is on a home server. The other machines /home folder is periodically backed up to it. So changing desktops/laptops/SBCs to a new distro would be no big deal — IF (big if) I want to do so. That said I run LTS versions for a reason. One gets tired of installing an OS every 6 months or year when you got lots of machines…. Plus, I don’t like distro hopping anymore… that’s a ‘been done’. Realized a few years ago that Linux … is Linux… so I stay with a reputable distro. I ‘use’ the applications on the Linux OS now instead of ‘deep dive’ the Linux OS proper (building kernels, caring about scheduling, etc.) . I mean, as long it runs Firefox, Thunderbird, FreeCad, KiCad, run ssh, sftp, run compilers, cross compilers, allows me to print, etc. and is ultra stable, I am happy. The OS is just a means to an end. Right now KUbuntu LTS makes it all happen. Oh, and the home server(s) runs headless…. It just needs a ssh interface to keep it in good shape. Once in a few years, the server(s) gets upgraded to latest LTS (sometimes with new hardware upgrade). Since the data drives on the server are separate from OS drive, it doesn’t take long to install, and then final step to setup fstab to point to the old mount points and setup nfs. Simple.
Note, to try a new distro for fun, I simply install it in a VM. Note I keep latest Fedora in a VM because I have a soft spot for it.
Technically I distro hop, but that’s whatever OS the VM writer used. Have enough space and hardware not to notice any difference.
‘Distro’ sucks. But it is the password to the roundfile, job applicants.
So you’re not into the whole brevity thing then?
Abbreviated yet clear communications would be a plus for candidates I interview
Whatevs.
I see what you did there.
fan is short for fanatic. Lazy Linux fanatics will not use the King’s English while they are hoppian from distributions to distribution.
Approach with the least brain damage for me: nuke everything from orbit and start again. Have screen shots or copies of config files, for future re-configuring use, and copy over any data files etc., but that’s it.
I distro hop via laptops. I’m a desktop as my primary computer person. Laptops are for travel or occasionally using computing resources on the couch. So I usually try out different things on a laptop. That said, like the current top comment on this post – I settled on Fedora a LONG, LONG time ago. (I have been using it as my main since it came out in 2003). Linux has settled to the point where I don’t generally look forward to new releases unless I need the latest compiler (and there are easy ways around that with containers nowadays). It JUST WORKS and that’s all I want in a computer nowadays.
i do the opposite of distro hopping…i always use debian (devuan) unstable, and just roll with the piecemeal upgrades as they wash over me. When apt wedges itself, i always seem to have more stubbornness than it takes to get through it. i had a debian install that lasted about 15 years before i reinstalled in 2019 to switch to amd64…which still seems new to me :) One way or the other, i buy new laptops often enough that i am pretty good at getting a new install up from scratch but i’ve never reinstalled on a laptop after that first go, still use an i386 (32-bit) install on a 2010 laptop that just won’t quit.
When i did reinstall, i kept a copy of my old root partition (wasting 72GB doesn’t mean what it used to) just so i could dig up config files. Still have my old pre-amd64 root sitting around. And i keep media and /home rigidly segregated from the OS install, of course.
i can’t see myself staging in a VM like AI Williams did…the touchy parts for me are always things that wouldn’t translate into a VM very well. On laptops, i always have to remember a few key changes in /etc/acpi and how to set up /etc/wireguard, and on my ‘main PC’ (headless), there’s just a bunch of random stuff…firewall, wireguard, openvpn, httpd, nfsd, named, a random piece of bespoke hardware on one of the USB ports, all sorts of things…none of which makes any particular sense under a VM. Like, i could run the httpd server under the VM but i wouldn’t want my diverse clients sending API calls to a temporary/VM instance. So there’s just a little bit of a mad dash to get core functionality working whenever i do reinstall.
As for my GUI config, i just copy and customize .xinitrc, .fvwm2rc, and a very small pile of ~/bin/ helpers, like it always has been for 30 years :) In modernity, i also copy .mpv/config/input.conf too.
i’ve switched to using an almost entirely-uncustomized chrome install under a VM, which i think is a better situation than trying to customize it but failing
My dumb setup is multiple distros sharing the same btrfs filesystem with their own root volumes, some shared data (like logs and wifi+bt connextions) and a home volume. It “just” needed some pretty manual installations via chroot, hand-managed fstabs, and adding the other grub configs as submenus to the actually booting instance of grub.
it works surprisingly pretty well
There’s always an allure that the Linux grass is greener elsewhere if your hobby is reading about how others are using it. It’s a smart practice to try out new shiny things like immutable distros, snaps, etc. in a test environment (live or VM) to see if they’re complementary to your workflow, but if I want to pull the trigger and install it on bare metal, I’m nuking the disk or using another.
Documents and settings are backed up to a NAS first and restored piecemeal as it’s also a good time to pare down what I actually use.
Separate /home is overrated. If you want to distro hop, keep a separate /boot. The same kernel can boot any random distro by changing the root= argument in the bootloader. You can copy the /lib/modules/
uname -r
to the other root fs and it’ll work.i like the idea because i usually use a custom kernel but most distros have a mechanism for maintaining the kernel, and a rather surprising mess of dependencies to it. if you’re using a custom kernel, i imagine it’s easy to get most distros to stop doing that (it is for debian, anyways), but i feel like a lot of the people who are always trying new things are actually just hoping a different build of the kernel will fix their problems without them doing anything :)
I backup my $HOME with restnic. And restore portions of it on a new system. The process for upgrading a hard drive, switching distros, or repairing a failed system all become essentially the same.
Keeping parts of my home directory in sync is something I’ve done with version control (svn or git). Like $HOME/.vim is a git repo with submodules of various vim bundles I like to us.
For less critical things, I use Syncthing. So I have ~/Pictures/Memes and ~/Documents/Reading_List
That lets me share between my smartphone, laptop, and desktop without having to muck around with versioning systems.
For me distro hopping trying to bring your previous ‘ideal system’ isn’t worth the effort really I’ll run a system for years, usually a rolling release like Tumbleweed and when I want to try something else I’ll really try something else – so all the config files etc get nuked keeping only the important data in /home (which mostly lives on a NAS in reality anyway) or its installed to a new drive entirely – usually leave it long enough the drive speed, size and price make the upgrade worth it even on otherwise the same system…
For me if you are going to distro hop you really want to just immerse yourself in that distro’s default way of doing things, find you really like and hate certain elements of their default setups. Only way you’ll learn some things are really useful/annoying to you is to actually have somebody else’s idea of what an OS should be.
Mostly, you are talking the Desktop Environment (DE) on the Linux OS I think. With the main Linux distros, you can install the DEs onto your system and pick which you want to use when you login. You don’t have start from scratch each time. Once you settle on a DE, you can either leave it, or now install one final time with the only the selected DE you want to use.
Indeed a large part of the user facing differences are the DE, and how that DE is configured. And I do bounce around those much more often than actually distro hop. I think I might just have ever option in the repo on this system still installed, haven’t jumped around them for a while but there are bits of all them in the default configuration I liked and didn’t.
But a full distro hop often changes things beyond the DE – even simple stuff like where your removable media is mounted can be a noticeable annoyance till you get used to it. But often its bigger stuff you’ll really notice like the default Pulseaudio/Pipewire/Jack audio setup – its almost certainly a good setup for most users that will just work, but if you say want to have Dolby audio to your amp over the Fibre-optic output…
Also little details like how they configure user permissions by default – for instance most distro’s I’ve used as far as I can recall didn’t care if the user wants to access Qemu/KVM and run virtual machines, but SUSE out of the box does.
yes
I don’t do distro hopping in regular basis, but I do keep my root partition rather small and keep only necessary data in there. All static data files / unimportant files go to a secondary data partition.
When I am wiping my PC, I just clone the root disk into an another drive (I do this in regular basis to create system backup images anyway), and then nuke the whole root disk.
To me the Linux OS HDD or SSD is expendable. Ie. if for some reason the disk is corrupted/unavailable no biggie. That is an opportunity to install the latest/greatest LTS and start with a clean slate. Only the data is important (located on home server) and /home (rsync’d to server periodically). Knock on wood, I’ve never had to replace OS because of corruption. I’ve always replaced the hdd/ssd due to a ‘hardware’ upgrade which is usually a good time to replace the OS drive and start fresh. That’s every 3-6 years.
Haven’t hopped distros since about 2017, when I switched from Arch back to Fedora. The better support for running older versions of Python was part of it, as was nightly builds of KiCAD being easily available. Nowadays I’m thinking of moving to something with an immutable base.
I would encourage you to check out NixOS. It is immutable, but highly customizable and it is fast and easy to install new software.
It does depart a LOT from typical Linux (as do all immutable distros to some degree), but it is worth the time to learn in my opinion.
Even if it is not your cup of tea, it will be interesting to look into.
I created a private GitHub report and scripted my setup. This includes daily driver applications and services I run. My files I keep on a separate partition. When I feel the itch I review my script to see what has changed, update it, take a backup, then blow it away.
haha i have wanted to keep /etc in revision tracking forever so you’re living the dream…but github is not for private files, full stop :)
Try etckeeper. There are other similar tools, but that one is already in Debian. Git worked before Github, and still does without it.
Back in the early days of Linux I hopped around a lot (Yggdrasil, then Slackware, then Red Hat) but ever since 1999 I’ve tended to stick with one distribution for years and years until it stops serving me. I used Debian as my go-to in 1999, until the mid-2000s when I switched to Ubuntu (usually Xubuntu but sometimes experimenting with some of the other flavors) to get laptops working more easily, and nowadays I’ve gotten fed up with Ubuntu’s issues so I’ve been trying a few other things until something sticks. I tried ElementaryOS and Pop!OS for a bit but neither of them was quite stable or flexible enough for me, and a friend turned me on to Endeavour which I sort of like but I’m going to try Manjaro next since it seems to have fewer sharp edges than Endeavour.
I run VMs to test a distro. If I see a benefit, I’ll hop.
I have a main installation bash script menu which automates my setup with many sub bash scripts.
My data lives on a NAS.
The VMs are on an external SSD.
I find I do a full hop once every 3 years at the moment.
As a daily driver I went from Windows to SUSE to Mint. Mint to Fedora. Fedora to PopOS.
It’s only since PopOS I stopped needing Windows other than for clients on a VM.
In between I tested many OS systems (some are BSD).
I’m frozen on a distro if I’ve got work for a client on VMs and need to clear my release/contract cycle.
My git repositories are on my NAS as well as my GitHub. (Replacing a NAS is every 10 years and is harder due to size and proprietary features).
My NAS has a work backup to an external SSD.
My NAS has a personal backup to my cloud.
Some personal things are easy to retrieve.
My PC is the car, the OS+apps are the roads, the storage is the cities I visit.
I learned that I change my car every so often and I sometimes move cities or stop using old roads.
This habit started with Windows 3.0 (ahem and GEM).
I needed to be able to replace the OS with minimal disruption like I’d replace my car.
Heh. The comments about freshly installing Linux on system disk, but saving home folder/data partition remind me of the dark ages of Windows 9x.
Back then, it too wasn’t uncommon to re-install the system from time to time.
Gratefully, this found an end with Win 2k/XP and sector-based backup programs such as True Image.
By that time, OSes could be upgraded rather safely, too. Well, except for Linux, maybe.
Upgrading from one major version to another still doesn’t correctly seem to work. No matter if it’s 1995, 2005, 2015 or 2025. :)
I take a bourgeois solution: just get another hard drive and distro-hop at the boot prompt. That way you get the clean-install experience, always have your old running system intact, can just mount the drive and copy whatever files across, and at the end of the day you have a new drive in your RAID.
But as [rclark] and [Eric Mesa] said above, if you keep the data separate from the OS, you can do essentially anything. I like the laptop idea too. Now that I think about it, I kinda did that setting up my son’s computer.
That’s basically what I’ve always done.
surprised no one has talked about bedrock linux, I haven’t tried it but it’s supposed to be that you can mix and match any part of any distro with another distro and use any paclage manager, it doesn’t even have a separate iso, you have to run the hijacking script to install it on top of any distro.
Just something, it might end some people’s distro hopping
I mostly stick to Debian based distributions, and on a clean install I do either of the following:
$ apt list –installed > .clean_install_packages-a.txt
$ dpkg –get-selections ‘*’ > .clean_install_packages-b.txt
And then with a “comm” or a “diff” before upgrading I see what packages I will need to consider installing on a clean fresh install.
As for custom tweaks, since learning from a friend while using DEC ULTRIX many years ago, I store a howto text file for every procedure or a “script” output in ~/docs folder (it now has many sub-folders for ULTRIX, SunOS, Solaris, SCO, HPUX, AIX, FreeBSD, OpenBSD, NetBSD, Linux, BeOS, . And Linux has its own root distributions folders). These days it is easier just to keep the old OS on it’s storage and do a fresh install on a new boot disk. That way it is easy to roll back.
I use Windows like a normal socially-adjusted, sunlight-exposed person.
And on full moon? 🐺
Speaking of SuSe Linux.. They make good music, too!
https://www.youtube.com/@SUSE/search?query=SUSE%20Music%20Parody