summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--classes/sdcard_image-rpi.bbclass30
1 files changed, 18 insertions, 12 deletions
diff --git a/classes/sdcard_image-rpi.bbclass b/classes/sdcard_image-rpi.bbclass
index 3774318..05087b5 100644
--- a/classes/sdcard_image-rpi.bbclass
+++ b/classes/sdcard_image-rpi.bbclass
@@ -13,14 +13,14 @@ inherit image_types
13# Default Free space = 1.3x 13# Default Free space = 1.3x
14# Use IMAGE_OVERHEAD_FACTOR to add more space 14# Use IMAGE_OVERHEAD_FACTOR to add more space
15# <---------> 15# <--------->
16# 4KiB 20MiB SDIMG_ROOTFS 16# 4MiB 20MiB SDIMG_ROOTFS
17# <-----------------------> <----------> <----------------------> 17# <-----------------------> <----------> <---------------------->
18# ------------------------ ------------ ------------------------ ------------------------------- 18# ------------------------ ------------ ------------------------
19# | IMAGE_ROOTFS_ALIGNMENT | BOOT_SPACE | ROOTFS_SIZE | IMAGE_ROOTFS_ALIGNMENT | 19# | IMAGE_ROOTFS_ALIGNMENT | BOOT_SPACE | ROOTFS_SIZE |
20# ------------------------ ------------ ------------------------ ------------------------------- 20# ------------------------ ------------ ------------------------
21# ^ ^ ^ ^ ^ 21# ^ ^ ^ ^
22# | | | | | 22# | | | |
23# 0 4096 4KiB + 20MiB 4KiB + 20Mib + SDIMG_ROOTFS 4KiB + 20MiB + SDIMG_ROOTFS + 4KiB 23# 0 4MiB 4MiB + 20MiB 4MiB + 20Mib + SDIMG_ROOTFS
24 24
25 25
26# Set kernel and boot loader 26# Set kernel and boot loader
@@ -29,7 +29,7 @@ IMAGE_BOOTLOADER ?= "bcm2835-bootfiles"
29# Boot partition volume id 29# Boot partition volume id
30BOOTDD_VOLUME_ID ?= "${MACHINE}" 30BOOTDD_VOLUME_ID ?= "${MACHINE}"
31 31
32# Boot partition size [in KiB] 32# Boot partition size [in KiB] (will be rounded up to IMAGE_ROOTFS_ALIGNMENT)
33BOOT_SPACE ?= "20480" 33BOOT_SPACE ?= "20480"
34 34
35# Set alignment to 4MB [in KiB] 35# Set alignment to 4MB [in KiB]
@@ -60,18 +60,24 @@ IMAGE_CMD_rpi-sdimg () {
60 # Align partitions 60 # Align partitions
61 BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1) 61 BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1)
62 BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE_ALIGNED} - ${BOOT_SPACE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT}) 62 BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE_ALIGNED} - ${BOOT_SPACE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT})
63 SDIMG_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + $ROOTFS_SIZE + ${IMAGE_ROOTFS_ALIGNMENT}) 63 ROOTFS_SIZE=`du -bks ${SDIMG_ROOTFS} | awk '{print $1}'`
64 # Round up RootFS size to the alignment size as well
65 ROOTFS_SIZE_ALIGNED=$(expr ${ROOTFS_SIZE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1)
66 ROOTFS_SIZE_ALIGNED=$(expr ${ROOTFS_SIZE_ALIGNED} - ${ROOTFS_SIZE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT})
67 SDIMG_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + ${ROOTFS_SIZE_ALIGNED})
68
69 echo "Creating filesystem with Boot partition ${BOOT_SPACE_ALIGNED} KiB and RootFS ${ROOTFS_SIZE_ALIGNED} KiB"
64 70
65 # Initialize sdcard image file 71 # Initialize sdcard image file
66 dd if=/dev/zero of=${SDIMG} bs=1 count=0 seek=$(expr 1024 \* ${SDIMG_SIZE}) 72 dd if=/dev/zero of=${SDIMG} bs=1024 count=0 seek=${SDIMG_SIZE}
67 73
68 # Create partition table 74 # Create partition table
69 parted -s ${SDIMG} mklabel msdos 75 parted -s ${SDIMG} mklabel msdos
70 # Create boot partition and mark it as bootable 76 # Create boot partition and mark it as bootable
71 parted -s ${SDIMG} unit KiB mkpart primary fat32 ${IMAGE_ROOTFS_ALIGNMENT} $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT}) 77 parted -s ${SDIMG} unit KiB mkpart primary fat32 ${IMAGE_ROOTFS_ALIGNMENT} $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT})
72 parted -s ${SDIMG} set 1 boot on 78 parted -s ${SDIMG} set 1 boot on
73 # Create rootfs partition 79 # Create rootfs partition to the end of disk
74 parted -s ${SDIMG} unit KiB mkpart primary ext2 $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT}) $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT} \+ ${ROOTFS_SIZE}) 80 parted -s ${SDIMG} -- unit KiB mkpart primary ext2 $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT}) -1s
75 parted ${SDIMG} print 81 parted ${SDIMG} print
76 82
77 # Create a vfat image with boot files 83 # Create a vfat image with boot files