clean up handling of the root filesystem mount - remove broadcom specific junk from the generic base-files part

SVN-Revision: 3951
master
Felix Fietkau 18 years ago
parent 44f2725829
commit 6e5a58eb7b
  1. 89
      openwrt/package/base-files/ar7-2.4/bin/firstboot
  2. 0
      openwrt/package/base-files/ar7-2.4/etc/preinit
  3. 28
      openwrt/package/base-files/ar7-2.4/sbin/mount_root
  4. 0
      openwrt/package/base-files/brcm-2.4/bin/firstboot
  5. 11
      openwrt/package/base-files/brcm-2.4/etc/preinit
  6. 38
      openwrt/package/base-files/brcm-2.4/sbin/mount_root
  7. 90
      openwrt/package/base-files/brcm-2.6/bin/firstboot
  8. 11
      openwrt/package/base-files/brcm-2.6/etc/preinit
  9. 38
      openwrt/package/base-files/brcm-2.6/sbin/mount_root
  10. 1
      openwrt/package/base-files/default/etc/init.d/S10boot
  11. 36
      openwrt/package/base-files/default/sbin/mount_root
  12. 6
      openwrt/package/base-files/sibyte-2.6/init
  13. 4
      openwrt/package/base-files/xscale-2.6/etc/init.d/S00xscale
  14. 3
      openwrt/package/base-files/xscale-2.6/init

