diff --git a/scripts/etc/init.d/rcS b/scripts/etc/init.d/rcS index 18a298c5..8f6d7d43 100755 --- a/scripts/etc/init.d/rcS +++ b/scripts/etc/init.d/rcS @@ -1102,6 +1102,23 @@ sync umount /boot || fail log_msg_end "OK" +model_memory=$(busybox free -m | grep "^Mem:" | awk '{print $2}') +low_mem_model="" +if [ "$model_memory" -le "260" ] ; then + low_mem_model="true" +else + low_mem_model="false" +fi +log_msg "Model memory in MB: '$model_memory' is a low mem model: '$low_mem_model'" + +if [ "$low_mem_model" = "true" ] ; then + log_msg_start "Removing backup copy in /bootfs... " + rm -r -- /bootfs/* + log_msg_end "OK" +else + log_msg "Keeping backup copy in /bootfs" +fi + # only do modprobe if the module is NOT built into the kernel if [ "$(grep -c $rootfstype /lib/modules/"$(uname -r)"/modules.builtin)" -eq 0 ]; then log_msg_start "Loading $rootfstype module... " @@ -1120,6 +1137,12 @@ mkdir /rootfs/boot || fail mount $bootpartition /rootfs/boot || fail log_msg_end "OK" +if [ "$low_mem_model" = "true" ] ; then + log_msg_start "Bind mount /rootfs/boot to /bootfs... " + mount --bind /rootfs/boot /bootfs + log_msg_end "OK" +fi + log_msg "Starting install process..." # With 'cdebootstrap_cmdline we're actually using the word splitting what SC2086 warns us against # This should probably be fixed at some point, but not in this run/branch. @@ -1671,6 +1694,11 @@ chmod 0640 /rootfs/var/log/raspbian-ua-netinst.log log_msg_start "Unmounting filesystems... " +if [ "$low_mem_model" = "true" ] ; then + log_msg_inline "removing bind mount to /bootfs... " + umount /bootfs +fi + umount /rootfs/boot umount /rootfs log_msg_end "OK"