Prechádzať zdrojové kódy

use standard busybox init, remove previously used /init. some configs and ideas from buildroot project

Waldemar Brodkorb 10 rokov pred
rodič
commit
9e914d4c02

+ 4 - 4
package/base-files/Makefile

@@ -6,7 +6,7 @@ include $(TOPDIR)/mk/rootfs.mk
 
 PKG_NAME:=		base-files
 PKG_VERSION:=		1.0
-PKG_RELEASE:=		66
+PKG_RELEASE:=		67
 PKG_SECTION:=		base
 PKG_DESCR:=		basic files and scripts
 PKG_BUILDDEP:=		pkgconf-host file-host
@@ -33,13 +33,13 @@ endif
 	$(SED) 's,@HOST@,$(ADK_HOST),g' $(IDIR_BASE_FILES)/etc/ipkg.conf
 	$(SED) 's,@VENDOR@,$(ADK_VENDOR),g' $(IDIR_BASE_FILES)/etc/ipkg.conf
 	echo /bin/sh >${IDIR_BASE_FILES}/etc/shells
+	echo /bin/mksh >>${IDIR_BASE_FILES}/etc/shells
+ifneq (${ADK_PACKAGE_ASH},)
 	echo /bin/ash >>${IDIR_BASE_FILES}/etc/shells
+endif
 ifneq (${ADK_PACKAGE_BASH},)
 	echo /bin/bash >>${IDIR_BASE_FILES}/etc/shells
 endif
-ifneq (${ADK_PACKAGE_MKSH},)
-	echo /bin/mksh >>${IDIR_BASE_FILES}/etc/shells
-endif
 ifneq (${ADK_PACKAGE_ZSH},)
 	echo /bin/zsh >>${IDIR_BASE_FILES}/etc/shells
 endif

+ 9 - 0
package/base-files/src/etc/fstab

@@ -0,0 +1,9 @@
+# /etc/fstab: static file system information.
+#
+# <file system> <mount pt>     <type>   <options>         <dump> <pass>
+#/dev/root       /              ext2     rw,noauto         0      1
+proc            /proc          proc     defaults          0      0
+devpts          /dev/pts       devpts   defaults,gid=5,mode=620   0      0
+tmpfs           /dev/shm       tmpfs    mode=0777         0      0
+tmpfs           /tmp           tmpfs    mode=1777         0      0
+sysfs           /sys           sysfs    defaults          0      0

+ 23 - 2
package/base-files/src/etc/init.d/boot

@@ -4,6 +4,29 @@
 
 . /etc/functions.sh
 
+# disable kernel messages
+echo 0 > /proc/sys/kernel/printk
+
+# remount /dev with smaller size
+mount -o remount,nosuid,size=128k,mode=0755 -t tmpfs mdev /dev
+
+# remount /tmp with smaller size
+size=$(cat /etc/tmpfs 2>/dev/null)
+[ -z $size ] && size=2048
+mount -o remount,nosuid,nodev,mode=1777,size=${size}k -t tmpfs tmpfs /tmp
+
+# start mdev dynamic device node management
+echo >/dev/mdev.seq
+echo "/sbin/mdev" >/proc/sys/kernel/hotplug
+mdev -s
+
+# seed some random
+cat /etc/.rnd >/dev/urandom 2>&1
+
+# setup cfgfs
+[ -x /sbin/cfgfs ] && { cfgfs setup; mount -o remount,ro /;} || mount -o remount,rw /
+
+# create some useful directories in tmpfs
 mkdir -p /var/log
 mkdir -p /var/run
 touch /var/log/lastlog
