-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathmounts.sh
84 lines (77 loc) · 2.75 KB
/
mounts.sh
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
#!/usr/bin/env bash
function initSettingsVars {
if [ "$(uname -s)" == "Darwin" ]; then
SETTINGS_FILE="$DATA_ROOT/sshd/settings.dmg"
elif [ "$(uname -s)" == "Linux" ]; then
SETTINGS_FILE="$DATA_ROOT/sshd/settings.raw"
IS_MTOOLS_INSTALLED=$(which mtools >/dev/null && echo 1 || echo 0)
fi
}
function generateSettingsImage {
echo "Generating image with settings"
initSettingsVars
if [ "$(uname -s)" == "Darwin" ]; then
if [ -f "$SETTINGS_FILE" ]; then
rm "$SETTINGS_FILE"
fi
hdiutil create -size 100m -fs FAT32 -volname PDKSETTINGS "$SETTINGS_FILE"
elif [ "$(uname -s)" == "Linux" ]; then
dd if=/dev/zero of="$SETTINGS_FILE" bs=1M count=100
mkfs.vfat -F32 "$SETTINGS_FILE"
fatlabel "$SETTINGS_FILE" PDKSETTINGS
fi
}
function copySettingsIntoImage {
echo "Copying settings to image"
initSettingsVars
if [ "$(uname -s)" == "Darwin" ]; then
hdiutil attach "$SETTINGS_FILE"
cp "$CONFIG_ROOT/config.sh" "/Volumes/PDKSETTINGS/config.sh"
cp "$DATA_ROOT/sshd/id_rsa" "/Volumes/PDKSETTINGS/id_rsa"
cp "$DATA_ROOT/sshd/id_rsa.pub" "/Volumes/PDKSETTINGS/id_rsa.pub"
hdiutil detach "/Volumes/PDKSETTINGS"
elif [ "$(uname -s)" == "Linux" ]; then
# Snap: No contents required right now
if [ "$SNAP" != "" ]; then
return
fi
if [ "$IS_MTOOLS_INSTALLED" == "1" ]; then
echo "Using mtools to create a settings image"
mcopy -i "$SETTINGS_FILE" "$CONFIG_ROOT/config.sh" ::
mcopy -i "$SETTINGS_FILE" "$DATA_ROOT/sshd/id_rsa" ::
mcopy -i "$SETTINGS_FILE" "$DATA_ROOT/sshd/id_rsa.pub" ::
else
echo "Using sudo-based settings image generation..."
MNT_DIR=$(mktemp -d)
sudo mount "$SETTINGS_FILE" "$MNT_DIR"
sudo cp "$CONFIG_ROOT/config.sh" "$MNT_DIR/config.sh"
sudo cp "$DATA_ROOT/sshd/id_rsa" "$MNT_DIR/id_rsa"
sudo cp "$DATA_ROOT/sshd/id_rsa.pub" "$MNT_DIR/id_rsa.pub"
sudo umount "$MNT_DIR"
rm -rf "$MNT_DIR"
fi
fi
}
function startVirtiofsd {
# Return immediately in non-Snap environments
if [ -z "$SNAP" ]; then
return
fi
VIRTIOFS_SOCK="$SNAP_USER_DATA/$NAME-vhost-fs.sock"
$SNAP/usr/libexec/virtiofsd \
--socket-path="$VIRTIOFS_SOCK" \
-o source="$SRC_ROOT" \
-o allow_root \
-o allow_direct_io \
-o xattr \
-o writeback \
-o readdirplus \
-o posix_lock \
-o flock \
-f &
while [ ! -e "$VIRTIOFS_SOCK" ]; do
sleep 0.1
done
# shellcheck disable=SC2034 # Variable used externally by other scripts
VIRTIOFS_ACTIVE=1
}