blob: d2da575f483dfd28ec9d94f73e819a811d1f2542 (
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
#!/bin/bash
#
# This script is designed to facilitate in-tree development and testing
# by installing symlinks on your system which refer to in-tree helper
# utilities. These helper utilities must be installed to in order to
# exercise all ZFS functionality. By using symbolic links and keeping
# the scripts in-tree during development they can be easily modified
# and those changes tracked.
#
# Use the following configuration option to override the installation
# paths for these scripts. The correct path is automatically set for
# most distributions but you can optionally set it for your environment.
#
# --with-mounthelperdir=DIR install mount.zfs in dir [/sbin]
# --with-udevdir=DIR install udev helpers [default=check]
# --with-udevruledir=DIR install udev rules [default=UDEVDIR/rules.d]
# --sysconfdir=DIR install zfs configuration files [PREFIX/etc]
#
basedir="$(dirname $0)"
SCRIPT_COMMON=common.sh
if [ -f "${basedir}/${SCRIPT_COMMON}" ]; then
. "${basedir}/${SCRIPT_COMMON}"
else
echo "Missing helper script ${SCRIPT_COMMON}" && exit 1
fi
PROG=zfs-helpers.sh
DRYRUN=
INSTALL=
REMOVE=
VERBOSE=
usage() {
cat << EOF
USAGE:
$0 [dhirv]
DESCRIPTION:
Install/remove the ZFS helper utilities.
OPTIONS:
-d Dry run
-h Show this message
-i Install the helper utilities
-r Remove the helper utilities
-v Verbose
$0 -iv
$0 -r
EOF
}
while getopts 'hdirv' OPTION; do
case $OPTION in
h)
usage
exit 1
;;
d)
DRYRUN=1
;;
i)
INSTALL=1
;;
r)
REMOVE=1
;;
v)
VERBOSE=1
;;
?)
usage
exit
;;
esac
done
if [ "${INSTALL}" -a "${REMOVE}" ]; then
usage
die "Specify -i or -r but not both"
fi
if [ ! "${INSTALL}" -a ! "${REMOVE}" ]; then
usage
die "Either -i or -r must be specified"
fi
if [ $(id -u) != 0 ]; then
die "Must run as root"
fi
if [ "$VERBOSE" ]; then
echo "--- Configuration ---"
echo "udevdir: $udevdir"
echo "udevruledir: $udevruledir"
echo "mounthelperdir: $mounthelperdir"
echo "sysconfdir: $sysconfdir"
echo "DRYRUN: $DRYRUN"
echo
fi
install() {
local src=$1
local dst=$2
if [ -h $dst ]; then
echo "Symlink exists: $dst"
elif [ -e $dst ]; then
echo "File exists: $dst"
elif [ ! -e $src ]; then
echo "Source missing: $src"
else
msg "ln -s $src $dst"
if [ ! "$DRYRUN" ]; then
mkdir -p $(dirname $dst) &>/dev/null
ln -s $src $dst
fi
fi
}
remove() {
local dst=$1
if [ -h $dst ]; then
msg "rm $dst"
rm $dst
rmdir $(dirname $dst) &>/dev/null
fi
}
if [ ${INSTALL} ]; then
install $CMDDIR/mount_zfs/mount.zfs $mounthelperdir/mount.zfs
install $CMDDIR/fsck_zfs/fsck.zfs $mounthelperdir/fsck.zfs
install $CMDDIR/zvol_id/zvol_id $udevdir/zvol_id
install $CMDDIR/vdev_id/vdev_id $udevdir/vdev_id
install $UDEVRULEDIR/60-zvol.rules $udevruledir/60-zvol.rules
install $UDEVRULEDIR/69-vdev.rules $udevruledir/69-vdev.rules
install $UDEVRULEDIR/90-zfs.rules $udevruledir/90-zfs.rules
install $CMDDIR/zpool/zpool.d $sysconfdir/zfs/zpool.d
else
remove $mounthelperdir/mount.zfs
remove $mounthelperdir/fsck.zfs
remove $udevdir/zvol_id
remove $udevdir/vdev_id
remove $udevruledir/60-zvol.rules
remove $udevruledir/69-vdev.rules
remove $udevruledir/90-zfs.rules
remove $sysconfdir/zfs/zpool.d
fi
exit 0
|