X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/7bc978b32b012346bad19ee8f1481a1e63a33d37..de50d6624ffd8250930462e43163bdec1747a999:/package/block-mount/files/mount.sh diff --git a/package/block-mount/files/mount.sh b/package/block-mount/files/mount.sh index db0fbad1a..e96174ce9 100644 --- a/package/block-mount/files/mount.sh +++ b/package/block-mount/files/mount.sh @@ -5,8 +5,8 @@ # -. /lib/functions/block.sh -. /lib/functions/fsck.sh +pi_include /lib/functions/block.sh +pi_include /lib/functions/fsck.sh config_mount_by_section() { local cfg="$1" @@ -31,16 +31,27 @@ config_mount_by_section() { found_device="$(libmount_find_device_by_id "$uuid" "$label" "$device" "$cfgdevice")" if [ -n "$found_device" ]; then - if [ -z "$find_rootfs" ] || [ "$find_rootfs" -eq 0 ] || [ "$is_rootfs" -eq 1 ]; then + if [ "$find_rootfs" != "1" ] || ( [ "$is_rootfs" -eq 1 ] || [ "$target" = "/" ] || [ "$target" = "/overlay" ] ); then [ "$enabled_fsck" -eq 1 ] && { grep -q "$found_device" /proc/swaps || grep -q "$found_device" /proc/mounts || { libmount_fsck "$found_device" "$fstype" "$enabled_fsck" } } - [ "$is_rootfs" -eq 1 ] && [ "$find_rootfs" -eq 1 ] && { + if [ "$find_rootfs" = "1" ]; then + if [ "$is_rootfs" -eq 1 ]; then target=/overlay - } + elif [ "$target" = "/" ]; then + target=/rom + fi + else + if [ "$is_rootfs" -eq 1 ] || [ "$target" = "/overlay" ]; then + target=/tmp/overlay-disabled + elif [ "$target" = "/" ] || [ "$target" = "/rom" ]; then + target="/tmp/whole_root-disabled" + fi + fi + config_create_mount_fstab_entry "$found_device" "$target" "$fstype" "$options" "$enabled" grep -q "$found_device" /proc/swaps || grep -q "$found_device" /proc/mounts || { [ "$enabled" -eq 1 ] && mkdir -p "$target" && mount "$target" 2>&1 | tee /proc/self/fd/2 | logger -t 'fstab' @@ -48,8 +59,13 @@ config_mount_by_section() { fi fi - [ "$is_rootfs" -eq 1 ] && [ "$find_rootfs" -eq 1 ] && { + [ "$find_rootfs" = "1" ] && { + [ "$target" = "/overlay" ] && { + rootfs_found=1 + } + [ "$target" = "/rom" ] && { rootfs_found=1 + } } return 0 }