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,

_ /\ _

  • Ghoelian@piefed.social
    link
    fedilink
    English
    arrow-up
    2
    ·
    6 days ago

    remaining in RasPi OS, which I don’t want to do, because too many things consider Ubuntu to be the only default-config.

    Raspi os is based on Ubuntu (or maybe Debian, don’t remember), so all arm-based debian packages should just work.

    • Paragone@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 days ago

      They use different sets-of-software, & different software-package-management-apps.

      Which means that not-only am I wanting what they ( all of them ) consider non-standard, their system-maintaining apps are different ( RasPi vs Ubuntu ), & I’m betting nothing on their behaviors being identical.

      Being incapable of installing build-essential in Lubuntu 25.10 on x86_64 is utterly braindead: that’s one of the most-fundamental packages in the entire Ubuntu ecology.

      Somebody’s not doing things right, obviously…

      _ /\ _

    • Eldritch@piefed.world
      link
      fedilink
      English
      arrow-up
      2
      ·
      6 days ago

      Debian. But even then, a lot of things are built around and specific to Ubuntu. There is a difference enough of one to be often inconvenient. And with Ubuntu pushing things like their rust tools Etc it’s only going to get worse.