diff --git a/packages/sysutils/busybox/package.mk b/packages/sysutils/busybox/package.mk index d50abb1bb9..240cf3199a 100644 --- a/packages/sysutils/busybox/package.mk +++ b/packages/sysutils/busybox/package.mk @@ -232,6 +232,10 @@ makeinstall_init() { touch $INSTALL/etc/fstab ln -sf /proc/self/mounts $INSTALL/etc/mtab + if [ -f $PROJECT_DIR/$PROJECT/initramfs/initramfs.conf ]; then + cp $PROJECT_DIR/$PROJECT/initramfs/initramfs.conf $INSTALL/etc + fi + cp $PKG_DIR/scripts/init $INSTALL chmod 755 $INSTALL/init } diff --git a/packages/sysutils/busybox/scripts/init b/packages/sysutils/busybox/scripts/init index 5f49b15408..d1cb87a355 100755 --- a/packages/sysutils/busybox/scripts/init +++ b/packages/sysutils/busybox/scripts/init @@ -52,6 +52,14 @@ NBD_DEVS="0" FLASH_FREE_MIN="5" + INSTALLED_MEMORY=`cat /proc/meminfo | grep 'MemTotal:' | awk '{print $2}'` + SYSTEM_TORAM_LIMIT=1024000 + + # load any configuration + if [ -f "/etc/initramfs.conf" ]; then + . /etc/initramfs.conf + fi + # hide kernel log messages on console echo '1 4 1 7' > /proc/sys/kernel/printk @@ -116,6 +124,9 @@ nosplash) SPLASH=no ;; + noram) + SYSTEM_TORAM=no + ;; overlay) OVERLAY=yes ;; @@ -592,7 +603,13 @@ prepare_sysroot() { progress "Preparing system" - mount_part "/flash/$IMAGE_SYSTEM" "/sysroot" "ro,loop" + if [ "$SYSTEM_TORAM" = "no" -o "$INSTALLED_MEMORY" -lt "$SYSTEM_TORAM_LIMIT" ]; then + mount_part "/flash/$IMAGE_SYSTEM" "/sysroot" "ro,loop" + else + cp /flash/$IMAGE_SYSTEM /dev/$IMAGE_SYSTEM + mount_part "/dev/$IMAGE_SYSTEM" "/sysroot" "ro,loop" + fi + mount --move /flash /sysroot/flash if [ -n "$disk" ]; then diff --git a/projects/RPi/initramfs/initramfs.conf b/projects/RPi/initramfs/initramfs.conf new file mode 100644 index 0000000000..c5c70d1494 --- /dev/null +++ b/projects/RPi/initramfs/initramfs.conf @@ -0,0 +1,4 @@ +# min size to support System to RAM +# default for RaspberryPi we set to 356MB (256MB + appr. image size (100MB) ) +# to be sure we have at least 256MB free + SYSTEM_TORAM_LIMIT=364544