From 4e5134cd734e5fe3ad364a3480c8308302feca5e Mon Sep 17 00:00:00 2001 From: Joseph Coffland Date: Wed, 19 Feb 2020 15:57:39 -0800 Subject: [PATCH] Allow user to unmount/eject USB stick on local head. --- CHANGELOG.md | 3 +++ MANIFEST.in | 1 + package.json | 2 +- scripts/11-automount.rules | 9 +++++++++ scripts/install.sh | 36 ++++++++++++++++++++---------------- 5 files changed, 34 insertions(+), 17 deletions(-) create mode 100644 scripts/11-automount.rules diff --git a/CHANGELOG.md b/CHANGELOG.md index 690f78b..3321b20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ Buildbotics CNC Controller Firmware Changelog ============================================= +## v0.4.14 + - Allow user to unmount/eject USB stick on local head. + ## v0.4.13 - Support for OMRON MX2 VFD. - Better error handling in WiFi configuration. diff --git a/MANIFEST.in b/MANIFEST.in index 32d4570..6450ecf 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -7,5 +7,6 @@ include scripts/buildbotics.gc include scripts/xinitrc include scripts/rc.local include scripts/bbctrl.service +include scripts/11-automount.rules recursive-include src/py/camotics * global-exclude .gitignore diff --git a/package.json b/package.json index 2c79e85..6480bcc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bbctrl", - "version": "0.4.13", + "version": "0.4.14", "homepage": "http://buildbotics.com/", "repository": "https://github.com/buildbotics/bbctrl-firmware", "license": "GPL-3.0+", diff --git a/scripts/11-automount.rules b/scripts/11-automount.rules new file mode 100644 index 0000000..0f5d698 --- /dev/null +++ b/scripts/11-automount.rules @@ -0,0 +1,9 @@ +KERNEL!="sd[abc]|sd[abc][123]", GOTO="automount_end" +IMPORT{program}="/sbin/blkid -o udev -p %N" +ENV{ID_FS_TYPE}=="", GOTO="automount_end" +ENV{dir_name}="USB_DRIVE-%k" +ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", \ + RUN+="/bin/mount /dev/%k" +ACTION=="remove", RUN+="/bin/umount -l /dev/%k", \ + RUN+="/bin/rmdir /media/%E{dir_name}" +LABEL="automount_end" diff --git a/scripts/install.sh b/scripts/install.sh index a426cca..03f811e 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -68,24 +68,28 @@ sed -i 's/^XKBLAYOUT="gb"$/XKBLAYOUT="us" # Comment stops change on upgrade/' \ /etc/default/keyboard # Setup USB stick automount -if [ ! -e /etc/udev/rules.d/11-automount.rules ]; then - ( - echo 'KERNEL!="sd[a-z]*", GOTO="automount_end"' - echo 'IMPORT{program}="/sbin/blkid -o udev -p %N"' - echo 'ENV{ID_FS_TYPE}=="", GOTO="automount_end"' - echo 'ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"' - echo 'ENV{ID_FS_LABEL}=="", ENV{dir_name}="usb-%k"' - echo 'ACTION=="add", ENV{mount_options}="relatime"' - echo 'ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002,sync"' - echo 'ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"' - echo 'ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"' - echo 'LABEL="automount_end"' - ) > /etc/udev/rules.d/11-automount.rules - - sed -i 's/^\(MountFlags=slave\)/#\1/' /lib/systemd/system/systemd-udevd.service - REBOOT=true +diff ./scripts/11-automount.rules /etc/udev/rules.d/11-automount.rules \ + >/dev/null +if [ $? -ne 0 ]; then + cp ./scripts/11-automount.rules /etc/udev/rules.d/ + sed -i 's/^\(MountFlags=slave\)/#\1/' \ + /lib/systemd/system/systemd-udevd.service + REBOOT=true fi +for letter in a b c; do + for number in '' 1 2 3; do + DEV=sd$letter$number + MOUNT=/media/USB_DRIVE-$DEV + OPTIONS=defaults,utf8,gid=100,umask=002,sync,noauto,flush,users + + grep "/dev/$DEV[[:space:]]" /etc/fstab >/dev/null + if [ $? -ne 0 ]; then + echo "/dev/$DEV $MOUNT auto $OPTIONS 0 0" >> /etc/fstab + fi + done +done + # Increase swap grep 'CONF_SWAPSIZE=1000' /etc/dphys-swapfile >/dev/null if [ $? -ne 0 ]; then -- 2.27.0