#!/bin/sh # $Id$ mount | grep squashfs >&- || { echo "You do not have a squashfs partition; aborting" echo "(firstboot cannot be run on jffs2 based firmwares)" return } [ -f "/tmp/.firstboot" ] && { echo "firstboot is already running" return } touch /tmp/.firstboot jdev=$(mount | awk '/jffs2/ {print $3}') if [ -z "$jdev" ]; then echo -n "Creating jffs2 partition... " mtd erase OpenWrt >&- mount -t jffs2 /dev/mtdblock/4 /jffs echo "done" cd /jffs else echo "firstboot has already been run" echo "jffs2 partition is mounted, only resetting files" cd $jdev fi exec 2>/dev/null mount /dev/mtdblock/2 /rom -o ro echo -n "creating directories... " { cd /rom find . -type d cd - } | xargs mkdir echo "done" echo -n "setting up symlinks... " for file in $(cd /rom; find * -type f; find * -type l;) do { case "${file%/*}" in "usr/lib/ipkg/info"|"etc/config") cp -f /rom/$file $file;; *) ln -sf /rom/$file $file;; esac } done echo "done" touch /tmp/resolv.conf ln -s /tmp/resolv.conf /etc/resolv.conf umount /rom mount none /jffs/proc -t proc pivot_root /jffs /jffs/rom mount none /dev -t devfs mount none /tmp -t ramfs umount /rom/proc umount /rom/tmp umount /rom/dev