aboutsummaryrefslogtreecommitdiffstats
path: root/package/block-extroot/files/50_determine_usb_root
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2010-02-26 22:46:10 +0000
committerFelix Fietkau <nbd@openwrt.org>2010-02-26 22:46:10 +0000
commitddf22a9a5112939fbc67473ee6431f19af8811ad (patch)
tree3ad67390f54afb3c49c662e0df68041834f6abd9 /package/block-extroot/files/50_determine_usb_root
parent2de472e0f15fc3daf1669d302ecb78ecc5f643c5 (diff)
downloadmaster-187ad058-ddf22a9a5112939fbc67473ee6431f19af8811ad.tar.gz
master-187ad058-ddf22a9a5112939fbc67473ee6431f19af8811ad.tar.bz2
master-187ad058-ddf22a9a5112939fbc67473ee6431f19af8811ad.zip
add block-extroot, a package for using an external filesystem as rootfs (patch by cshore)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19880 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/block-extroot/files/50_determine_usb_root')
-rw-r--r--package/block-extroot/files/50_determine_usb_root50
1 files changed, 50 insertions, 0 deletions
diff --git a/package/block-extroot/files/50_determine_usb_root b/package/block-extroot/files/50_determine_usb_root
new file mode 100644
index 0000000000..1e5f153b6a
--- /dev/null
+++ b/package/block-extroot/files/50_determine_usb_root
@@ -0,0 +1,50 @@
+#!/bin/sh
+# Copyright (C) 2010 Vertical Communications
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+
+
+. /etc/functions.sh
+. /lib/functions/extmount.sh
+. /lib/functions/mount.sh
+
+determine_external_root() {
+ local OLD_UCI_CONFIG_DIR="$UCI_CONFIG_DIR"
+ set_jffs_mp
+ determine_root_device
+
+ # extroot requires extroot and fstab config files, therefore
+ # we assume configuration is incomplete and not to be used if either of them
+ # is missing (for jffs versions of these files on squashfs image)
+ if [ "$jffs" = "/jffs" ] && [ -r "/jffs/etc/config/fstab" ]; then
+ UCI_CONFIG_DIR="/jffs/etc/config"
+ ER_IS_SQUASHFS=true
+ fi
+
+ # For squashfs on firstboot root_device will be tmpfs for the ramoverlay,
+ # unless there is a saved config, in which case it will be /dev/root,
+ # however in the case of a saved config, it won't be restored until after
+ # this script, so there won't be a config on the first boot after
+ # flashing a squashfs-based filesystem
+ # For ext2, ramdisk, or jffs2 root filesystems root_device is /dev/root
+ # For squashfs after firstboot, root filesystem is /dev/root
+ # We only use the config from the root or jffs if the root_device is
+ # /dev/root
+ [ "$root_device" = "/dev/root" ] && {
+ er_load_modules
+ [ -n "$extroot_settle_time" ] && [ "$extroot_settle_time" -gt 0 ] && {
+ sleep $extroot_settle_time
+ }
+ config_load fstab
+ config_foreach config_mount_by_section mount 1
+
+ [ "$rootfs_found" = "1" ] && grep -q /overlay /proc/mounts && {
+ pi_extroot_mount_success=true
+ pi_mount_skip_next=false
+ }
+ }
+ UCI_CONFIG_DIR="$OLD_UCI_CONFIG_DIR"
+}
+
+boot_hook_add preinit_mount_root determine_external_root
+