From c97ef6bc30ab0458693e4f8953901418c02af4a4 Mon Sep 17 00:00:00 2001
From: Denis Pynkin <denis.pynkin@collabora.com>
Date: Thu, 13 Dec 2018 01:45:06 +0300
Subject: [PATCH] Add automatic mount of USB devices for minimal images

Minimal images have no automatic mounts of mass storage devices.
Allow to mount USB storage devices automatically in R/O mode to
prevent accidental corruption of filesystem on device.

This feature is needed for mass storage upgrades.

Signed-off-by: Denis Pynkin <denis.pynkin@collabora.com>
---
 apertis-ospack-minimal.yaml                            |  4 ++++
 .../etc/udev/rules.d/99-udisks2.rules                  |  4 ++++
 .../system/default.target.wants/usbmount@.service      |  1 +
 .../lib/systemd/system/usbmount@.service               | 10 ++++++++++
 4 files changed, 19 insertions(+)
 create mode 100644 overlays/minimal-automount-rules/etc/udev/rules.d/99-udisks2.rules
 create mode 120000 overlays/minimal-automount-rules/lib/systemd/system/default.target.wants/usbmount@.service
 create mode 100644 overlays/minimal-automount-rules/lib/systemd/system/usbmount@.service

diff --git a/apertis-ospack-minimal.yaml b/apertis-ospack-minimal.yaml
index 6954500..fac28a3 100644
--- a/apertis-ospack-minimal.yaml
+++ b/apertis-ospack-minimal.yaml
@@ -37,6 +37,7 @@ actions:
       - apt-transport-https
       - apertis-customizations
       - initramfs-tools
+      - udisks2
 
   - action: apt
     description: "Base packages"
@@ -100,6 +101,9 @@ actions:
   - action: overlay
     source: overlays/minimal-ribchester-polkit-rules
 
+  - action: overlay
+    source: overlays/minimal-automount-rules
+
   - action: run
     chroot: true
     script: scripts/add-xdg-user-metadata.sh
diff --git a/overlays/minimal-automount-rules/etc/udev/rules.d/99-udisks2.rules b/overlays/minimal-automount-rules/etc/udev/rules.d/99-udisks2.rules
new file mode 100644
index 0000000..2a1035b
--- /dev/null
+++ b/overlays/minimal-automount-rules/etc/udev/rules.d/99-udisks2.rules
@@ -0,0 +1,4 @@
+ENV{ID_FS_USAGE}=="filesystem", ENV{UDISKS_FILESYSTEM_SHARED}="1"
+
+KERNEL=="sd*", SUBSYSTEMS=="usb", ACTION=="add", ATTR{partition}=="1", PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
+KERNEL=="sd*", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/usr/bin/udisksctl unmount -f -b $env{DEVNAME}"
diff --git a/overlays/minimal-automount-rules/lib/systemd/system/default.target.wants/usbmount@.service b/overlays/minimal-automount-rules/lib/systemd/system/default.target.wants/usbmount@.service
new file mode 120000
index 0000000..e60fd0d
--- /dev/null
+++ b/overlays/minimal-automount-rules/lib/systemd/system/default.target.wants/usbmount@.service
@@ -0,0 +1 @@
+../usbmount@.service
\ No newline at end of file
diff --git a/overlays/minimal-automount-rules/lib/systemd/system/usbmount@.service b/overlays/minimal-automount-rules/lib/systemd/system/usbmount@.service
new file mode 100644
index 0000000..b9c9a3f
--- /dev/null
+++ b/overlays/minimal-automount-rules/lib/systemd/system/usbmount@.service
@@ -0,0 +1,10 @@
+[Unit]
+BindTo=%i.device
+After=%i.device
+
+[Service]
+Type=oneshot
+TimeoutStartSec=0
+ExecStart=/usr/bin/udisksctl mount -o ro -b /%I 
+RemainAfterExit=yes
+StandardOutput=syslog
-- 
GitLab