|
@@ -0,0 +1,32 @@
|
|
|
|
+#!/bin/sh
|
|
|
|
+
|
|
|
|
+# This script replaces the default busybox init process to avoid having that
|
|
|
|
+# process staying alive and sleeping in the background, (uselessly) consuming
|
|
|
|
+# precious memory.
|
|
|
|
+
|
|
|
|
+# Mount procfs and sysfs
|
|
|
|
+/bin/mount -t proc proc /proc
|
|
|
|
+/bin/mount -t sysfs sysfs /sys
|
|
|
|
+
|
|
|
|
+# When the kernel is directly booted, devtmpfs is not automatically mounted.
|
|
|
|
+# Manually mount it if needed.
|
|
|
|
+devmnt=$(mount | grep -c devtmpfs)
|
|
|
|
+if [ "${devmnt}" -eq 0 ]; then
|
|
|
|
+ /bin/mount -t devtmpfs devtmpfs /dev
|
|
|
|
+fi
|
|
|
|
+
|
|
|
|
+# Use the /dev/console device node from devtmpfs if possible to not
|
|
|
|
+# confuse glibc's ttyname_r().
|
|
|
|
+# This may fail (E.G. booted with console=), and errors from exec will
|
|
|
|
+# terminate the shell, so use a subshell for the test
|
|
|
|
+if (exec 0</dev/console) 2>/dev/null; then
|
|
|
|
+ exec 0</dev/console
|
|
|
|
+ exec 1>/dev/console
|
|
|
|
+ exec 2>/dev/console
|
|
|
|
+fi
|
|
|
|
+
|
|
|
|
+# Clear memory to reduce page fragmentation
|
|
|
|
+echo 3 > /proc/sys/vm/drop_caches
|
|
|
|
+
|
|
|
|
+# Finally, let's start an interactive shell
|
|
|
|
+exec /bin/sh
|