fdisk -l shows a partition is not in /dev directory

Solution 1:

You may create this node manually: mknod /dev/hdc1 b 22 1

Then you should check if can be read cat /dev/hdc1 > /dev/null

Either kernel can't find a partition, or udev doesn't create this node automatically. udev is responsible of creation of this files

If manual creation of /dev/hdc1 will fail, you can mount the partition manually specifying the offset:

losetup /dev/loop0 /dev/hdc -o $((63*512))
mount /dev/loop0 /mnt/hdc1

You should use fdisk -l -u /dev/hdc to rectify 63.

Solution 2:

Sometimes people experience this problem when they're dealing with removable media, or they've freshly partitioned a hard-drive and the kernel hasn't updated the dev nodes yet.

Perhaps there are other ways of reaching this condition, maybe the Kernel needs a special module to decode the partition table, but that module wasn't available till way too late in the boot process?

So before you reach for mknod, it can be sometimes beneficial to trigger the Kernel to re-read the partition table with hdparm

hdparm -z /dev/hdc

Here's the related man hdparm excerpt:

-z     Force a kernel re-read of the partition table of the specified device(s).