104 lines
2.6 KiB
Bash
104 lines
2.6 KiB
Bash
#!/bin/sh
|
|
# Copyright 2010 Vertical Communications
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
#
|
|
|
|
|
|
pi_include /lib/functions/block.sh
|
|
pi_include /lib/functions/fsck.sh
|
|
|
|
config_mount_by_section() {
|
|
local cfg="$1"
|
|
local find_rootfs="$2"
|
|
|
|
mount_cb() {
|
|
local cfg="$1"
|
|
local device="$2"
|
|
shift
|
|
local target="$2"
|
|
local cfgdevice="$3"
|
|
local fstype="$4"
|
|
local options="$5"
|
|
local enabled="$6"
|
|
local enabled_fsck="$7"
|
|
local uuid="$8"
|
|
local label="$9"
|
|
shift
|
|
local is_rootfs="$9"
|
|
shift
|
|
local found_device=""
|
|
|
|
found_device="$(libmount_find_device_by_id "$uuid" "$label" "$device" "$cfgdevice")"
|
|
if [ -n "$found_device" ]; 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"
|
|
}
|
|
}
|
|
|
|
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'
|
|
}
|
|
|
|
fi
|
|
fi
|
|
[ "$find_rootfs" = "1" ] && {
|
|
[ "$target" = "/overlay" ] && {
|
|
rootfs_found=1
|
|
}
|
|
[ "$target" = "/rom" ] && {
|
|
rootfs_found=1
|
|
}
|
|
}
|
|
return 0
|
|
}
|
|
config_get_mount "$cfg"
|
|
reset_block_cb
|
|
}
|
|
|
|
config_swapon_by_section() {
|
|
local cfg="$1"
|
|
|
|
swap_cb() {
|
|
local cfg="$1"
|
|
local device="$2"
|
|
local cfgdevice="$3"
|
|
local enabled="$4"
|
|
local uuid="$5"
|
|
local label="$6"
|
|
local uuid
|
|
local label
|
|
|
|
local found_device=""
|
|
|
|
found_device="$(libmount_find_device_by_id "$uuid" "$label" "$device" "$cfgdevice")"
|
|
|
|
if [ -n "$found_device" ]; then
|
|
config_create_swap_fstab_entry "$found_device" "$enabled"
|
|
grep -q "$found_device" /proc/swaps || grep -q "$found_device" /proc/mounts || {
|
|
[ "$enabled" -eq 1 ] && swapon "$found_device" | tee /proc/self/fd/2 | logger -t 'fstab'
|
|
}
|
|
fi
|
|
return 0
|
|
}
|
|
config_get_swap "$cfg"
|
|
reset_block_cb
|
|
}
|