summaryrefslogtreecommitdiffstats
path: root/package/block-mount/files/mount.sh
blob: 3056c73aa94402edf6a8e657573a8a8ac1dc4a9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/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
				    fi
				else
				    if [ "$is_rootfs" -eq 1 ] || [ "$target" = "/overlay" ]; then
					target=/tmp/overlay-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
		    }
		}
		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
}