I have a disk with three paritions: a boot partition (with systemd-boot), root file system 1, and root file system 2

In past embedded systems I've done, I've stored the kernel for each of these file systems on those file systems (not on the boot partition), and u-boot was able to load whichever one I wanted.

I can't find a way to duplicate this behavior using systemd-boot. Can systemd-boot only load kernels from the same partition on which it booted?

As an example, here is my current boot entry:

title boot
linux /bzImage
options LABEL=boot  rootwait console=ttyS0,115200 console=tty0 root=/dev/mmcblk1p2 psplash=false

I want to effectively change that linux line to:

linux {/dev/mmcblk1p2}/boot/bzImage

Is this possible?

1 Answer 1


Yes, systemd-boot uses EFI file system drivers to load the kernel and initrd instead of bringing its own, and only ever accesses the EFI System Partition.

  • I don't understand your answer. You're saying it's possible to load the kernel off a different partition? If so, how do I specify which partition the kernel is on? In my case, systemd-boot is loading off of /dev/mmcblk1p1 and I want to grab a kernel off of /dev/mmcblk1p2 or /dev/mmcblkp3.
    – Dave
    Sep 26, 2022 at 21:14
  • In theory, it could load the kernel from another DOS partition, in practice it expects them in a specific directory on the EFI partition. Sep 26, 2022 at 21:53

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .