mirror of https://github.com/hak5/openwrt.git
66 lines
2.2 KiB
Bash
66 lines
2.2 KiB
Bash
#!/bin/sh
|
|
# Copyright (C) 2010 Vertical Communications
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
|
|
|
|
determine_external_root() {
|
|
pi_include /lib/functions/extmount.sh
|
|
pi_include /lib/functions/mount.sh
|
|
|
|
local OLD_UCI_CONFIG_DIR="$UCI_CONFIG_DIR"
|
|
local OLD_PATH="$PATH"
|
|
local OLD_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
|
|
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" = "/tmp/overlay" ] && [ -r "/tmp/overlay/etc/config/fstab" ]; then
|
|
UCI_CONFIG_DIR="/tmp/overlay/etc/config"
|
|
ER_IS_SQUASHFS=true
|
|
ER_OVERLAY_PREFIX="/tmp/overlay"
|
|
PATH=$ER_OVERLAY_PREFIX/sbin:$PATH
|
|
LD_LIBRARY_PATH=$ER_OVERLAY_PREFIX/usr/lib:$LD_LIBRARY_PATH
|
|
export PATH LD_LIBRARY_PATH
|
|
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
|
|
ER_OVERLAY_ROM="/no-extroot"
|
|
|
|
[ "$rootfs_found" = "1" ] && grep -q ' /overlay ' /proc/mounts && {
|
|
pi_extroot_mount_success=true
|
|
pi_mount_skip_next=false
|
|
ER_OVERLAY_ROM="/overlay"
|
|
}
|
|
[ "$rootfs_found" = "1" ] && grep -q ' /rom ' /proc/mounts && {
|
|
pi_extroot_mount_success=true
|
|
pi_mount_skip_next=false
|
|
ER_OVERLAY_ROM="/rom"
|
|
}
|
|
}
|
|
UCI_CONFIG_DIR="$OLD_UCI_CONFIG_DIR"
|
|
PATH="$OLD_PATH"
|
|
LD_LIBRARY_PATH="$OLD_LD_LIBRARY_PATH"
|
|
export PATH LD_LIBRARY_PATH
|
|
}
|
|
|
|
boot_hook_add preinit_mount_root determine_external_root
|
|
|