1

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.?

0

OK, so it turned out the issue was that not all the partitions were being listed under /dev. The eMMC has 15 partitions on, but only 1 - 7 were listed. I thought that the 1 - 7 were just the ext4 partitions, and that the other partitions (which aren't formatted to ext4) just wouldn't show up there. So when I thought I was mounting the ext4 partitions, it was trying to mount these others, which it couldn't, hence the error. The problem stemmed from the kernel config, particularly CONFIG_MMC_BLOCK_MINORS, which defaults to 8 I think, so only the first few partitions were showing up. I recompiled the kernel with the value at 20, and the rest of the partitions show up under /dev/mmcblk0p8, 9, 10, etc., and I can mount them just fine.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.