add failsafe support for x86-2.6 and fix mdev support for platforms using /etc/preinit
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sat, 3 Mar 2007 22:32:13 +0000 (22:32 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sat, 3 Mar 2007 22:32:13 +0000 (22:32 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@6481 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/base-files/Makefile
package/base-files/files/etc/preinit
package/base-files/files/sbin/mount_root
target/linux/x86-2.6/base-files/default/etc/preinit.arch [new file with mode: 0644]
target/linux/x86-2.6/image/grub/menu.lst

index f02f1c9..30e9045 100644 (file)
@@ -19,7 +19,6 @@ REV:=$(shell LANG=C svn info | awk '/^Revision:/ { print$$2 }' )
 ifeq ($(REV),)
   REV:=0
 endif
-
 include $(INCLUDE_DIR)/package.mk
 
 ifneq ($(DUMP),1)
index 74d4e88..c60a0f8 100755 (executable)
@@ -1,5 +1,6 @@
 #!/bin/sh
 # Copyright (C) 2006 OpenWrt.org
 export PATH=/bin:/sbin:/usr/bin:/usr/sbin
-mount_root
+[ -e /etc/preinit.arch ] && . /etc/preinit.arch
+mount_root ${FAILSAFE:+failsafe}
 exec /sbin/init
index 607877c..4fa048f 100755 (executable)
@@ -5,17 +5,28 @@
 mount none /proc -t proc
 size=$(awk '/Mem:/ {l=5242880;print((s=$2/2)<l)?$2-l:s}' /proc/meminfo)
 mount none /tmp -t tmpfs -o size=$size,nosuid,nodev,mode=1777
-
-grep rootfs /proc/mtd >/dev/null 2>/dev/null && {
-       mtd unlock rootfs
-       grep rootfs_data /proc/mtd >/dev/null 2>/dev/null && {
-               . /bin/firstboot
-               echo "switching to jffs2"
-               mount "$(find_mtd_part rootfs_data)" /jffs -t jffs2
-               fopivot /jffs /rom
-       }
-} || mount -o remount,rw /dev/root /
-
+if grep devfs /proc/filesystems > /dev/null; then
+       mount none /dev -t devfs
+else
+       mount -t sysfs none /sys
+       mount -t tmpfs tmpfs /dev -o size=512K
+       mknod /dev/console c 5 1
+       mkdir /dev/shm
+       /sbin/mdev -s
+fi
 mkdir -p /dev/pts
 mount none /dev/pts -t devpts
+
+[ failsafe != "$1" ] && {
+       grep rootfs /proc/mtd >/dev/null 2>/dev/null && {
+               mtd unlock rootfs
+               grep rootfs_data /proc/mtd >/dev/null 2>/dev/null && {
+                       . /bin/firstboot
+                       echo "switching to jffs2"
+                       mount "$(find_mtd_part rootfs_data)" /jffs -t jffs2
+                       fopivot /jffs /rom
+               }
+       } || mount -o remount,rw /dev/root /
+}
+
 grep sysfs /proc/filesystems >/dev/null && mount -t sysfs none /sys 2>&-
diff --git a/target/linux/x86-2.6/base-files/default/etc/preinit.arch b/target/linux/x86-2.6/base-files/default/etc/preinit.arch
new file mode 100644 (file)
index 0000000..f29f0d4
--- /dev/null
@@ -0,0 +1,2 @@
+mount -t proc none /proc
+grep 'failsafe=' /proc/cmdline && export FAILSAFE=true
index 590a7d5..f9d2843 100644 (file)
@@ -9,3 +9,7 @@ root    (hd0,0)
 kernel  /boot/vmlinuz @CMDLINE@ noinitrd console=ttyS0,@BAUDRATE@n8 reboot=bios
 boot
 
+title  OpenWrt (failsafe)
+root   (hd0,0)
+kernel  /boot/vmlinuz failsafe=true @CMDLINE@ noinitrd console=ttyS0,@BAUDRATE@n8 reboot=bios
+boot