meta-digi: dynamically resize EXT4 filesystem to the partition size

https://jira.digi.com/browse/DEL-935

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
Javier Viguera 2014-02-18 11:49:26 +01:00
parent 0a7b0619d0
commit 8e8cafb227
5 changed files with 87 additions and 24 deletions

View File

@ -15,6 +15,7 @@ UBOOT_SUFFIX = "imx"
MACHINE_FIRMWARE ?= "" MACHINE_FIRMWARE ?= ""
MACHINE_FIRMWARE_append = " firmware-imx-vpu-imx6q" MACHINE_FIRMWARE_append = " firmware-imx-vpu-imx6q"
MACHINE_EXTRA_RDEPENDS += "e2fsprogs e2fsprogs-mke2fs parted"
MACHINE_EXTRA_RRECOMMENDS += "${MACHINE_FIRMWARE}" MACHINE_EXTRA_RRECOMMENDS += "${MACHINE_FIRMWARE}"
MACHINE_EXTRA_RRECOMMENDS += "fsl-alsa-plugins" MACHINE_EXTRA_RRECOMMENDS += "fsl-alsa-plugins"

View File

@ -1,7 +1,7 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Busybox version: 1.21.1 # Busybox version: 1.21.1
# Thu Dec 5 12:44:05 2013 # Fri Feb 14 15:39:27 2014
# #
CONFIG_HAVE_DOT_CONFIG=y CONFIG_HAVE_DOT_CONFIG=y
@ -533,8 +533,8 @@ CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
CONFIG_REV=y CONFIG_REV=y
CONFIG_ACPID=y CONFIG_ACPID=y
CONFIG_FEATURE_ACPID_COMPAT=y CONFIG_FEATURE_ACPID_COMPAT=y
# CONFIG_BLKID is not set CONFIG_BLKID=y
# CONFIG_FEATURE_BLKID_TYPE is not set CONFIG_FEATURE_BLKID_TYPE=y
CONFIG_DMESG=y CONFIG_DMESG=y
CONFIG_FEATURE_DMESG_PRETTY=y CONFIG_FEATURE_DMESG_PRETTY=y
CONFIG_FBSET=y CONFIG_FBSET=y
@ -605,27 +605,31 @@ CONFIG_FEATURE_UMOUNT_ALL=y
CONFIG_FEATURE_MOUNT_LOOP=y CONFIG_FEATURE_MOUNT_LOOP=y
CONFIG_FEATURE_MOUNT_LOOP_CREATE=y CONFIG_FEATURE_MOUNT_LOOP_CREATE=y
# CONFIG_FEATURE_MTAB_SUPPORT is not set # CONFIG_FEATURE_MTAB_SUPPORT is not set
# CONFIG_VOLUMEID is not set CONFIG_VOLUMEID=y
# CONFIG_FEATURE_VOLUMEID_EXT is not set
# CONFIG_FEATURE_VOLUMEID_BTRFS is not set #
# CONFIG_FEATURE_VOLUMEID_REISERFS is not set # Filesystem/Volume identification
# CONFIG_FEATURE_VOLUMEID_FAT is not set #
# CONFIG_FEATURE_VOLUMEID_EXFAT is not set CONFIG_FEATURE_VOLUMEID_EXT=y
# CONFIG_FEATURE_VOLUMEID_HFS is not set CONFIG_FEATURE_VOLUMEID_BTRFS=y
# CONFIG_FEATURE_VOLUMEID_JFS is not set CONFIG_FEATURE_VOLUMEID_REISERFS=y
# CONFIG_FEATURE_VOLUMEID_XFS is not set CONFIG_FEATURE_VOLUMEID_FAT=y
# CONFIG_FEATURE_VOLUMEID_NILFS is not set CONFIG_FEATURE_VOLUMEID_EXFAT=y
# CONFIG_FEATURE_VOLUMEID_NTFS is not set CONFIG_FEATURE_VOLUMEID_HFS=y
# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set CONFIG_FEATURE_VOLUMEID_JFS=y
# CONFIG_FEATURE_VOLUMEID_UDF is not set CONFIG_FEATURE_VOLUMEID_XFS=y
# CONFIG_FEATURE_VOLUMEID_LUKS is not set CONFIG_FEATURE_VOLUMEID_NILFS=y
# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set CONFIG_FEATURE_VOLUMEID_NTFS=y
# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set CONFIG_FEATURE_VOLUMEID_ISO9660=y
# CONFIG_FEATURE_VOLUMEID_ROMFS is not set CONFIG_FEATURE_VOLUMEID_UDF=y
# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set CONFIG_FEATURE_VOLUMEID_LUKS=y
# CONFIG_FEATURE_VOLUMEID_SYSV is not set CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y
# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set CONFIG_FEATURE_VOLUMEID_CRAMFS=y
# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set CONFIG_FEATURE_VOLUMEID_ROMFS=y
CONFIG_FEATURE_VOLUMEID_SQUASHFS=y
CONFIG_FEATURE_VOLUMEID_SYSV=y
CONFIG_FEATURE_VOLUMEID_OCFS2=y
CONFIG_FEATURE_VOLUMEID_LINUXRAID=y
# #
# Miscellaneous Utilities # Miscellaneous Utilities