@ -0,0 +1,89 @@
#!/bin/sh
# $Id$
rom=$(awk '/squashfs/ {print $2}' /proc/mounts)
jffs=$(awk '/jffs2/ {print $2}' /proc/mounts)
dupe() { # <new_root> <old_root>
cd $1
echo -n "creating directories... "
{
cd $2
find . -xdev -type d
echo "./dev ./jffs ./mnt ./proc ./tmp ./sys"
# xdev skips mounted directories
cd $1
} | xargs mkdir -p
echo "done"
echo -n "setting up symlinks... "
for file in $(cd $2; find . -xdev -type f;); do
case "$file" in
./rom/note) ;; #nothing
./etc/config*|\
./etc/resolv.conf|\
./usr/lib/ipkg/info) cp -af $2/$file $file;;
*) ln -sf /rom/${file#./*} $file;;
esac
done
for file in $(cd $2; find . -xdev -type l;); do
cp -af $2/${file#./*} $file
done
echo "done"
}
pivot() { # <new_root> <old_root>
mount -o move /proc $1/proc && \
pivot_root $1 $1$2 && {
mount -o move $2/dev /dev
mount -o move $2/tmp /tmp
mount -o move $2/sys /sys
return 0
}
}
mountdp() { # <device> <mount_point> <ignored> <fs>
dev=$1; mnt=$2; shift 2; opt=$*
mount $dev $mnt $opt
dupe $mnt $rom
pivot $mnt /rom
}
ramoverlay() {
mkdir -p /tmp/root
mountdp /tmp/root /mnt -o bind
}
[ "${0##*/}" = "firstboot" ] && {
[ -z "$rom" ] && {
echo "You do not have a squashfs partition; aborting"
echo "(firstboot cannot be run on jffs2 based firmwares)"
exit 1
}
[ "$1" = "switch2jffs" ] && {
mtd erase OpenWrt
mount -o remount,ro none / # try to avoid fs changing while copying
mount -o bind / /mnt
mount /dev/mtdblock/4 /rom/jffs -t jffs2
echo -n "copying files ... "
cp -a /mnt/* /rom/jffs
umount /mnt
echo "done"
pivot /rom /mnt
mount -o move /mnt /tmp/root
pivot /jffs /rom
exit 0
}
# script run manually
[ \! -z "$jffs" ] && {
echo "firstboot has already been run"
echo "jffs2 partition is mounted, only resetting files"
dupe $jffs $rom
exit 0
}
mtd erase OpenWrt
mountdp /dev/mtdblock/4 /jffs -t jffs2
}

@ -0,0 +1,28 @@
#!/bin/sh
size=$(awk '/Mem:/ {l=5242880;print((s=$2/2)<l)?$2-l:s}' /proc/meminfo)
mount none /tmp -t tmpfs -o size=$size
if [ "$1" != "failsafe" ]; then
mtd unlock linux
mount | grep jffs2 >&-
if [ $? = 0 ] ; then
if [ $(cat /proc/mtd | wc -l) = 6 ]; then
mtd erase OpenWrt
else
mount -o remount,rw /dev/root /
fi
else
. /bin/firstboot
echo "switching to jffs2"
mount /dev/mtdblock/4 /jffs -t jffs2
pivot /jffs /rom || {
echo "jffs2 unusable; using ramdisk"
ramoverlay
}
fi
fi
mount none /tmp -t tmpfs -o remount,nosuid,nodev,mode=1777
mkdir -p /dev/pts
mount none /dev/pts -t devpts
mount -t sysfs none /sys 2>&-

@ -0,0 +1,11 @@
#!/bin/sh
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
mount none /proc -t proc
[ -f /etc/preinit.arch ] && . /etc/preinit.arch
[ -z "$FAILSAFE" ] || {
echo /bin/true > /proc/sys/kernel/hotplug
telnetd -l /bin/login <> /dev/null 2>&1
}
mount_root ${FAILSAFE:+failsafe}
exec /sbin/init

@ -0,0 +1,38 @@
#!/bin/sh
is_dirty() {
grep Broadcom /proc/cpuinfo >&- || return 1
OFFSET="$(($(hexdump -v /dev/mtdblock/1 -s 20 -n 2 -e '"%d"')-1))"
return $(hexdump -v /dev/mtdblock/1 -s $OFFSET -n 1 -e '"%d"')
}
size=$(awk '/Mem:/ {l=5242880;print((s=$2/2)<l)?$2-l:s}' /proc/meminfo)
mount none /tmp -t tmpfs -o size=$size
if [ "$1" != "failsafe" ]; then
mtd unlock linux
mount | grep jffs2 >&-
if [ $? = 0 ] ; then
if [ $(cat /proc/mtd | wc -l) = 6 ]; then
mtd erase OpenWrt
jffs2root --move
else
mount -o remount,rw /dev/root /
fi
else
. /bin/firstboot
is_dirty
[ $? != 0 ] && {
echo "switching to jffs2"
mount /dev/mtdblock/4 /jffs -t jffs2
pivot /jffs /rom
} || {
echo "jffs2 unusable; using ramdisk"
ramoverlay
}
fi
fi
mount none /tmp -t tmpfs -o remount,nosuid,nodev,mode=1777
mkdir -p /dev/pts
mount none /dev/pts -t devpts
mount -t sysfs none /sys 2>&-

@ -0,0 +1,90 @@
#!/bin/sh
# $Id$
rom=$(awk '/squashfs/ {print $2}' /proc/mounts)
jffs=$(awk '/jffs2/ {print $2}' /proc/mounts)
dupe() { # <new_root> <old_root>
cd $1
echo -n "creating directories... "
{
cd $2
find . -xdev -type d
echo "./dev ./jffs ./mnt ./proc ./tmp ./sys"
# xdev skips mounted directories
cd $1
} | xargs mkdir -p
echo "done"
echo -n "setting up symlinks... "
for file in $(cd $2; find . -xdev -type f;); do
case "$file" in
./rom/note) ;; #nothing
./etc/config*|\
./etc/resolv.conf|\
./usr/lib/ipkg/info) cp -af $2/$file $file;;
*) ln -sf /rom/${file#./*} $file;;
esac
done
for file in $(cd $2; find . -xdev -type l;); do
cp -af $2/${file#./*} $file
done
echo "done"
}
pivot() { # <new_root> <old_root>
mount -o move /proc $1/proc && \
pivot_root $1 $1$2 && {
mount -o move $2/dev /dev
mount -o move $2/tmp /tmp
mount -o move $2/sys /sys
return 0
}
}
mountdp() { # <device> <mount_point> <ignored> <fs>
dev=$1; mnt=$2; shift 2; opt=$*
mount $dev $mnt $opt
dupe $mnt $rom
pivot $mnt /rom
}
ramoverlay() {
mkdir -p /tmp/root
mountdp /tmp/root /mnt -o bind
}
[ "${0##*/}" = "firstboot" ] && {
[ -z "$rom" ] && {
echo "You do not have a squashfs partition; aborting"
echo "(firstboot cannot be run on jffs2 based firmwares)"
exit 1
}
[ "$1" = "switch2jffs" ] && {
mtd erase OpenWrt
mount -o remount,ro none / # try to avoid fs changing while copying
mount -o bind / /mnt
mount /dev/mtdblock/4 /rom/jffs -t jffs2
echo -n "copying files ... "
cp -a /mnt/* /rom/jffs
umount /mnt
echo "done"
pivot /rom /mnt
mount -o move /mnt /tmp/root
pivot /jffs /rom
jffs2root --clean
exit 0
}
# script run manually
[ \! -z "$jffs" ] && {
echo "firstboot has already been run"
echo "jffs2 partition is mounted, only resetting files"
dupe $jffs $rom
exit 0
}
mtd erase OpenWrt
mountdp /dev/mtdblock/4 /jffs -t jffs2
}

@ -0,0 +1,11 @@
#!/bin/sh
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
mount none /proc -t proc
[ -f /etc/preinit.arch ] && . /etc/preinit.arch
[ -z "$FAILSAFE" ] || {
echo /bin/true > /proc/sys/kernel/hotplug
telnetd -l /bin/login <> /dev/null 2>&1
}
mount_root ${FAILSAFE:+failsafe}
exec /sbin/init

@ -0,0 +1,38 @@
#!/bin/sh
is_dirty() {
grep Broadcom /proc/cpuinfo >&- || return 1
OFFSET="$(($(hexdump -v /dev/mtdblock/1 -s 20 -n 2 -e '"%d"')-1))"
return $(hexdump -v /dev/mtdblock/1 -s $OFFSET -n 1 -e '"%d"')
}
size=$(awk '/Mem:/ {l=5242880;print((s=$2/2)<l)?$2-l:s}' /proc/meminfo)
mount none /tmp -t tmpfs -o size=$size
if [ "$1" != "failsafe" ]; then
mtd unlock linux
mount | grep jffs2 >&-
if [ $? = 0 ] ; then
if [ $(cat /proc/mtd | wc -l) = 6 ]; then
mtd erase OpenWrt
jffs2root --move
else
mount -o remount,rw /dev/root /
fi
else
. /bin/firstboot
is_dirty
[ $? != 0 ] && {
echo "switching to jffs2"
mount /dev/mtdblock/4 /jffs -t jffs2
pivot /jffs /rom
} || {
echo "jffs2 unusable; using ramdisk"
ramoverlay
}
fi
fi
mount none /tmp -t tmpfs -o remount,nosuid,nodev,mode=1777
mkdir -p /dev/pts
mount none /dev/pts -t devpts
mount -t sysfs none /sys 2>&-

@ -1,6 +1,7 @@
#!/bin/sh
. /etc/functions.sh
[ -f /proc/mounts ] || /sbin/mount_root
[ -f /proc/jffs2_bbc ] && echo "S" > /proc/jffs2_bbc
vconfig set_name_type VLAN_PLUS_VID_NO_PAD

@ -1,38 +1,8 @@
#!/bin/sh
is_dirty() {
grep Broadcom /proc/cpuinfo >&- || return 1
OFFSET="$(($(hexdump -v /dev/mtdblock/1 -s 20 -n 2 -e '"%d"')-1))"
return $(hexdump -v /dev/mtdblock/1 -s $OFFSET -n 1 -e '"%d"')
}
size=$(awk '/Mem:/ {l=5242880;print((s=$2/2)<l)?$2-l:s}' /proc/meminfo)
mount none /tmp -t tmpfs -o size=$size
if [ "$1" != "failsafe" ]; then
mtd unlock linux
mount | grep jffs2 >&-
if [ $? = 0 ] ; then
if [ $(cat /proc/mtd | wc -l) = 6 ]; then
mtd erase OpenWrt
jffs2root --move
else
mount -o remount,rw /dev/root /
fi
else
. /bin/firstboot
is_dirty
[ $? != 0 ] && {
echo "switching to jffs2"
mount /dev/mtdblock/4 /jffs -t jffs2
pivot /jffs /rom
} || {
echo "jffs2 unusable; using ramdisk"
ramoverlay
}
fi
fi
mount none /tmp -t tmpfs -o remount,nosuid,nodev,mode=1777
mount none /proc -t proc
mount none /tmp -t tmpfs -o size=$size,nosuid,nodev,mode=1777
mkdir -p /dev/pts
mount none /dev/pts -t devpts
mount -t sysfs none /sys 2>&-
mount -o remount,rw /dev/root /

@ -1,6 +0,0 @@
#!/bin/ash
mount none /dev -t devfs
mount none /proc -t proc
mount_root failsafe
mount -o remount,rw /dev/root /
exec /bin/busybox init

@ -1,4 +0,0 @@
#!/bin/sh
mount none /proc -t proc
mount_root failsafe
mount -o remount,rw /dev/root /

@ -1,3 +0,0 @@
#!/bin/ash
mount none /dev -t devfs
exec /bin/busybox init
Loading…
Cancel
Save