AMENDMENT Ubuntu 24.04 cannot install onto NVMe, at all, no matter what.
I tried it with a non-switched PCIe adapter, & it still couldnāt work.
Sorry I got it wrong, before.
Now Iām working to discover if 25.10 can install to NVMe ( in spite of Lubuntuās broken build-essential package, & the idiocy of Lubuntu telling us to file bug-reports in the Ubuntu One ( or whatever ) system, but that system not allowing that Lubuntu is a tracked project, so thereās NO bug-reporting place for it. Idiocy. ).
Iāll update this again whether it works or not, so you donāt have to do these stupid experiments to discover the fundamentals.
The performance-difference is sooo spectacular, that the engineers who wouldnāt include NVMe on the board-itself ⦠cannot be considered loyal to the potential of the devices theyāre engineering, tbh: they essentially āCeleronādā the things by making them use microSDXC, which ⦠not my values )
TL;DR:
IF you use Geerlingās rpi-clone tool, THEN DONāT name your new root partition, let it do all the config by UUID,
AND if you have NVMe on a dual-device board, through a PCIe-switch chip, then your ONLY option is to boot from RasPi OS, because Ubuntu 24.04 LTS simply wonāt work through that: they configured the kernel to not be capable of it.
( didnāt bother trying 25.10, because on the destop, Lubuntu 25.10 CANāT INSTALL build-essential PACKAGE, so that breaks EVERYthing for my learning-programming machine, & I need both to be using the same OS, version-included, so I donāt get driven mad by UX-inconsistencies : )
This took waaay too long to figure-out, so Iām putting it here for others, so you donāt have to bash your brain against the damn wall, like I did.
Geerlingās rpi-clone tool, available from geerlingguyās github,
# Install rpi-clone.
git clone https://github.com/geerlingguy/rpi-clone.git
cd rpi-clone
sudo cp rpi-clone rpi-clone-setup /usr/local/sbin
# Clone to the NVMe drive (usually nvme0n1, but check with `lsblk`).
sudo rpi-clone nvme0n1
has a gotcha: if you name the new root-partition, then it wonāt be able to mount it, in my experience.
Once named, that root-partition canāt be mounted when booting from NVMe, by /dev/nvme0n1p2, not by LABEL=whatever. ( didnāt try UUID mount )
You need to have it identical in your linux-kernel cmdline.txt ( which is in your /boot/firmware/ dir, aka your 1st-partition ) and in your /etc/fstab ( which is in your 2nd partition ).
That took ages to learn, too.
Let the rpi-clone util have NO name for the new root partition, & then itāll correctly give UUID identifiers to both of those files, for your new root.
Then itāll work in Raspberry Pi OS.
However, nothing one does can get Ubuntuās 24.04 LTS to boot from dual-device/PCIe-switched NVMe adapter/āhatā: apparently Ubuntu pruned-out the kernelās ability to work through a PCIe-switch, breaking all dual-NVMe-adapter-boards from being able to work.
( updated-system is current @ 2026-04-02, in case they update it in the future )
Iād wanted to someday switch to BTRFS raid1, but ⦠thatās impossible, unless remaining in RasPi OS, which I donāt want to do, because too many things consider Ubuntu to be the only default-config.
As Torvalds identified: itās hell to make an app work with multiple distros, due to too-little being standard between them all, hence the ājust do Ubuntuā paradigm thatās substituting for app-developerās standardā¦
( & snaps/flatpaks are usually x86_64 only, ttbomk, so that doesnāt help, either )
Yeah, I know, Archās got a Rpi4 ( or greater ) version, & yes, Iāve tried it,
but I really want to stop doing sysadmin, & just do learning Haskell, THE programming-language for developing oneās ability to think & to prevent-bugs in programs, if done correctly.
( no side-effects-distributed-throughout-the-entire-codebase, pure-functional, & type-level programming all contribute to that )
May you not hit all the damn corner-cases in the world,
_ /\ _


