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