mirror of
https://github.com/iiab/iiab.git
synced 2025-02-12 11:12:06 +00:00
Merge pull request #3929 from holta/usbmount-refine
usb_lib and usbmount refinements built on PR #3916
This commit is contained in:
commit
073939a542
16 changed files with 359 additions and 52 deletions
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.8 KiB |
17
roles/usb_lib/files/usbmount/copyright
Normal file
17
roles/usb_lib/files/usbmount/copyright
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
Format: http://dep.debian.net/deps/dep5/
|
||||||
|
Upstream-Name: usbmount
|
||||||
|
Upstream-Contact: Martin Dickopp <martin@zero-based.org>, Rogério Brito <rbrito@ime.usp.br>
|
||||||
|
Source: git://git.debian.org/usbmount/usbmount.git
|
||||||
|
|
||||||
|
Files: *
|
||||||
|
Copyright: 2004-2007, Martin Dickopp <martin@zero-based.org>
|
||||||
|
2008-2011, Rogério Brito <rbrito@ime.usp.br>
|
||||||
|
License: BSD-2
|
||||||
|
This package is free software; the copyright holder gives unlimited
|
||||||
|
permission to copy and/or distribute it, with or without
|
||||||
|
modifications, as long as this notice is preserved.
|
||||||
|
.
|
||||||
|
This package is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE.
|
212
roles/usb_lib/files/usbmount/usbmount
Normal file
212
roles/usb_lib/files/usbmount/usbmount
Normal file
|
@ -0,0 +1,212 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# This script mounts USB mass storage devices when they are plugged in
|
||||||
|
# and unmounts them when they are removed.
|
||||||
|
# Copyright © 2004, 2005 Martin Dickopp
|
||||||
|
# Copyright © 2008, 2009, 2010 Rogério Theodoro de Brito
|
||||||
|
# Copyright © 2025, Jerry Vonau
|
||||||
|
#
|
||||||
|
# This file is free software; the copyright holder gives unlimited
|
||||||
|
# permission to copy and/or distribute it, with or without
|
||||||
|
# modifications, as long as this notice is preserved.
|
||||||
|
#
|
||||||
|
# This file is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
# Add web link to copyright notice help in iiab on github
|
||||||
|
set -e
|
||||||
|
exec > /dev/null 2>&1
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
# Auxiliary functions
|
||||||
|
|
||||||
|
# Log a string via the syslog facility.
|
||||||
|
log()
|
||||||
|
{
|
||||||
|
if [ $1 != debug ] || expr "$VERBOSE" : "[yY]" > /dev/null; then
|
||||||
|
logger -p user.$1 -t "usbmount[$$]" -- "$2"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Test if the first parameter is in the list given by the second
|
||||||
|
# parameter.
|
||||||
|
in_list()
|
||||||
|
{
|
||||||
|
for v in $2; do
|
||||||
|
[ "$1" != "$v" ] || return 0
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
# Main program
|
||||||
|
|
||||||
|
# Default values for configuration variables.
|
||||||
|
ENABLED=1
|
||||||
|
MOUNTPOINTS=
|
||||||
|
FILESYSTEMS=
|
||||||
|
MOUNTOPTIONS=
|
||||||
|
FS_MOUNTOPTIONS=
|
||||||
|
VERBOSE=no
|
||||||
|
|
||||||
|
if [ -r /etc/usbmount/usbmount.conf ]; then
|
||||||
|
. /etc/usbmount/usbmount.conf
|
||||||
|
log debug "loaded usbmount configurations"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${ENABLED:-1}" -eq 0 ]; then
|
||||||
|
log info "usbmount is disabled, see /etc/usbmount/usbmount.conf"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -x /sbin/blkid ]; then
|
||||||
|
log err "cannot execute /sbin/blkid"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = add ]; then
|
||||||
|
|
||||||
|
# Per Policy 9.3.2, directories under /var/run have to be created
|
||||||
|
# after every reboot.
|
||||||
|
if [ ! -e /var/run/usbmount ]; then
|
||||||
|
mkdir -p /var/run/usbmount
|
||||||
|
log debug "creating /var/run/usbmount directory"
|
||||||
|
else
|
||||||
|
log debug "/var/run/usbmount exists"
|
||||||
|
fi
|
||||||
|
|
||||||
|
umask 022
|
||||||
|
|
||||||
|
# Acquire lock.
|
||||||
|
log debug "trying to acquire lock /var/run/usbmount/.mount.lock"
|
||||||
|
lockfile-create --retry 6 /var/run/usbmount/.mount || \
|
||||||
|
{ log err "cannot acquire lock /var/run/usbmount/.mount.lock"; exit 1; }
|
||||||
|
trap '( lockfile-remove /var/run/usbmount/.mount )' 0
|
||||||
|
log debug "acquired lock /var/run/usbmount/.mount.lock"
|
||||||
|
|
||||||
|
# Grab device information from device and "divide it"
|
||||||
|
# FIXME: improvement: implement mounting by label (notice that labels
|
||||||
|
# can contain spaces, which makes things a little bit less comfortable).
|
||||||
|
DEVINFO=$(/sbin/blkid -p $DEVNAME)
|
||||||
|
FSTYPE=$(echo "$DEVINFO" | sed 's/.*[[:blank:]]TYPE="\([^"]*\)".*/\1/g; s/[[:blank:]]*//g;')
|
||||||
|
UUID=$(echo "$DEVINFO" | sed 's/.*[[:blank:]]UUID="\([^"]*\)".*/\1/g; s/[[:blank:]]*//g;')
|
||||||
|
USAGE=$(echo "$DEVINFO" | sed 's/.*[[:blank:]]USAGE="\([^"]*\)".*/\1/g; s/[[:blank:]]*//g;')
|
||||||
|
|
||||||
|
if ! echo $USAGE | egrep -q "(filesystem|disklabel)"; then
|
||||||
|
log info "$DEVNAME does not contain a filesystem or disklabel"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Try to use specifications in /etc/fstab first.
|
||||||
|
if egrep -q "^[[:blank:]]*$DEVNAME" /etc/fstab; then
|
||||||
|
log info "executing command: mount $DEVNAME"
|
||||||
|
mount $DEVNAME || log err "mount by DEVNAME with $DEVNAME wasn't successful; return code $?"
|
||||||
|
|
||||||
|
elif grep -q "^[[:blank:]]*UUID=$UUID" /etc/fstab; then
|
||||||
|
log info "executing command: mount -U $UUID"
|
||||||
|
mount -U $UUID || log err "mount by UUID with $UUID wasn't successful; return code $?"
|
||||||
|
|
||||||
|
else
|
||||||
|
log debug "$DEVNAME contains filesystem type $FSTYPE"
|
||||||
|
|
||||||
|
fstype=$FSTYPE
|
||||||
|
# Test if the filesystem type is in the list of filesystem
|
||||||
|
# types to mount.
|
||||||
|
if in_list "$fstype" "$FILESYSTEMS"; then
|
||||||
|
# Search an available mountpoint.
|
||||||
|
for v in $MOUNTPOINTS; do
|
||||||
|
if [ -d "$v" ] && ! grep -q "^[^ ][^ ]* *$v " /proc/mounts; then
|
||||||
|
mountpoint="$v"
|
||||||
|
log debug "mountpoint $mountpoint is available for $DEVNAME"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ -n "$mountpoint" ]; then
|
||||||
|
# Determine mount options.
|
||||||
|
options=
|
||||||
|
for v in $FS_MOUNTOPTIONS; do
|
||||||
|
if expr "$v" : "-fstype=$fstype,."; then
|
||||||
|
options="$(echo "$v" | sed 's/^[^,]*,//')"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ -n "$MOUNTOPTIONS" ]; then
|
||||||
|
options="$MOUNTOPTIONS${options:+,$options}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Mount the filesystem.
|
||||||
|
log info "executing command: mount -t$fstype ${options:+-o$options} $DEVNAME $mountpoint"
|
||||||
|
mount "-t$fstype" "${options:+-o$options}" "$DEVNAME" "$mountpoint"
|
||||||
|
|
||||||
|
# Determine vendor and model.
|
||||||
|
vendor=
|
||||||
|
if [ -r "/sys$DEVPATH/device/vendor" ]; then
|
||||||
|
vendor="`cat \"/sys$DEVPATH/device/vendor\"`"
|
||||||
|
elif [ -r "/sys$DEVPATH/../device/vendor" ]; then
|
||||||
|
vendor="`cat \"/sys$DEVPATH/../device/vendor\"`"
|
||||||
|
elif [ -r "/sys$DEVPATH/device/../manufacturer" ]; then
|
||||||
|
vendor="`cat \"/sys$DEVPATH/device/../manufacturer\"`"
|
||||||
|
elif [ -r "/sys$DEVPATH/../device/../manufacturer" ]; then
|
||||||
|
vendor="`cat \"/sys$DEVPATH/../device/../manufacturer\"`"
|
||||||
|
fi
|
||||||
|
vendor="$(echo "$vendor" | sed 's/^[[:blank:]]\+//; s/[[:blank:]]\+$//')"
|
||||||
|
|
||||||
|
model=
|
||||||
|
if [ -r "/sys$DEVPATH/device/model" ]; then
|
||||||
|
model="`cat \"/sys$DEVPATH/device/model\"`"
|
||||||
|
elif [ -r "/sys$DEVPATH/../device/model" ]; then
|
||||||
|
model="`cat \"/sys$DEVPATH/../device/model\"`"
|
||||||
|
elif [ -r "/sys$DEVPATH/device/../product" ]; then
|
||||||
|
model="`cat \"/sys$DEVPATH/device/../product\"`"
|
||||||
|
elif [ -r "/sys$DEVPATH/../device/../product" ]; then
|
||||||
|
model="`cat \"/sys$DEVPATH/../device/../product\"`"
|
||||||
|
fi
|
||||||
|
model="$(echo "$model" | sed 's/^[[:blank:]]\+//; s/[[:blank:]]\+$//')"
|
||||||
|
|
||||||
|
# Run hook scripts; ignore errors.
|
||||||
|
export UM_DEVICE="$DEVNAME"
|
||||||
|
export UM_MOUNTPOINT="$mountpoint"
|
||||||
|
export UM_FILESYSTEM="$fstype"
|
||||||
|
export UM_MOUNTOPTIONS="$options"
|
||||||
|
export UM_VENDOR="$vendor"
|
||||||
|
export UM_MODEL="$model"
|
||||||
|
log info "executing command: run-parts /etc/usbmount/mount.d"
|
||||||
|
run-parts /etc/usbmount/mount.d || :
|
||||||
|
else
|
||||||
|
# No suitable mount point found.
|
||||||
|
log warning "no mountpoint found for $DEVNAME"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
elif [ "$1" = remove ]; then
|
||||||
|
|
||||||
|
# A block or partition device has been removed.
|
||||||
|
# Test if it is mounted.
|
||||||
|
while read device mountpoint fstype remainder; do
|
||||||
|
if [ "$DEVNAME" = "$device" ]; then
|
||||||
|
# If the mountpoint and filesystem type are maintained by
|
||||||
|
# this script, unmount the filesystem.
|
||||||
|
if in_list "$mountpoint" "$MOUNTPOINTS" &&
|
||||||
|
in_list "$fstype" "$FILESYSTEMS"; then
|
||||||
|
log info "executing command: umount -l $mountpoint"
|
||||||
|
umount -l "$mountpoint"
|
||||||
|
|
||||||
|
# Run hook scripts; ignore errors.
|
||||||
|
export UM_DEVICE="$DEVNAME"
|
||||||
|
export UM_MOUNTPOINT="$mountpoint"
|
||||||
|
export UM_FILESYSTEM="$fstype"
|
||||||
|
log info "executing command: run-parts /etc/usbmount/umount.d"
|
||||||
|
run-parts /etc/usbmount/umount.d || :
|
||||||
|
fi
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done < /proc/mounts
|
||||||
|
else
|
||||||
|
log err "unexpected: action '$1'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log debug "usbmount execution finished"
|
53
roles/usb_lib/files/usbmount/usbmount.conf
Normal file
53
roles/usb_lib/files/usbmount/usbmount.conf
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
# Configuration file for the usbmount package, which mounts removable
|
||||||
|
# storage devices when they are plugged in and unmounts them when they
|
||||||
|
# are removed.
|
||||||
|
|
||||||
|
# Change to zero to disable usbmount
|
||||||
|
ENABLED=1
|
||||||
|
|
||||||
|
# Mountpoints: These directories are eligible as mointpoints for
|
||||||
|
# removable storage devices. A newly plugged in device is mounted on
|
||||||
|
# the first directory in this list that exists and on which nothing is
|
||||||
|
# mounted yet.
|
||||||
|
MOUNTPOINTS="/media/usb0 /media/usb1 /media/usb2 /media/usb3
|
||||||
|
/media/usb4 /media/usb5 /media/usb6 /media/usb7"
|
||||||
|
|
||||||
|
# Filesystem types: removable storage devices are only mounted if they
|
||||||
|
# contain a filesystem type which is in this list.
|
||||||
|
FILESYSTEMS="vfat ext2 ext3 ext4 hfsplus exfat fuseblk ntfs"
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
# WARNING! #
|
||||||
|
# #
|
||||||
|
# The "sync" option may not be a good choice to use with flash drives, as #
|
||||||
|
# it forces a greater amount of writing operating on the drive. This makes #
|
||||||
|
# the writing speed considerably lower and also leads to a faster wear out #
|
||||||
|
# of the disk. #
|
||||||
|
# #
|
||||||
|
# If you omit it, don't forget to use the command "sync" to synchronize the #
|
||||||
|
# data on your disk before removing the drive or you may experience data #
|
||||||
|
# loss. #
|
||||||
|
# #
|
||||||
|
# It is highly recommended that you use the pumount command (as a regular #
|
||||||
|
# user) before unplugging the device. It makes calling the "sync" command #
|
||||||
|
# and mounting with the sync option unnecessary---this is similar to other #
|
||||||
|
# operating system's "safely disconnect the device" option. #
|
||||||
|
#############################################################################
|
||||||
|
# Mount options: Options passed to the mount command with the -o flag.
|
||||||
|
# See the warning above regarding removing "sync" from the options.
|
||||||
|
MOUNTOPTIONS="sync,noexec,nodev,noatime,nodiratime"
|
||||||
|
|
||||||
|
# Filesystem type specific mount options: This variable contains a space
|
||||||
|
# separated list of strings, each which the form "-fstype=TYPE,OPTIONS".
|
||||||
|
#
|
||||||
|
# If a filesystem with a type listed here is mounted, the corresponding
|
||||||
|
# options are appended to those specificed in the MOUNTOPTIONS variable.
|
||||||
|
#
|
||||||
|
# For example, "-fstype=vfat,gid=floppy,dmask=0007,fmask=0117" would add
|
||||||
|
# the options "gid=floppy,dmask=0007,fmask=0117" when a vfat filesystem
|
||||||
|
# is mounted.
|
||||||
|
FS_MOUNTOPTIONS=""
|
||||||
|
|
||||||
|
# If set to "yes", more information will be logged via the syslog
|
||||||
|
# facility.
|
||||||
|
VERBOSE=yes
|
|
@ -47,27 +47,53 @@
|
||||||
when: udev_unit.stat.exists is defined and udev_unit.stat.exists
|
when: udev_unit.stat.exists is defined and udev_unit.stat.exists
|
||||||
|
|
||||||
# http://raspbian.raspberrypi.org/raspbian/pool/main/u/usbmount/usbmount_0.0.22_all.deb
|
# http://raspbian.raspberrypi.org/raspbian/pool/main/u/usbmount/usbmount_0.0.22_all.deb
|
||||||
- name: Install {{ iiab_download_url }}/usbmount_0.0.22_all.deb, no longer supported by {RasPiOS, Debian, Ubuntu}
|
#- name: Install {{ iiab_download_url }}/usbmount_0.0.22_all.deb, no longer supported by {RasPiOS, Debian, Ubuntu}
|
||||||
apt:
|
# apt:
|
||||||
deb: "{{ iiab_download_url }}/usbmount_0.0.22_all.deb"
|
# deb: "{{ iiab_download_url }}/usbmount_0.0.22_all.deb"
|
||||||
# when: is_debian
|
# # when: is_debian
|
||||||
|
|
||||||
# check status of usbmount on mintlinux - should be ok Ubuntu variant
|
- name: Install lockfile-progs and util-linux for usbmount from OS repo
|
||||||
# - name: Install usbmount from OS repo for Ubuntu variants
|
package:
|
||||||
# package:
|
name:
|
||||||
# name: usbmount
|
- lockfile-progs
|
||||||
# state: present
|
- util-linux
|
||||||
# when: is_ubuntu
|
state: present
|
||||||
|
|
||||||
- name: Add dir {{ doc_root }}/local_content, where USB drive links can appear (0775)
|
- name: Add dir {{ doc_root }}/local_content, where USB drive links can appear (0775) owned by {{ apache_user }}:{{ apache_user }}
|
||||||
file:
|
file:
|
||||||
state: directory
|
state: directory
|
||||||
path: "{{ doc_root }}/local_content"
|
path: "{{ doc_root }}/local_content" # /library/www/html
|
||||||
owner: "{{ apache_user }}"
|
owner: "{{ apache_user }}" # www-data
|
||||||
group: "{{ apache_user }}" # 2020-02-13: changed from iiab_admin_user, after discussion on weekly call (#1228, #2222)
|
group: "{{ apache_user }}" # 2020-02-13: changed from iiab_admin_user, after discussion on weekly call (#1228, #2222)
|
||||||
mode: 0775
|
mode: 0775
|
||||||
|
|
||||||
- name: 'Install from template: /etc/udev/rules.d/usbmount.rules, /etc/systemd/system/usbmount@.service, /usr/sbin/iiab-clean-usb.sh'
|
- name: Set up dirs /etc/usbmount/mount.d, /etc/usbmount/umount.d, /media/usb0-7
|
||||||
|
file:
|
||||||
|
state: directory
|
||||||
|
path: "{{ item }}"
|
||||||
|
mode: 0755
|
||||||
|
with_items:
|
||||||
|
- /etc/usbmount/mount.d
|
||||||
|
- /etc/usbmount/umount.d
|
||||||
|
- /media/usb0
|
||||||
|
- /media/usb1
|
||||||
|
- /media/usb2
|
||||||
|
- /media/usb3
|
||||||
|
- /media/usb4
|
||||||
|
- /media/usb5
|
||||||
|
- /media/usb6
|
||||||
|
- /media/usb7
|
||||||
|
|
||||||
|
- name: Copy files from files/usbmount to filesystem
|
||||||
|
copy:
|
||||||
|
src: "{{ item.src }}"
|
||||||
|
dest: "{{ item.dest }}"
|
||||||
|
mode: "{{ item.mode }}"
|
||||||
|
with_items:
|
||||||
|
- { src: 'usbmount/usbmount.conf', dest: '/etc/usbmount/', mode: '0644' }
|
||||||
|
- { src: 'usbmount/usbmount', dest: '/usr/local/sbin/', mode: '0755' }
|
||||||
|
|
||||||
|
- name: 'Install from template: /etc/udev/rules.d/usbmount.rules, /etc/systemd/system/usbmount@.service, /usr/local/sbin/iiab-clean-usb.sh'
|
||||||
template:
|
template:
|
||||||
src: "{{ item.src }}"
|
src: "{{ item.src }}"
|
||||||
dest: "{{ item.dest }}"
|
dest: "{{ item.dest }}"
|
||||||
|
@ -75,36 +101,36 @@
|
||||||
with_items:
|
with_items:
|
||||||
- { src: 'usbmount.rules.j2', dest: '/etc/udev/rules.d/usbmount.rules', mode: '0644' }
|
- { src: 'usbmount.rules.j2', dest: '/etc/udev/rules.d/usbmount.rules', mode: '0644' }
|
||||||
- { src: 'usbmount@.service.j2', dest: '/etc/systemd/system/usbmount@.service', mode: '0644' }
|
- { src: 'usbmount@.service.j2', dest: '/etc/systemd/system/usbmount@.service', mode: '0644' }
|
||||||
- { src: 'iiab-clean-usb.sh', dest: '/usr/sbin/', mode: '0755' }
|
- { src: 'iiab-clean-usb.sh', dest: '/usr/local/sbin/', mode: '0755' }
|
||||||
|
|
||||||
- name: '2025-01-05: Add upload2usb app (#3875) directory to doc_root'
|
- name: Add dir {{ doc_root }}/upload2usb (0775) owned by {{ apache_user }}:{{ apache_user }}
|
||||||
file:
|
file:
|
||||||
state: directory
|
state: directory
|
||||||
path: "{{ doc_root }}/upload2usb"
|
path: "{{ doc_root }}/upload2usb"
|
||||||
owner: "{{ apache_user }}"
|
owner: "{{ apache_user }}"
|
||||||
group: "{{ apache_user }}"
|
group: "{{ apache_user }}"
|
||||||
mode: 0755
|
mode: 0755
|
||||||
|
|
||||||
- name: '2025-01-05: Copy upload2usb app (#3875) files from files/upload/ into {{ doc_root }}/upload2usb/'
|
- name: Copy files from files/upload2usb/ into {{ doc_root }}/upload2usb/
|
||||||
copy:
|
copy:
|
||||||
src: "{{ item }}"
|
src: "{{ item }}"
|
||||||
dest: "{{ doc_root }}/upload2usb/" # /library/www/html
|
dest: "{{ doc_root }}/upload2usb/"
|
||||||
with_fileglob:
|
with_fileglob:
|
||||||
- upload/*
|
- upload2usb/*
|
||||||
|
|
||||||
# 2021-03-21: If usbmount is repackaged by apt as a result of Linux kernel 5.4+
|
# 2021-03-21: If usbmount is repackaged by apt as a result of Linux kernel 5.4+
|
||||||
# supporting exFAT, the stanza below (might) in future no longer be needed...
|
# supporting exFAT, the stanza below (might) in future no longer be needed...
|
||||||
# SEE ALSO: https://github.com/iiab/iiab/blob/586bfc5cb1abf6b4333a21d3fa89695f115432dc/roles/2-common/tasks/packages.yml#L11-L12
|
# SEE ALSO: https://github.com/iiab/iiab/blob/586bfc5cb1abf6b4333a21d3fa89695f115432dc/roles/2-common/tasks/packages.yml#L11-L12
|
||||||
- name: Add ' exfat fuseblk ntfs' to FILESYSTEMS var in /etc/usbmount/usbmount.conf
|
#- name: Add ' exfat fuseblk ntfs' to FILESYSTEMS var in /etc/usbmount/usbmount.conf
|
||||||
lineinfile:
|
# lineinfile:
|
||||||
regexp: '^FILESYSTEMS=.*'
|
# regexp: '^FILESYSTEMS=.*'
|
||||||
line: 'FILESYSTEMS="vfat ext2 ext3 ext4 hfsplus exfat fuseblk ntfs"'
|
# line: 'FILESYSTEMS="vfat ext2 ext3 ext4 hfsplus exfat fuseblk ntfs"'
|
||||||
path: /etc/usbmount/usbmount.conf
|
# path: /etc/usbmount/usbmount.conf
|
||||||
|
|
||||||
- name: Remove /etc/usbmount/mount.d/00_create_model_symlink
|
#- name: Remove /etc/usbmount/mount.d/00_create_model_symlink
|
||||||
file:
|
# file:
|
||||||
path: /etc/usbmount/mount.d/00_create_model_symlink
|
# path: /etc/usbmount/mount.d/00_create_model_symlink
|
||||||
state: absent
|
# state: absent
|
||||||
|
|
||||||
|
|
||||||
# RECORD 'USB_LIB' AS INSTALLED
|
# RECORD 'USB_LIB' AS INSTALLED
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Remove symlink in /library/content to automounted usb drive
|
# Remove symlink in /library/www/html/local_content to automounted USB drive
|
||||||
#
|
|
||||||
DEVICE=$(echo $@ | sed -s 's|-|/|')
|
DEVICE="/$(echo $1 | sed 's|-|/|')"
|
||||||
MNT_POINT=$(findmnt -n /$DEVICE | awk '{print $1}')
|
MNT_POINT=$(findmnt -no target $DEVICE)
|
||||||
CONTENT_LINK_USB=$(basename $MNT_POINT | awk '{print toupper($0)}')
|
CONTENT_LINK_USB=$(basename $MNT_POINT | awk '{print toupper($0)}')
|
||||||
CONTENT_LINK="/library/www/html/local_content/$CONTENT_LINK_USB"
|
CONTENT_LINK="/library/www/html/local_content/$CONTENT_LINK_USB"
|
||||||
logger -p user.notice -t "usb_lib (iiab-clean-usb.sh)" -- "Attempting to remove link $CONTENT_LINK."
|
|
||||||
|
logger -t "usb_lib (iiab-clean-usb.sh)" "Attempting to remove symlink $CONTENT_LINK, as auto-created earlier by usbmount."
|
||||||
|
|
||||||
if [ -L $CONTENT_LINK ]; then
|
if [ -L $CONTENT_LINK ]; then
|
||||||
/bin/rm $CONTENT_LINK
|
/usr/bin/rm $CONTENT_LINK
|
||||||
logger -p user.notice -t "usb_lib (iiab-clean-usb.sh)" -- "$CONTENT_LINK removed."
|
logger -t "usb_lib (iiab-clean-usb.sh)" "Symlink $CONTENT_LINK removed, as auto-created earlier by usbmount."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -30,16 +30,16 @@ logger -t "usb_lib (70-usb-library)" "BOOT_DEV is: $BOOT_DEV"
|
||||||
logger -t "usb_lib (70-usb-library)" "BOOTFW_DEV is: $BOOTFW_DEV"
|
logger -t "usb_lib (70-usb-library)" "BOOTFW_DEV is: $BOOTFW_DEV"
|
||||||
|
|
||||||
if [ "$UM_DEV" == "$LIB_DEV" ]; then
|
if [ "$UM_DEV" == "$LIB_DEV" ]; then
|
||||||
logger -p user.notice -t "usb_lib (70-usb-library)" -- "Skipping $UM_MOUNTPOINT containing /library"
|
logger -t "usb_lib (70-usb-library)" "Skipping $UM_MOUNTPOINT containing /library"
|
||||||
exit
|
exit
|
||||||
elif [ "$UM_DEV" == "$ROOT_DEV" ]; then
|
elif [ "$UM_DEV" == "$ROOT_DEV" ]; then
|
||||||
logger -p user.notice -t "usb_lib (70-usb-library)" -- "Skipping $UM_MOUNTPOINT containing rootfs"
|
logger -t "usb_lib (70-usb-library)" "Skipping $UM_MOUNTPOINT containing rootfs"
|
||||||
exit
|
exit
|
||||||
elif [ "$UM_DEV" == "$BOOT_DEV" ]; then
|
elif [ "$UM_DEV" == "$BOOT_DEV" ]; then
|
||||||
logger -p user.notice -t "usb_lib (70-usb-library)" -- "Skipping $UM_MOUNTPOINT containing /boot"
|
logger -t "usb_lib (70-usb-library)" "Skipping $UM_MOUNTPOINT containing /boot"
|
||||||
exit
|
exit
|
||||||
elif [ "$UM_DEV" == "$BOOTFW_DEV" ]; then
|
elif [ "$UM_DEV" == "$BOOTFW_DEV" ]; then
|
||||||
logger -p user.notice -t "usb_lib (70-usb-library)" -- "Skipping $UM_MOUNTPOINT containing /boot/firmware"
|
logger -t "usb_lib (70-usb-library)" "Skipping $UM_MOUNTPOINT containing /boot/firmware"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -48,13 +48,13 @@ fi
|
||||||
# "public artwork" — as summarized here: https://github.com/iiab/iiab/blob/master/roles/usb_lib/README.rst
|
# "public artwork" — as summarized here: https://github.com/iiab/iiab/blob/master/roles/usb_lib/README.rst
|
||||||
if [ -d $UM_MOUNTPOINT/PUBLIC ]; then
|
if [ -d $UM_MOUNTPOINT/PUBLIC ]; then
|
||||||
SHARE_DIR=$UM_MOUNTPOINT/PUBLIC
|
SHARE_DIR=$UM_MOUNTPOINT/PUBLIC
|
||||||
logger -p user.notice -t "usb_lib (70-usb-library)" -- "Found /PUBLIC on $UM_MOUNTPOINT"
|
logger -t "usb_lib (70-usb-library)" "Found /PUBLIC on $UM_MOUNTPOINT"
|
||||||
else
|
else
|
||||||
SHARE_DIR=$UM_MOUNTPOINT
|
SHARE_DIR=$UM_MOUNTPOINT
|
||||||
logger -p user.notice -t "usb_lib (70-usb-library)" -- "Did not find /PUBLIC on $UM_MOUNTPOINT"
|
logger -t "usb_lib (70-usb-library)" "Did not find /PUBLIC on $UM_MOUNTPOINT"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CONTENT_LINK_USB=$(basename $UM_MOUNTPOINT | awk '{print toupper($0)}')
|
CONTENT_LINK_USB=$(basename $UM_MOUNTPOINT | awk '{print toupper($0)}')
|
||||||
CONTENT_LINK="{{ doc_root }}/local_content/$CONTENT_LINK_USB"
|
CONTENT_LINK="{{ doc_root }}/local_content/$CONTENT_LINK_USB"
|
||||||
logger -p user.notice -t "usb_lib (70-usb-library)" -- "Creating link from $CONTENT_LINK to $SHARE_DIR"
|
logger -t "usb_lib (70-usb-library)" "Creating link from $CONTENT_LINK to $SHARE_DIR"
|
||||||
ln -s $SHARE_DIR $CONTENT_LINK
|
ln -sf $SHARE_DIR $CONTENT_LINK
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
KERNEL=="sd*", DRIVERS=="sbp2", ACTION=="add", PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
|
ACTION=="add", SUBSYSTEMS=="usb", SUBSYSTEM=="block", ENV{ID_FS_USAGE}=="filesystem" PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
|
||||||
KERNEL=="sd*", SUBSYSTEMS=="usb", ACTION=="add", PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
|
ACTION=="remove", SUBSYSTEMS=="usb", SUBSYSTEM=="block", ENV{ID_FS_USAGE}=="filesystem" PROGRAM="/bin/systemd-escape -p /usr/share/usbmount/usbmount remove"
|
||||||
KERNEL=="ub*", SUBSYSTEMS=="usb", ACTION=="add", PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
|
|
||||||
KERNEL=="sd*", SUBSYSTEMS=="usb", ACTION=="remove", PROGRAM="/usr/share/usbmount/usbmount remove"
|
|
||||||
|
|
||||||
|
|
|
@ -2,13 +2,14 @@
|
||||||
BindTo=%i.device
|
BindTo=%i.device
|
||||||
After=%i.device
|
After=%i.device
|
||||||
After=systemd-udev-trigger.service
|
After=systemd-udev-trigger.service
|
||||||
|
ConditionPathExists=/var/run
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
#Type=oneshot
|
#Type=oneshot
|
||||||
TimeoutStartSec=0
|
TimeoutStartSec=0
|
||||||
Environment=DEVNAME=%I
|
Environment=DEVNAME=%I
|
||||||
ExecStart=/usr/share/usbmount/usbmount add
|
ExecStart=/usr/local/sbin/usbmount add
|
||||||
ExecStop=/usr/sbin/iiab-clean-usb.sh %I
|
ExecStop=/usr/local/sbin/iiab-clean-usb.sh %I
|
||||||
ExecStopPost=/bin/umount /%I
|
ExecStopPost=/bin/umount /%I
|
||||||
RemainAfterExit=yes
|
RemainAfterExit=yes
|
||||||
|
RuntimeDirectory=usbmount
|
||||||
|
|
Loading…
Reference in a new issue