mirror of
https://github.com/systemd/systemd.git
synced 2024-11-27 04:03:36 +08:00
a628d933cc
Before this commit, the hibernate location logic only exists in the generator. Also, we compare device nodes (devnode_same()) and clear EFI variable HibernateLocation in the generator too. This is not ideal though: when the generator gets to run, udev hasn't yet started, so effectively devnode_same() always fails. Moreover, if the boot process is interrupted by e.g. battery-check, the hibernate information is lost. Therefore, let's split out the logic of finding hibernate location. The generator only does the initial validation of system info and enables systemd-hibernate-resume.service, and when the service actually runs we validate everything again, which includes comparing the device nodes and clearing the EFI variable. This should make things more robust, plus systems that don't utilize a systemd-enabled initrd can use the exact same logic to resume using the EFI variable. I.e., systemd-hibernate-resume can be used standalone.
25 lines
664 B
SYSTEMD
25 lines
664 B
SYSTEMD
# 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.
|
|
|
|
[Unit]
|
|
Description=Resume from hibernation
|
|
Documentation=man:systemd-hibernate-resume.service(8)
|
|
|
|
ConditionKernelCommandLine=!noresume
|
|
|
|
DefaultDependencies=no
|
|
Wants=local-fs-pre.target
|
|
Before=local-fs-pre.target
|
|
|
|
AssertPathExists=/etc/initrd-release
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
ExecStart={{LIBEXECDIR}}/systemd-hibernate-resume
|