mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-24 09:33:07 +02:00
clean up handling of the root filesystem mount - remove broadcom specific junk from the generic base-files part
git-svn-id: svn://svn.openwrt.org/openwrt/branches/buildroot-ng/openwrt@3951 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
68f4a7a320
commit
7885524586
89
package/base-files/ar7-2.4/bin/firstboot
Executable file
89
package/base-files/ar7-2.4/bin/firstboot
Executable file
@ -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
|
||||||
|
}
|
28
package/base-files/ar7-2.4/sbin/mount_root
Executable file
28
package/base-files/ar7-2.4/sbin/mount_root
Executable file
@ -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>&-
|
11
package/base-files/brcm-2.4/etc/preinit
Executable file
11
package/base-files/brcm-2.4/etc/preinit
Executable file
@ -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
|
38
package/base-files/brcm-2.4/sbin/mount_root
Executable file
38
package/base-files/brcm-2.4/sbin/mount_root
Executable file
@ -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>&-
|
90
package/base-files/brcm-2.6/bin/firstboot
Executable file
90
package/base-files/brcm-2.6/bin/firstboot
Executable file
@ -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
|
||||||
|
}
|
11
package/base-files/brcm-2.6/etc/preinit
Executable file
11
package/base-files/brcm-2.6/etc/preinit
Executable file
@ -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
|
38
package/base-files/brcm-2.6/sbin/mount_root
Executable file
38
package/base-files/brcm-2.6/sbin/mount_root
Executable file
@ -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
|
#!/bin/sh
|
||||||
. /etc/functions.sh
|
. /etc/functions.sh
|
||||||
|
|
||||||
|
[ -f /proc/mounts ] || /sbin/mount_root
|
||||||
[ -f /proc/jffs2_bbc ] && echo "S" > /proc/jffs2_bbc
|
[ -f /proc/jffs2_bbc ] && echo "S" > /proc/jffs2_bbc
|
||||||
vconfig set_name_type VLAN_PLUS_VID_NO_PAD
|
vconfig set_name_type VLAN_PLUS_VID_NO_PAD
|
||||||
|
|
||||||
|
@ -1,38 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/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)
|
size=$(awk '/Mem:/ {l=5242880;print((s=$2/2)<l)?$2-l:s}' /proc/meminfo)
|
||||||
mount none /tmp -t tmpfs -o size=$size
|
mount none /proc -t proc
|
||||||
|
mount none /tmp -t tmpfs -o size=$size,nosuid,nodev,mode=1777
|
||||||
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
|
mkdir -p /dev/pts
|
||||||
mount none /dev/pts -t devpts
|
mount none /dev/pts -t devpts
|
||||||
mount -t sysfs none /sys 2>&-
|
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…
Reference in New Issue
Block a user