Я собираюсь создать собственное изображение IMAGE_FSTYPES=sdcard
для Freescale Variscite VAR-SOM-MX6. Я скопировал класс meta-fsl-arm/classes/image_types_fsl.bbclass
и немного изменил его, чтобы было три раздела, а не два. Я хочу включить третий раздел, отформатированный как FAT (vfat), чтобы файлы можно было добавлять на SD-карту, чтобы они не находились рядом с файлами в загрузочном разделе или корневой файловой системе.
Я сделал дополнения к функции generate_imx_sdcard()
, где я создаю новый раздел:
generate_imx_sdcard () {
# Create partition table
parted -s ${SDCARD} mklabel msdos
parted -s ${SDCARD} unit KiB mkpart primary fat32 ${IMAGE_ROOTFS_ALIGNMENT} $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED})
parted -s ${SDCARD} unit KiB mkpart primary $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED} \+ $ROOTFS_SIZE)
# Line below is the new partition I have added
parted -s ${SDCARD} unit KiB mkpart primary fat32 $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED} \+ $ROOTFS_SIZE) $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED} \+ $ROOTFS_SIZE \+ ${THIRD_PARTITION})
parted ${SDCARD} print
Я убедился, что общая сторона SD-карты соответствует этому, включив это, где я добавляю новый размер раздела ${THIRD_PARTITION}
к общему размеру SD-карты (устройства):
IMAGE_CMD_sdcard () {
if [ -z "${SDCARD_ROOTFS}" ]; then
bberror "SDCARD_ROOTFS is undefined. To use sdcard image from Freescale's BSP it needs to be defined."
exit 1
fi
# Align boot partition and calculate total SD card image size
BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1)
BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE_ALIGNED} - ${BOOT_SPACE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT})
SDCARD_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + $ROOTFS_SIZE + ${IMAGE_ROOTFS_ALIGNMENT} + ${THIRD_PARTITION})
Когда я создаю свой слой и записываю выходной образ SD-карты на SD-карту, разделы имеют соответствующий размер и доступны, однако у меня есть вопрос / проблема: как мне отформатировать этот вновь созданный раздел?
Я понимаю, что обычный способ сделать это будет чем-то вроде mkfs.vfat -n "Partition Name" /dev/sdd
, где я предоставляю устройство, однако я не уверен, как это сделать в Yocto, поскольку идентификатора устройства нет, только переменная ${SDCARD}
. Я понимаю, что если бы раздел должен был быть отформатирован как файловая система ext4, тогда можно было бы указать смещения для форматирования, однако похоже, что нет возможности сделать это, если бы я хотел, чтобы он был отформатирован как vfat.
Любая помощь будет принята с благодарностью.