View File

@ -14,3 +14,10 @@ do_install_append() {
rm -f ${D}${sysconfdir}/rc5.d/S99stop-bootlogd rm -f ${D}${sysconfdir}/rc5.d/S99stop-bootlogd
rm -f ${D}${sysconfdir}/rcS.d/S07bootlogd rm -f ${D}${sysconfdir}/rcS.d/S07bootlogd
} }
do_install_append_ccimx6adpt() {
cat >> ${D}${sysconfdir}/default/rcS <<-EOF
# Resize EXT4 filesystems to the size of the partition on boot
RESIZE_EXT4FS=yes
EOF
}

View File

@ -0,0 +1,36 @@
#!/bin/sh
#===============================================================================
#
# resize-ext4fs.sh
#
# Copyright (C) 2014 by Digi International Inc.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 as published by
# the Free Software Foundation.
#
#
# !Description: Resize EXT4 filesystems to the size of the partition
#
#===============================================================================
get_emmc_block_device() {
emmc_number="$(sed -ne 's,.*mmcblk\(.\)boot0.*,\1,g;T;p' /proc/partitions)"
if [ -b "/dev/mmcblk${emmc_number}" ] &&
[ -b "/dev/mmcblk${emmc_number}boot0" ] &&
[ -b "/dev/mmcblk${emmc_number}boot1" ] &&
[ -b "/dev/mmcblk${emmc_number}rpmb" ]; then
echo "/dev/mmcblk${emmc_number}"
fi
}
EMMC_BLOCK_DEVICE="$(get_emmc_block_device)"
if [ "${RESIZE_EXT4FS}" = "yes" -a -n "${EMMC_BLOCK_DEVICE}" ]; then
PARTITIONS="$(blkid | sed -ne "{s,\(^${EMMC_BLOCK_DEVICE}[^:]\+\):.*TYPE=\"ext4\".*,\1,g;T;p}" | sort -u)"
for i in ${PARTITIONS}; do
if ! resize2fs ${i} 2>/dev/null; then
echo "ERROR: resize2fs ${i}"
fi
done
fi

View File

@ -0,0 +1,15 @@
# Copyright (C) 2014 Digi International.
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:"
SRC_URI += "file://resize-ext4fs.sh"
inherit update-rc.d
do_install_append() {
install -d ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/resize-ext4fs.sh ${D}${sysconfdir}/init.d/
}
INITSCRIPT_NAME = "resize-ext4fs.sh"
INITSCRIPT_PARAMS = "start 36 S ."