El comando es:
blockdev --getsize64 /dev/mmcblk0p1
Da el resultado en bytes, como un entero de 64 bits. Consulta el tamaño de byte de un dispositivo de bloque , ya que el núcleo ve su tamaño.
La razón, por qué fdisk -l /dev/mmcblk0p1no funcionó, fue que fdiskhace algo totalmente diferente: se lee en la tabla de particiones (= primer sector) del dispositivo de bloque e imprime lo que encontró . No verifica nada, solo dice lo que hay en la tabla de particiones.
Ni siquiera molesta si la tabla de particiones está dañada, o el dispositivo de bloque no tiene una: imprimirá una advertencia de que la suma de comprobación no está bien, pero aún imprime lo que se encuentra, incluso si los valores son claramente no -sentido.
Esto es lo que sucedió en su caso: /dev/mmcblk0p1 no tiene una tabla de particiones. Como muestra el nombre del dispositivo, ya es la primera partición del disco físico /dev/mmcblk0. Este disco contiene una tabla de particiones, si lo hubiera consultado fdisk -l /dev/mmcblk0, había funcionado (suponiendo que tuviera una tabla de particiones msdos).