How to make Linux read partition table in a partition?

I have a (GPT-partitioned) disk, for example /dev/sda.

/dev/sda8 is a partition on that disk. I used the cfdisk utility to create a GPT table with few partitions in /dev/sda8. I expected these partitions to become available via something like /dev/sda8p1. But Linux did not automatically recognize them.

How do I make Linux recognize partitions in a partition, and automatize that if possible?

Asked By: melonfsck


There is no automated recognition for such a nested partition structure, because such nesting is not part of any partition table specification I know about.

But kpartx can be used to create device-mapper-based device nodes for such partitions-within-partition, using a syntax essentially identical to partx. The resulting partition devices would be something like /dev/mapper/sda8p1.

A nested partition structure like this can arise from e.g. mapping a partition as a virtual disk for a virtual machine. Accessing the partitions of such a virtual disk from the host via kpartx can be an useful troubleshooting tool if the VM has an issue that prevents it from booting.

You must be aware of its limitations though: trying to access the VM’s partitions from the host system while the VM is running would cause filesystem corruption, as the filesystem-level caches in the host and in the VM are not communicating with each other, and so cannot possibly be aware of one’s write operation invalidating some data that the other has cached.

Answered By: telcoM

I know of nothing that that will automatically scan a partition as if it were a disk, and indeed it can’t even be scanned manually:

partx --add - /dev/sda8
partx: /dev/sda8: error adding partitions 1-2

However, you can use a loop device to map the partition back to a device – and this device can be scanned as if it were a disk. Example for a device /dev/sda8 containing two partitions:

losetup --show --find --partscan /dev/sda8

ls -1 /dev/loop0*    # Arg is #1, not lowercase "L"

Remember to delete the loop device when you’ve finished

losetup -d /dev/loop0
Answered By: Chris Davies
Categories: Answers Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.