Without initramfs/initrd support, the following kernel command line won't work:

linux   /bzImage root=UUID=666c2eee-193d-42db-a490-4c444342bd4e ro

How can I identify my root partition via UUID without the need for an initramfs/initrd?

I can't use a device name like /dev/sda1 either, because the partition resides on a USB-Stick and needs to work on different machines.

3 Answers 3


I found the answer burried in another thread:

A UUID identifies a filesystems, whereas a PARTUUID identifies a partition (i.e. remains intact after reformatting). Without initramfs/initrd the kernel only supports PARTUUID.

To find the PARTUUID of the block devices in your machine use

sudo blkid

This will print, for example


You can now modify you linux command line as follows:

linux   /bzImage root=PARTUUID=f3f4g3f4-02 ro

This will boot from the partition with PARTUUID f3f4g3f4-02, which in this case is /dev/sda1.

  • The question is about what the root partition is. Why would /dev/sda1 be the root partition? Sudo blkid lists all kind of mounted stuff, including /dev/loop.. whereas blkid lists a lot less. Also, there is lsblk and findmnt for already mounted filesystems.
    – rosch
    Jan 28, 2020 at 22:10

lsblk with various options can show you what disk/partition/uuid are in use


UUID                                   PARTUUID           NAME                MOUNTPOINT
d634adc8-69de-edd8-d491-a79e69aeff78   0008500a-01        |-sda1
195237da-8825-45fb-abf7-a62895bd0967                      | `-md0             /boot
d2cf1bcc-d51d-bf37-9723-3b505172fe5f   0008500a-02        `-sda2              
24bvXN-PVU1-kubI-Zgj5-W82i-3Z07-v80lME                      `-md1             
67fe5039-de46-4629-bd03-ee65a5dd0132                          |-godzilla-root /
ba70f1d1-89f0-4dd9-83a4-8bc9a74a6548                          `-godzilla-swap [SWAP]

So I can see that UUID d634adc8-69de-edd8-d491-a79e69aeff78 corresponds to /dev/sda3 and partition UUID 0008500a-01

Depending on your setup you can then do




(In my case root is part of an LVM and so can't be mounted this way, but the concept applies)

  • Thanks for the answer. This was actually my trouble: Without initramfs, I cannot use UUID, but had to use PARTUUID.
    – daejk
    Aug 11, 2016 at 15:10
  • Or you could use the root=/dev/sda1 type construct Aug 11, 2016 at 15:12
  • I updated the question; I can't use a device name because I'm booting from a USB stick, and the device name varies across different machines.
    – daejk
    Aug 11, 2016 at 15:18
  • OK, answer updated with partuuid stuff from lsblk as well. Aug 11, 2016 at 17:32

UUID= is invalid. As is LABEL=. These both identify filesystems, not a partition in which to find a filesystem.

Source: kernel's name_to_dev_t() in do_mount.c

The only valid kernel command line entry for UUIDs is PARTUUID=. This UUID is for the partition itself, not the filesystem contained within it. (See blkid's output)

If you're using GPT partitions, consider PARTLABEL= for a more human friendly version :)

  • UUID= is a thing. So is LABEL=. They are just not supported directly in the kernel (as your code link shows) but rather in the initramfs support of various distros, as this question and answer (for example) shows: stackoverflow.com/questions/38784697/…
    – MikeBeaton
    Mar 3 at 16:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.