List *all* active mounts on Linux system

There are plenty of questions here asking for how to list all mounts, which mostly get answered with /proc/mounts or similar. But this list is not complete. I want to know every block device that is mounted, even if it is not mounted for my process or the mount is shadowed by another mount.

In particular, Iʼm working with a system where root is an overlayfs of /mnt/lower and /mnt/upper. But because root is the overlay, I cannot see /mnt/lower or /mnt/upper directly; they are shadowed by the root mount. I want to know what block devices are mounted to the shadowed /mnt/lower and /mnt/upper, and for that matter the shadowed /.

Similarly, on a more normal system, there is an initramfs mounted; often it calls switch_root (which removes everything) but my understanding is this is not required, and I donʼt know any way to look into that on a running system.

What makes both of the above cases interesting is that there is no process with the mount visible, so I cannot just look at /proc/*/mountinfo to find them.