For several filesystems, there is no block device; some of these are tmpfs, ramfs, debugfs, sysfs, procfs, cgroup, and cpuset.
Originally Posted by marazmista
For a full list, see:
Anyhow, the mount() syscall has the prototype
grep ^nodev /proc/filesystems
So for compatability reasons, there has to be a source passed to mount(); this is achieved by passing a nonsense string to the mount command.
int mount(const char *source, const char *target,
const char *filesystemtype, unsigned long mountflags,
const void *data);
A number of distros just pass "none" for all the nodev filesystems.
I prefer to use a name based on the path or filesystem (for example: mount -t sysfs sysfs /sys; mount -t devpts devpts /dev/pts), since it avoids the "none is already mounted on..." nonsense.