All pastes #498909 Raw Edit

Untitled

public text v1 · immutable
·published 2007-05-20 19:09 UTC
rendered paste body
#!/bin/sh
# Copyright (C) 2006 OpenWrt.org
. /etc/functions.sh

size=$(awk '/MemTotal:/ {l=5242880;mt=($2*1024);print((s=mt/2)<l)?mt-l:s}' /proc/meminfo)
mount none /tmp -t tmpfs -o size=$size,nosuid,nodev,mode=1777

if grep devfs /proc/filesystems > /dev/null; then
        mount none /dev -t devfs
        M0=/dev/pty/m0
        M1=/dev/pty/m1
        HOTPLUG=/sbin/hotplug-call
else
        mount -t tmpfs tmpfs /dev -o size=512K
        mknod /dev/console c 5 1
        mkdir /dev/shm
        /sbin/hotplug2 --no-persistent --coldplug --set-rules-file /etc/hotplug2-init.rules
        M0=/dev/ptmx
        M1=/dev/ptmx
        HOTPLUG=
fi

mkdir -p /dev/pts /dev/shm
mount none /dev/pts -t devpts

# the shell really doesn't like having stdin/out closed
# that's why we use /dev/pty/m0 and m1 as replacement
# for /dev/console if there's no serial console available
dd if=/dev/console of=/dev/null bs=1 count=0 >/dev/null 2>/dev/null || \
        exec <$M0 >$M1 2>&0

echo "$HOTPLUG" > /proc/sys/kernel/hotplug

jffs2_ready () {
        mtdpart="$(find_mtd_part rootfs_data)"
        magic=$(hexdump $mtdpart -n 4 -e '4/1 "%02x"')
        [ "$magic" != "deadc0de" ]
}

[ failsafe != "$1" ] && {
        grep rootfs_data /proc/mtd >/dev/null 2>/dev/null && {
                . /bin/firstboot
                mtd unlock rootfs_data
                jffs2_ready && {
                        echo "loading USB and ext2 modules"
                        insmod usbcore
                        insmod ext2
                        insmod ohci-hcd
                        insmod uhci-hcd
                        insmod ehci-hcd
                        insmod scsi_mod
                        insmod sd_mod
                        insmod usb-storage
                        sleep 2

                        echo "switching to jffs2"
                        # mount "$(find_mtd_part rootfs_data)" /jffs -t jffs2 && \
                        mount /dev/scsi/host0/bus0/target0/lun0/part1 /jffs -t ext2 && \
                                fopivot /jffs /rom
                } || {
                        echo "jffs2 not ready yet; using ramdisk"
                        ramoverlay
                }
        } || {
                mtd unlock rootfs
                mount -o remount,rw /dev/root /
        }
}