Web lists-archives.com

Re: Help with udev trigger




	Hi.

On Fri, May 18, 2018 at 09:26:47AM +0100, Bhasker C V wrote:
> Hi,
> 
>  Version: buster
>  I do a manual cryptsetup to create my home directory after system boots up
>  I want to run fsck every time the device node is created from luks
> 
>  I added this udev rule
> 
> ACTION="change",DEVTYPE="disk",ID_FS_UUID="cf1b64cf-7a62-4a43-ad44-6c68f2bbdec5"
> RUN+="/bin/btrfsck /dev/mapper/home"
> 
> But this rule is not getting triggered. Could someone help please to
> point out what mistake I am doing ?

You have five mistakes here, actually:

1) udev rules use C-like syntax for comparison (==) and assingment (=).
Your rule tests nothing, it just assigns some values.

2) All udev 'attributes' have type, and you must specify it.
For instance DEVTYPE and ID_FS_UUID are ENVIRONMENT.

3) 'change' applies to changing device state. It's 'add' for device
creation.

4) RUN should go after a coma.

5) You're not supposed to spawn long-running processes from udev rules
directly. Utilize systemd.


Taking all this into the account, your rule should look like this (one
like, coma separated values):

ACTION=="add", ENV{DEVTYPE}=="disk",ENV{ID_FS_UUID}=="cf1b64cf-7a62-4a43-ad44-6c68f2bbdec5",RUN+="/bin/systemctl start my_brtfs_home_checking.service"

Your custom service file - like this:

[Service]
Type=oneshot
ExecStart=/bin/btrfsck /dev/mapper/home

Reco