]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
feat(systemd-ac-power): introducing the systemd-ac-power module
authorJóhann B. Guðmundsson <johannbg@gmail.com>
Sun, 18 Apr 2021 06:47:15 +0000 (06:47 +0000)
committerHarald Hoyer <harald@hoyer.xyz>
Thu, 22 Apr 2021 08:44:29 +0000 (10:44 +0200)
Introducing the systemd-ac-power module

dracut.spec
modules.d/01systemd-ac-power/99-initrd-power-targets.rules [new file with mode: 0644]
modules.d/01systemd-ac-power/initrd-on-ac-power.target [new file with mode: 0644]
modules.d/01systemd-ac-power/initrd-on-battery-power.target [new file with mode: 0644]
modules.d/01systemd-ac-power/module-setup.sh [new file with mode: 0755]

index 60705875b030b2bba25e3554770fe444b45c0685..726714086904c4cbeea555b6141ee8033e55e332 100644 (file)
@@ -322,6 +322,7 @@ echo 'dracut_rescue_image="yes"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/
 %if 0%{?fedora} || 0%{?rhel} || 0%{?suse_version}
 %{dracutlibdir}/modules.d/01fips
 %endif
+%{dracutlibdir}/modules.d/01systemd-ac-power
 %{dracutlibdir}/modules.d/01systemd-ask-password
 %{dracutlibdir}/modules.d/01systemd-coredump
 %{dracutlibdir}/modules.d/01systemd-initrd
diff --git a/modules.d/01systemd-ac-power/99-initrd-power-targets.rules b/modules.d/01systemd-ac-power/99-initrd-power-targets.rules
new file mode 100644 (file)
index 0000000..1490a22
--- /dev/null
@@ -0,0 +1,3 @@
+# This file is part of dracut systemd ac power module
+SUBSYSTEM=="power_supply", KERNEL=="AC", ATTR{online}=="0", RUN+="/usr/sbin/systemctl start initrd-on-battery-power.target"
+SUBSYSTEM=="power_supply", KERNEL=="AC", ATTR{online}=="1", RUN+="/usr/sbin/systemctl start initrd-on-ac-power.target"
diff --git a/modules.d/01systemd-ac-power/initrd-on-ac-power.target b/modules.d/01systemd-ac-power/initrd-on-ac-power.target
new file mode 100644 (file)
index 0000000..73a9978
--- /dev/null
@@ -0,0 +1,8 @@
+# This file is part of dracut.
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+[Unit]
+Description=Initial RAM Disk On AC Power
+ConditionPathExists=/usr/lib/initrd-release
+DefaultDependencies=no
+StopWhenUnneeded=yes
diff --git a/modules.d/01systemd-ac-power/initrd-on-battery-power.target b/modules.d/01systemd-ac-power/initrd-on-battery-power.target
new file mode 100644 (file)
index 0000000..fdd54a5
--- /dev/null
@@ -0,0 +1,8 @@
+# This file is part of dracut.
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+[Unit]
+Description=Initial RAM Disk On Battery Power
+ConditionPathExists=/usr/lib/initrd-release
+DefaultDependencies=no
+StopWhenUnneeded=yes
diff --git a/modules.d/01systemd-ac-power/module-setup.sh b/modules.d/01systemd-ac-power/module-setup.sh
new file mode 100755 (executable)
index 0000000..084e792
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/bash
+# This file is part of dracut.
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+# Prerequisite check(s) for module.
+check() {
+
+    # Return 255 to only include the module, if another module requires it.
+    return 255
+
+}
+
+# Module dependency requirements.
+depends() {
+
+    # Return 0 to include the dependent module(s) in the initramfs.
+    return 0
+
+}
+
+# Install the required file(s) and directories for the module in the initramfs.
+install() {
+
+    inst_rules "$moddir/99-initrd-power-targets.rules"
+    inst_simple "$systemdutildir"/systemd-ac-power
+    inst_simple "$moddir/initrd-on-ac-power.target" "$systemdsystemunitdir/initrd-on-ac-power.target"
+    inst_simple "$moddir/initrd-on-battery-power.target" "$systemdsystemunitdir/initrd-on-battery-power.target"
+
+}