grml-udev-config.grml-forensic: also react to block device *changes*
authorMichael Prokop <mika@grml.org>
Fri, 26 Jun 2020 17:07:31 +0000 (19:07 +0200)
committerMichael Prokop <mika@grml.org>
Fri, 10 Jul 2020 07:57:55 +0000 (09:57 +0200)
When executing `partprobe /dev/sda`, then partitions are
changed, removed and added again, while DISK_RO=0 is set
on the main block device (/dev/sda):

| % sudo udevadm monitor --property > udev-info
| % grep -e KERNEL -e DISK_RO udev-info
| KERNEL - the kernel uevent
| KERNEL[7033.955480] change   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda1 (block)
| KERNEL[7033.958758] change   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda2 (block)
| KERNEL[7033.963743] change   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda3 (block)
| KERNEL[7033.971321] change   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda (block)
| KERNEL[7033.971569] change   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda1 (block)
| KERNEL[7033.971745] change   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda2 (block)
| KERNEL[7033.971918] change   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda3 (block)
| KERNEL[7034.002552] change   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda (block)
| KERNEL[7034.004249] change   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda1 (block)
| KERNEL[7034.004446] change   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda2 (block)
| KERNEL[7034.004631] change   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda3 (block)
| KERNEL[7034.034068] change   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda (block)
| KERNEL[7034.034228] change   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda1 (block)
| KERNEL[7034.034378] change   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda2 (block)
| KERNEL[7034.034516] change   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda3 (block)
| KERNEL[7034.828780] remove   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda1 (block)
| KERNEL[7034.829322] remove   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda2 (block)
| KERNEL[7034.829622] remove   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda3 (block)
| KERNEL[7034.829941] change   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda (block)
| DISK_RO=0
| KERNEL[7034.830451] change   /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda (block)
| KERNEL[7034.830902] add      /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda1 (block)
| KERNEL[7034.831219] add      /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda2 (block)
| KERNEL[7034.839261] add      /devices/pci0000:00/0000:00:0d.0/ata3/host4/target4:0:0/4:0:0:0/block/sda/sda3 (block)
| DISK_RO=0

Explicitly pass block device name to the script, which should
make usage of script as standalone tool better.

@See grml-forensic/release-planning issue #155

This work was funded by Grml-Forensic.

debian/grml-udev-config.grml-forensic.udev

index db71dd0..30a166e 100644 (file)
@@ -1,2 +1,4 @@
 # mark new block devices as readonly when booting with bootoption forensic/readonly
-ACTION=="add",    SUBSYSTEM=="block", RUN+="/etc/udev/scripts/forensic-mark-readonly"
+ACTION=="add",    SUBSYSTEM=="block",                    RUN+="/etc/udev/scripts/forensic-mark-readonly $name"
+# take care of devices when e.g. partition tables get re-read (see block/genhd.c + set_disk_ro() in linux source)
+ACTION=="change", SUBSYSTEM=="block", ENV{DISK_RO}=="0", RUN+="/etc/udev/scripts/forensic-mark-readonly $name"