mirror of
git://git.yoctoproject.org/meta-raspberrypi.git
synced 2025-07-19 21:09:03 +02:00
sdcard_image-rpi: Use the size of the generated rootfs
When constructing the SD card image, the code was using the inherited ROOTFS_SIZE, which is the size of the rootfs contents. When building (for example) a compressed rootfs, this allocates a partition much larger than necessary. Instead, take the size of the generated rootfs file that is about to be written into the generated image, and round it up to the IMAGE_ROOTFS_ALIGNMENT size. Fix some comments - the alignment is 4MiB, not 4KiB. Signed-off-by: Jan Schmidt <thaytan@noraisin.net> Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
This commit is contained in:
parent
8ad03b9533
commit
c5f81306b5
|
@ -13,14 +13,14 @@ inherit image_types
|
||||||
# Default Free space = 1.3x
|
# Default Free space = 1.3x
|
||||||
# Use IMAGE_OVERHEAD_FACTOR to add more space
|
# Use IMAGE_OVERHEAD_FACTOR to add more space
|
||||||
# <--------->
|
# <--------->
|
||||||
# 4KiB 20MiB SDIMG_ROOTFS
|
# 4MiB 20MiB SDIMG_ROOTFS
|
||||||
# <-----------------------> <----------> <---------------------->
|
# <-----------------------> <----------> <---------------------->
|
||||||
# ------------------------ ------------ ------------------------ -------------------------------
|
# ------------------------ ------------ ------------------------
|
||||||
# | IMAGE_ROOTFS_ALIGNMENT | BOOT_SPACE | ROOTFS_SIZE | IMAGE_ROOTFS_ALIGNMENT |
|
# | IMAGE_ROOTFS_ALIGNMENT | BOOT_SPACE | ROOTFS_SIZE |
|
||||||
# ------------------------ ------------ ------------------------ -------------------------------
|
# ------------------------ ------------ ------------------------
|
||||||
# ^ ^ ^ ^ ^
|
# ^ ^ ^ ^
|
||||||
# | | | | |
|
# | | | |
|
||||||
# 0 4096 4KiB + 20MiB 4KiB + 20Mib + SDIMG_ROOTFS 4KiB + 20MiB + SDIMG_ROOTFS + 4KiB
|
# 0 4MiB 4MiB + 20MiB 4MiB + 20Mib + SDIMG_ROOTFS
|
||||||
|
|
||||||
|
|
||||||
# Set kernel and boot loader
|
# Set kernel and boot loader
|
||||||
|
@ -29,7 +29,7 @@ IMAGE_BOOTLOADER ?= "bcm2835-bootfiles"
|
||||||
# Boot partition volume id
|
# Boot partition volume id
|
||||||
BOOTDD_VOLUME_ID ?= "${MACHINE}"
|
BOOTDD_VOLUME_ID ?= "${MACHINE}"
|
||||||
|
|
||||||
# Boot partition size [in KiB]
|
# Boot partition size [in KiB] (will be rounded up to IMAGE_ROOTFS_ALIGNMENT)
|
||||||
BOOT_SPACE ?= "20480"
|
BOOT_SPACE ?= "20480"
|
||||||
|
|
||||||
# Set alignment to 4MB [in KiB]
|
# Set alignment to 4MB [in KiB]
|
||||||
|
@ -60,18 +60,24 @@ IMAGE_CMD_rpi-sdimg () {
|
||||||
# Align partitions
|
# Align partitions
|
||||||
BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1)
|
BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1)
|
||||||
BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE_ALIGNED} - ${BOOT_SPACE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT})
|
BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE_ALIGNED} - ${BOOT_SPACE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT})
|
||||||
SDIMG_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + $ROOTFS_SIZE + ${IMAGE_ROOTFS_ALIGNMENT})
|
ROOTFS_SIZE=`du -bks ${SDIMG_ROOTFS} | awk '{print $1}'`
|
||||||
|
# Round up RootFS size to the alignment size as well
|
||||||
|
ROOTFS_SIZE_ALIGNED=$(expr ${ROOTFS_SIZE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1)
|
||||||
|
ROOTFS_SIZE_ALIGNED=$(expr ${ROOTFS_SIZE_ALIGNED} - ${ROOTFS_SIZE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT})
|
||||||
|
SDIMG_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + ${ROOTFS_SIZE_ALIGNED})
|
||||||
|
|
||||||
|
echo "Creating filesystem with Boot partition ${BOOT_SPACE_ALIGNED} KiB and RootFS ${ROOTFS_SIZE_ALIGNED} KiB"
|
||||||
|
|
||||||
# Initialize sdcard image file
|
# Initialize sdcard image file
|
||||||
dd if=/dev/zero of=${SDIMG} bs=1 count=0 seek=$(expr 1024 \* ${SDIMG_SIZE})
|
dd if=/dev/zero of=${SDIMG} bs=1024 count=0 seek=${SDIMG_SIZE}
|
||||||
|
|
||||||
# Create partition table
|
# Create partition table
|
||||||
parted -s ${SDIMG} mklabel msdos
|
parted -s ${SDIMG} mklabel msdos
|
||||||
# Create boot partition and mark it as bootable
|
# Create boot partition and mark it as bootable
|
||||||
parted -s ${SDIMG} unit KiB mkpart primary fat32 ${IMAGE_ROOTFS_ALIGNMENT} $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT})
|
parted -s ${SDIMG} unit KiB mkpart primary fat32 ${IMAGE_ROOTFS_ALIGNMENT} $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT})
|
||||||
parted -s ${SDIMG} set 1 boot on
|
parted -s ${SDIMG} set 1 boot on
|
||||||
# Create rootfs partition
|
# Create rootfs partition to the end of disk
|
||||||
parted -s ${SDIMG} unit KiB mkpart primary ext2 $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT}) $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT} \+ ${ROOTFS_SIZE})
|
parted -s ${SDIMG} -- unit KiB mkpart primary ext2 $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT}) -1s
|
||||||
parted ${SDIMG} print
|
parted ${SDIMG} print
|
||||||
|
|
||||||
# Create a vfat image with boot files
|
# Create a vfat image with boot files
|
||||||
|
|
Loading…
Reference in New Issue
Block a user