Allow user to unmount/eject USB stick on local head.
authorJoseph Coffland <joseph@cauldrondevelopment.com>
Wed, 19 Feb 2020 23:57:39 +0000 (15:57 -0800)
committerJoseph Coffland <joseph@cauldrondevelopment.com>
Fri, 21 Feb 2020 00:04:40 +0000 (16:04 -0800)
CHANGELOG.md
MANIFEST.in
package.json
scripts/11-automount.rules [new file with mode: 0644]
scripts/install.sh

index 690f78bc300823767a2fefbb0e7f6602b8b3e05b..3321b20a1aa70cf134012feb3e33df1e45923b1b 100644 (file)
@@ -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.
index 32d4570bb6ceb4c1466dca6d6b054379dd0fdfef..6450ecf53c8eec3af4ef754c214fc3fd97d5312c 100644 (file)
@@ -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
index 2c79e85cfea358e62c9f46fbe82159ab28f3d074..6480bcc7d90ed5cdf8b333baa3e2a36d05e32e2d 100644 (file)
@@ -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 (file)
index 0000000..0f5d698
--- /dev/null
@@ -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"
index a426ccaa64634e8c2c3797137523af7f99dbb3b3..03f811eec75ea9a043289c3ffe928ef64bb571e1 100755 (executable)
@@ -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