From b4dbbbdd97278c85862e274dcdd32b86eb39ae81 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 21 Nov 2012 16:08:10 +0100 Subject: [PATCH] busybox-initramfs: copy SYSTEM to RAM before mounting. this new feature can be deactivated with the 'noram' option to the bootloaderconfig or is not avaible if to avaible total memory (1024000 Kb on normal systems, 364544 Kb for RaspberryPi) is to low. Signed-off-by: Stephan Raue --- .../sysutils/busybox-initramfs/install | 4 ++++ .../sysutils/busybox-initramfs/scripts/init | 18 +++++++++++++++++- projects/RPi/initramfs/initramfs.conf | 4 ++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 projects/RPi/initramfs/initramfs.conf diff --git a/packages/initramfs/sysutils/busybox-initramfs/install b/packages/initramfs/sysutils/busybox-initramfs/install index edf12c5993..35bfb23c4f 100755 --- a/packages/initramfs/sysutils/busybox-initramfs/install +++ b/packages/initramfs/sysutils/busybox-initramfs/install @@ -31,6 +31,10 @@ mkdir -p $INSTALL/etc 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 + mkdir -p $INSTALL/dev mkdir -p $INSTALL/proc mkdir -p $INSTALL/sys diff --git a/packages/initramfs/sysutils/busybox-initramfs/scripts/init b/packages/initramfs/sysutils/busybox-initramfs/scripts/init index b5eff1045d..16974a5ee0 100755 --- a/packages/initramfs/sysutils/busybox-initramfs/scripts/init +++ b/packages/initramfs/sysutils/busybox-initramfs/scripts/init @@ -81,6 +81,9 @@ NBD_DEVS="0" nosplash) SPLASH=no ;; + noram) + SYSTEM_TORAM=no + ;; overlay) OVERLAY=yes ;; @@ -458,7 +461,20 @@ NBD_DEVS="0" if [ -f "/flash/$IMAGE_SYSTEM" ]; then # /flash is filesystem with system image file - mount_part "/flash/$IMAGE_SYSTEM" "/sysroot" "ro,loop" + INSTALLED_MEMORY=`cat /proc/meminfo | grep 'MemTotal:' | awk '{print $2}'` + SYSTEM_TORAM_LIMIT=1024000 + + if [ -f "/etc/initramfs.conf" ]; then + . /etc/initramfs.conf + fi + + 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 + /bin/busybox mount --move /flash /sysroot/flash else # /flash is actual root filesystem 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