This is part of a series of posts on the design and technical steps of creating Himblick, a digital signage box based on the Raspberry Pi 4.
After seeing lots of automatic mount/umount notifications during provisioning, we wondered if it would be possibile to temporarily disable them while we're working on the SD card.
It turns out that it's possible, and here's a convenient python context manager
to do it cleanly, based on /usr/lib/udisks2/udisks2-inhibit
, but adding the
possibility of inhibiting automounting only on one specific device:
@contextmanager def pause_automounting(self, dev: Dict[str, Any]): """ Pause automounting on the device for the duration of this context manager """ # See /usr/lib/udisks2/udisks2-inhibit devpath = dev["path"] rules_dir = "/run/udev/rules.d" os.makedirs(rules_dir, exist_ok=True) rule_file = os.path.join(rules_dir, "90-udisks-inhibit-" + devpath.replace("/", "_") + ".rules") with open(rule_file, "wt") as fd: print('SUBSYSTEM=="block", ENV{DEVNAME}=="' + devpath + '*", ENV{UDISKS_IGNORE}="1"', file=fd) fd.flush() os.fsync(fd.fileno()) run(["udevadm", "control", "--reload"]) run(["udevadm", "trigger", "--settle", "--subsystem-match=block"]) try: yield finally: os.unlink(rule_file) run(["udevadm", "control", "--reload"]) run(["udevadm", "trigger", "--settle", "--subsystem-match=block"])