All other rules in 99-systemd.rules are pretty much concerned about SYSTEMD_READY=1 and tagging devices the service manager shall track. But the gpt-root symlink is different, and it makes sense independently of the service manager. Hence give it a separate file. This introduces indentation for inner sections skipped via GOTO=. The rules parser supports that. In order to make this more readable, let's maybe make use of this.
34 lines
1.9 KiB
Plaintext
34 lines
1.9 KiB
Plaintext
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||
#
|
||
# This file is part of systemd.
|
||
#
|
||
# systemd is free software; you can redistribute it and/or modify it
|
||
# under the terms of the GNU Lesser General Public License as published by
|
||
# the Free Software Foundation; either version 2.1 of the License, or
|
||
# (at your option) any later version.
|
||
|
||
ACTION=="remove", GOTO="image_dissect_end"
|
||
SUBSYSTEM!="block", GOTO="image_dissect_end"
|
||
|
||
# Add symlink to GPT root disk – in two flavours: one which takes the factory
|
||
# reset state into account, and one which does not. The former is useful for
|
||
# wipe-rootfs-on-factory-reset scenarios where we should not be tempted to use
|
||
# the root fs before factory reset is complete. The latter is useful for
|
||
# wipe-only-/var-on-factory-reset where we should use it (because that's where
|
||
# repart.d/ definitions are placed which tell us what to wipe).
|
||
ENV{ID_PART_GPT_AUTO_ROOT}!="1", GOTO="gpt_auto_root_end"
|
||
IMPORT{builtin}="factory_reset status"
|
||
ENV{ID_FS_TYPE}!="crypto_LUKS", ENV{ID_FACTORY_RESET}!="on", SYMLINK+="gpt-auto-root"
|
||
ENV{ID_FS_TYPE}!="crypto_LUKS", ENV{ID_FACTORY_RESET}=="on|complete", SYMLINK+="gpt-auto-root-ignore-factory-reset"
|
||
ENV{ID_FS_TYPE}=="crypto_LUKS", ENV{ID_FACTORY_RESET}!="on", SYMLINK+="gpt-auto-root-luks"
|
||
ENV{ID_FS_TYPE}=="crypto_LUKS", ENV{ID_FACTORY_RESET}=="on|complete", SYMLINK+="gpt-auto-root-luks-ignore-factory-reset"
|
||
LABEL="gpt_auto_root_end"
|
||
|
||
# Note we don't need to condition the gpt-auto-root LUKS symlink for
|
||
# auto-discovered LUKS devices, because it's sufficient if we do this for the
|
||
# underlying partition block device, which is covered by the above.
|
||
ENV{DM_UUID}=="CRYPT-*", ENV{DM_NAME}=="root", IMPORT{builtin}="factory_reset status", SYMLINK+="gpt-auto-root"
|
||
ENV{DM_UUID}=="CRYPT-*", ENV{DM_NAME}=="root", ENV{ID_FACTORY_RESET}=="on|complete", SYMLINK+="gpt-auto-root-ignore-factory-reset"
|
||
|
||
LABEL="image_dissect_end"
|