@@ -22,6 +45,4 @@ for f in /etc/modules.d/*; do
 	[[ -e $f ]] && load_modules /etc/modules.d/*
 	break
 done
-# settle down, after module load
-sleep 2
 exit 0

+ 0 - 10
package/base-files/src/etc/init.d/mount

@@ -1,10 +0,0 @@
-#!/bin/sh
-#INIT 60
-[[ $1 = autostart ]] || exit 0
-
-# any lvm volumes to activate?
-[ -x /usr/sbin/lvm ] && { lvm vgscan; lvm vgchange -ay;}
-# check and mount all filesystems not /
-[ -f /etc/fstab ] && { fsck -p >/dev/null; mount -a; swapon -a;}
-
-exit 0

+ 4 - 3
package/base-files/src/etc/init.d/rcS

@@ -1,10 +1,11 @@
 #!/bin/sh
+echo "System initialization ..."
 export PATH=/bin:/sbin:/usr/bin:/usr/sbin
+ln -s /proc/self/fd/2 /dev/stderr
 {
 	grep '^#INIT ' /etc/init.d/* | \
 	    sort -nk2 | \
 	    while read line; do
-		sh ${line%%:*} autostart 2>&1
+		sh ${line%%:*} autostart
 	    done
-	test -e /etc/init.d/boot.local && (/bin/sh /etc/init.d/boot.local) 2>&1
-} | logger -p 6 -t '' &
+} | tee /dev/stderr |logger -p 6 -t ''

+ 0 - 14
package/base-files/src/etc/init.d/umount

@@ -1,14 +0,0 @@
-#!/bin/sh
-#INIT 55
-
-case $1 in
-autostop)
-	cd /
-	sync
-	for i in $(grep -v ^# /etc/fstab 2>/dev/null|awk '{ print $2 }'|grep -v none);do
-       	 umount $i 2>/dev/null
-	done
-	;;
-esac
-exit 0
-

+ 6 - 0
package/base-files/src/etc/inittab

@@ -1,2 +1,8 @@
+null::sysinit:/bin/mount -t proc proc /proc
+null::sysinit:/bin/mkdir -p /dev/pts
+null::sysinit:/bin/mkdir -p /dev/shm
+null::sysinit:/bin/mount -a
 ::sysinit:/etc/init.d/rcS
 ::shutdown:/etc/init.d/rcK
+null::shutdown:/bin/umount -a -r
+null::shutdown:/sbin/swapoff -a

+ 0 - 1
package/base-files/src/etc/network/if-post-down.d/03-wireless

@@ -1,5 +1,4 @@
 #!/bin/sh
-set -x
 set -e 
 
 [ "${IFACE%%[0-9]*}" = "wlan" ] || exit 0

+ 0 - 1
package/base-files/src/etc/profile

@@ -1,5 +1,4 @@
 export PATH=/bin:/sbin:/usr/bin:/usr/sbin
-export TERM=linux
 export EDITOR=/bin/vi
 if [[ $(id -u) = 0 ]]; then
 	export PS1='`whoami`@`hostname`:`pwd` # '

+ 6 - 25
package/base-files/src/init

@@ -1,26 +1,7 @@
 #!/bin/sh
-echo "System initialization ..."
-export PATH=/bin:/sbin:/usr/bin:/usr/sbin
-mount -t devtmpfs devtmpfs /dev >/dev/null 2>&1
-mount -nt proc proc /proc
-echo 0 > /proc/sys/kernel/printk
-mount -o nosuid,nodev,noexec -t sysfs sysfs /sys
-[ ! -f /etc/notmpfs ] && {
-  size=$(cat /etc/tmpfs 2>/dev/null)
-  [ -z $size ] && size=2048
-  mount -o nosuid,nodev,mode=1777,size=${size}k -t tmpfs tmpfs /tmp
-}
-mount -o remount,nosuid,size=128k,mode=0755 -t tmpfs mdev /dev
-[ -d /dev/pts ] || mkdir /dev/pts 
-[ -d /dev/shm ] || mkdir /dev/shm
-mount -o nosuid,noexec -t tmpfs tmpfs /dev/shm
-mount -o nosuid,noexec -t devpts devpts /dev/pts
-echo >/dev/mdev.seq
-echo "/sbin/mdev" >/proc/sys/kernel/hotplug
-mdev -s
-cat /etc/.rnd >/dev/urandom 2>&1
-[ -x /installer ] && { /installer; }
-[ -x /kexecinit ] && { /kexecinit; }
-[ -x /cryptinit ] && { /cryptinit; exec switch_root /mnt "/init";}
-[ -x /sbin/cfgfs ] && { cfgfs setup; mount -o remount,ro /;} || mount -o remount,rw /
-exec /sbin/init
+# devtmpfs does not get automounted for initramfs
+/bin/mount -t devtmpfs devtmpfs /dev
+exec 0</dev/console
+exec 1>/dev/console
+exec 2>/dev/console
+exec /sbin/init $*

+ 1 - 1
target/config/Config.in.runtime

@@ -38,7 +38,7 @@ config ADK_RUNTIME_TIMEZONE
 
 choice
 prompt "Console output on embedded system"
-default ADK_RUNTIME_CONSOLE_BOTH if ADK_TARGET_WITH_VGA && !ADK_TARGET_SYSTEM_RASPBERRY_PI && !ADK_TARGET_SYSTEM_QEMU_SH4 && !ADK_TARGET_SYSTEM_QEMU_SH4EB && !ADK_TARGET_SYSTEM_LEMOTE_YEELONG
+default ADK_RUNTIME_CONSOLE_BOTH if ADK_TARGET_WITH_VGA && !ADK_TARGET_SYSTEM_RASPBERRY_PI && !ADK_TARGET_SYSTEM_QEMU_SH4 && !ADK_TARGET_SYSTEM_QEMU_SH4EB && !ADK_TARGET_SYSTEM_LEMOTE_YEELONG && ADK_TARGET_QEMU_WITH_GRAPHIC
 default ADK_RUNTIME_CONSOLE_VGA if ADK_TARGET_SYSTEM_RASPBERRY_PI || ADK_TARGET_SYSTEM_QEMU_SH4 || ADK_TARGET_SYSTEM_QEMU_SH4EB || ADK_TARGET_SYSTEM_LEMOTE_YEELONG
 default ADK_RUNTIME_CONSOLE_SERIAL
 

+ 0 - 10
target/linux/patches/3.11.10/startup.patch

@@ -1,16 +1,6 @@
 diff -Nur linux-3.7.3.orig/init/main.c linux-3.7.3/init/main.c
 --- linux-3.7.3.orig/init/main.c	2013-01-17 17:47:40.000000000 +0100
 +++ linux-3.7.3/init/main.c	2013-01-19 15:08:13.000000000 +0100
-@@ -834,7 +834,8 @@
- 		printk(KERN_WARNING "Failed to execute %s.  Attempting "
- 					"defaults...\n", execute_command);
- 	}
--	if (!run_init_process("/sbin/init") ||
-+	if (!run_init_process("/init") ||
-+ 	    !run_init_process("/sbin/init") ||
- 	    !run_init_process("/etc/init") ||
- 	    !run_init_process("/bin/init") ||
- 	    !run_init_process("/bin/sh"))
 @@ -879,6 +880,8 @@
  	if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
  		printk(KERN_WARNING "Warning: unable to open an initial console.\n");

+ 0 - 10
target/linux/patches/3.12.13/startup.patch

@@ -1,16 +1,6 @@
 diff -Nur linux-3.7.3.orig/init/main.c linux-3.7.3/init/main.c
 --- linux-3.7.3.orig/init/main.c	2013-01-17 17:47:40.000000000 +0100
 +++ linux-3.7.3/init/main.c	2013-01-19 15:08:13.000000000 +0100
-@@ -834,7 +834,8 @@
- 		printk(KERN_WARNING "Failed to execute %s.  Attempting "
- 					"defaults...\n", execute_command);
- 	}
--	if (!run_init_process("/sbin/init") ||
-+	if (!run_init_process("/init") ||
-+ 	    !run_init_process("/sbin/init") ||
- 	    !run_init_process("/etc/init") ||
- 	    !run_init_process("/bin/init") ||
- 	    !run_init_process("/bin/sh"))
 @@ -879,6 +880,8 @@
  	if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
  		printk(KERN_WARNING "Warning: unable to open an initial console.\n");

+ 0 - 10
target/linux/patches/3.13.5/startup.patch

@@ -1,16 +1,6 @@
 diff -Nur linux-3.13.3.orig/init/main.c linux-3.13.3/init/main.c
 --- linux-3.13.3.orig/init/main.c	2014-02-13 23:00:14.000000000 +0100
 +++ linux-3.13.3/init/main.c	2014-02-17 11:35:14.000000000 +0100
-@@ -871,7 +871,8 @@
- 		pr_err("Failed to execute %s (error %d).  Attempting defaults...\n",
- 			execute_command, ret);
- 	}
--	if (!try_to_run_init_process("/sbin/init") ||
-+	if (!try_to_run_init_process("/init") ||
-+            !try_to_run_init_process("/sbin/init") ||
- 	    !try_to_run_init_process("/etc/init") ||
- 	    !try_to_run_init_process("/bin/init") ||
- 	    !try_to_run_init_process("/bin/sh"))
 @@ -916,6 +917,8 @@
  	if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
  		pr_err("Warning: unable to open an initial console.\n");

+ 0 - 8
target/linux/patches/3.4.82/startup.patch

@@ -1,14 +1,6 @@
 diff -Nur linux-2.6.34.orig/init/main.c linux-2.6.34/init/main.c
 --- linux-2.6.34.orig/init/main.c	2010-05-16 23:17:36.000000000 +0200
 +++ linux-2.6.34/init/main.c	2010-05-20 20:13:26.321613615 +0200
-@@ -842,6 +842,7 @@
- 		printk(KERN_WARNING "Failed to execute %s.  Attempting "
- 					"defaults...\n", execute_command);
- 	}
-+	run_init_process("/init");
- 	run_init_process("/sbin/init");
- 	run_init_process("/etc/init");
- 	run_init_process("/bin/init");
 @@ -889,6 +890,8 @@
  	if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
  		printk(KERN_WARNING "Warning: unable to open an initial console.\n");