50 lines
1.4 KiB
Bash
Executable file
50 lines
1.4 KiB
Bash
Executable file
#!/usr/bin/bash
|
|
|
|
set -eu
|
|
|
|
# if less than one arguments supplied, display usage
|
|
if [[ $# -ne 1 ]]; then
|
|
echo "This script takes as input the name of the VM " >&2
|
|
echo "Usage: $0 vm_name" >&2
|
|
exit 1
|
|
fi
|
|
|
|
VM_NAME="$1"
|
|
|
|
## Make sure VMs can read the base directory:
|
|
chgrp 1010 "/lmn/media/${SUDO_USER}"
|
|
chmod 0775 "/lmn/media/${SUDO_USER}"
|
|
|
|
socket="/run/user/$(id -u $SUDO_USER)/virtiofs-${VM_NAME}.sock"
|
|
|
|
# FIXME: This does not work. In windows, there is no virtiofs device.
|
|
# In GNU/Linux it's only readable.
|
|
#
|
|
#if ! systemctl -q is-active virtiofs-${VM_NAME}.socket ; then
|
|
# systemd-run --unit=virtiofs-${VM_NAME} \
|
|
# --slice=system-virtiofs \
|
|
# --collect \
|
|
# --socket-property=ListenStream="$socket" \
|
|
# --socket-property=Accept=no \
|
|
# --socket-property=SocketMode=0700 \
|
|
# --socket-property=SocketUser=${SUDO_USER} \
|
|
# --property=Type=exec \
|
|
# --property=StandardInput=socket \
|
|
# /usr/local/bin/virtiofsd --log-level debug --sandbox none \
|
|
# --syslog --fd=0 --shared-dir "/lmn/media/${SUDO_USER}"
|
|
#else
|
|
# systemctl restart virtiofs-${VM_NAME}.socket
|
|
#fi
|
|
|
|
if [[ ! -S "$socket" ]] ; then
|
|
systemd-run --unit=virtiofs-${VM_NAME} \
|
|
--slice=system-virtiofs \
|
|
--collect \
|
|
--property=Type=exec \
|
|
--property=SuccessExitStatus=1 \
|
|
--property="ExecStopPost=rm $socket" \
|
|
/usr/local/bin/virtiofsd --socket-path "$socket" \
|
|
--shared-dir "/lmn/media/${SUDO_USER}"
|
|
fi
|
|
sleep 1
|
|
chown "${SUDO_USER}" "$socket"
|