I'm trying to set up a custom Linux installation on an Intel Atom (Baytrail) based Android tablet, using Qt 5.5 for device creation. The build system is based on the Yocto project and builds an embedded Linux image. In order to run this image on the tablet (which is originally and Android tablet), I'm replacing the boot partition, with an image containing the kernel, initramfs and initial boot script, and replacing the system partition with the full image, then flashing these to the device with the Intel Manufacturing Tool.
So far, I have the device booting into my new kernel with the initramfs, and running the init script. The issue comes when trying to mount the main partition on the embedded flash. The command to mount the system partition fails with "Invalid Argument".
A cat proc/filesystems shows that ext4 is supported, and parted -l shows the partitions on the internal MMC are all ext4, with the exception of the first, which is the EFI boot partition. I can't mount any of the ext4 partitions, but I can mount the EFI partition, so I think that means the whole MMC should be accessible.
Running fdisk -l only shows the first partition (the EFI boot partition), but I think that is because fsdisk doesn't support GPT.
Does anyone know why I wouldn't be able to mount the ext4 partitions? They are all listed in /dev as:
mmcblk0 mmcblk0p1 mmcblk0p2 mmcblk0p3 mmcblk0p4 mmcblk0p5 mmcblk0p6 mmcblk0p7
mmcblk0p1 is mountable, and is the EFI boot partition.
Sorry I can't post any of the actual output, so this is all from memory, but the battery just died on the device as I started writing this. I should be able to get some actual output from the commands if it's needed once it's charged again.
Update
So I recompiled Busybox, enabling GPT support in fdisk, and fdisk lists the partitions. I also installed TestDisk on the device, and can browse the filesystem using TestDisk. Trying to mount the partitions listed under /dev/mmcblk0p(2 - 7) still doesn't work, but I can successfully mount a partition by getting the start sector from fdisk -l, then setting up a loop device via losetup -o (Start Sector * Sector Size) /dev/loop0 /dev/mmcblk0, then finally mounting /dev/loop0. Why do I have to go through this method instead of being able to just mount /dev/mmcblk0p2 etc.?