diff options
Diffstat (limited to 'target/default/target_skeleton/bin/firstboot')
-rwxr-xr-x | target/default/target_skeleton/bin/firstboot | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/target/default/target_skeleton/bin/firstboot b/target/default/target_skeleton/bin/firstboot new file mode 100755 index 000000000..5076d1c18 --- /dev/null +++ b/target/default/target_skeleton/bin/firstboot @@ -0,0 +1,54 @@ +#!/bin/sh +# $Id$ + + +[ -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 { + ln -sf /rom/$file $file +} 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 |