[systemd-devel] Launch a mount unit from udev rule via ENV{SYSTEMD_WANTS}
Jacopo
fingolfin00 at gmail.com
Thu Feb 16 12:19:43 UTC 2023
Il giorno gio 16 feb 2023 alle ore 11:17 Lennart Poettering <
lennart at poettering.net> ha scritto:
> Matching against "add" is almost certainly wrong, as devices typically
> see "change" and other events throughout their early lifetime, and in
> that case any settings you make here would get very quickly lost.
>
> In almost all cases you want a check like ACTION!="remove" instead
> which matches all "positive" events and ignores the only negative
> event.
>
I updated my udev rule according to your suggestion, but I don't see a
different behaviour, still I'll adopt your recommendation in the future.
This is almost certainly an escaping issue. What's the precisely rule
> you are using? It's generally a good idea to start with the line that
> doesn't work, not the one that works.
>
Yes! That was a good point. Removed the minus sign (-) from the mount point
(/opt/data-ssd --> /opt/data) and now it works.
Is it a forbidden character in systemd mount points?
Working setup, which means the drive is mounted at boot and if I unplug and
then plug in the USB drive at runtime it gets automatically mounted.
- FS label:
$ e2label /dev/sda1
data
- udev rule:
ACTION!="remove", SUBSYSTEM=="block", KERNEL=="sd*", SUBSYSTEMS=="usb",
ENV{DEVTYPE}=="partition", IMPORT{builtin}="blkid",
ENV{ID_FS_TYPE}=="ext4", ENV{ID_FS_LABEL_ENC}=="data",
ENV{SYSTEMD_WANTS}+="opt-data.mount"
- fstab entry:
LABEL=data /opt/data ext4 defaults,nofail,users 0 2
Also working setup.
- FS label:
$ e2label /dev/sda1
data-ssd
- udev rule:
ACTION!="remove", SUBSYSTEM=="block", KERNEL=="sd*", SUBSYSTEMS=="usb",
ENV{DEVTYPE}=="partition", IMPORT{builtin}="blkid",
ENV{ID_FS_TYPE}=="ext4", ENV{ID_FS_LABEL_ENC}=="data-ssd",
ENV{SYSTEMD_WANTS}+="opt-data.mount
- fstab entry:
LABEL=data-ssd /opt/data ext4 defaults,nofail,users 0 2
But not working.
- FS label:
$ e2label /dev/sda1
data
- udev rule:
ACTION!="remove", SUBSYSTEM=="block", KERNEL=="sd*", SUBSYSTEMS=="usb",
ENV{DEVTYPE}=="partition", IMPORT{builtin}="blkid",
ENV{ID_FS_TYPE}=="ext4", ENV{ID_FS_LABEL_ENC}=="data",
ENV{SYSTEMD_WANTS}+="opt-data\x2dssd.mount"
- fstab entry:
LABEL=data /opt/data-ssd ext4 defaults,nofail,users 0 2
For the not working case udev rule I tested both
ENV{SYSTEMD_WANTS}+="opt-data-ssd.mount" and
ENV{SYSTEMD_WANTS}+="opt-data\x2dssd.mount", but no difference.
And I can print the generated mount unit only with the unicode minus sign
"\x2d" in the unit name:
$ sudo systemctl cat "opt-data\x2dssd.mount"
# /run/systemd/generator/opt-data\x2dssd.mount
# Automatically generated by systemd-fstab-generator
[Unit]
Documentation=man:fstab(5) man:systemd-fstab-generator(8)
SourcePath=/etc/fstab
Requires=systemd-fsck at dev-disk-by\x2dlabel-data.service
After=systemd-fsck at dev-disk-by\x2dlabel-data.service
After=blockdev at dev-disk-by\x2dlabel-data.target
[Mount]
What=/dev/disk/by-label/data
Where=/opt/data-ssd
Type=ext4
Options=defaults,nofail,users
While
$ sudo systemctl cat "opt-data-ssd.mount"
No files found for opt-data-ssd.mount.
> Also, 244 is ancient 4y old stuff. Consider updating.
>
Yes true, unfortunately I'm confined to systemd 244 in my application for
the time being, but I replicated the same configuration on my laptop
running systemd 252 (same SATA disk and adapter) and the behavior is
identical.
Thanks for your insight.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20230216/cfbd6285/attachment.htm>
More information about the systemd-devel
mailing list