NVIDIA: Add SysV powerd framework.

This commit is contained in:
Zeckmathederg
2025-06-24 13:34:45 -06:00
parent 779fd373c6
commit f6e4640ceb
9 changed files with 198 additions and 29 deletions

View File

@ -245,33 +245,6 @@ $(BASEDIR)/test-links: $(RENDERTMP)/$(GLFSFULL) version
$(Q)$(CLEAN)
bootscripts:
$(Q)trap '$(CLEAN)' EXIT
@VERSION=`grep "bootscripts-version " general.ent | cut -d\" -f2`; \
BOOTSCRIPTS="glfs-bootscripts-$$VERSION"; \
if [ ! -e $$BOOTSCRIPTS.tar.xz ]; then \
rm -rf $(RENDERTMP)/$$BOOTSCRIPTS; \
mkdir $(RENDERTMP)/$$BOOTSCRIPTS; \
cp -a ../bootscripts/* $(RENDERTMP)/$$BOOTSCRIPTS; \
rm -rf ../bootscripts/archive; \
tar -cJhf $$BOOTSCRIPTS.tar.xz -C $(RENDERTMP) $$BOOTSCRIPTS; \
fi
$(Q)$(CLEAN)
systemd-units:
$(Q)trap '$(CLEAN)' EXIT
@VERSION=`grep "systemd-units-version " general.ent | cut -d\" -f2`; \
UNITS="glfs-systemd-units-$$VERSION"; \
if [ ! -e $$UNITS.tar.xz ]; then \
rm -rf $(RENDERTMP)/$$UNITS; \
mkdir $(RENDERTMP)/$$UNITS; \
cp -a ../systemd-units/* $(RENDERTMP)/$$UNITS; \
tar -cJhf $$UNITS.tar.xz -C $(RENDERTMP) $$UNITS; \
fi
$(Q)$(CLEAN)
test-options:
$(Q)trap '$(CLEAN)' EXIT
$(Q)xsltproc --xinclude --nonet stylesheets/test-options.xsl index.xml
@ -287,7 +260,7 @@ $(DUMPDIR): $(RENDERTMP)/$(GLFSFULL) version
$(Q)$(CLEAN)
.PHONY: glfs all world html validate profile-html wget-list test-links \
dump-commands bootscripts systemd-units version test-options
dump-commands version test-options
version:
$(Q)REV=$(REV) STAB=$(STAB) ./git-version.sh

Binary file not shown.

View File

@ -0,0 +1,42 @@
SHELL=/bin/bash
ETCDIR=/etc
LIBDIR=${DESTDIR}/lib/services
EXTDIR=${DESTDIR}${ETCDIR}
MODE=754
DIRMODE=755
CONFMODE=644
all:
@grep "^install" Makefile | cut -d ":" -f 1
@echo "Select an appropriate install target from the above list"
create-dirs:
install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rc{0,1,2,3,4,5,6,S}.d
install -d -m ${DIRMODE} ${EXTDIR}/rc.d/init.d
install -d -m ${DIRMODE} ${EXTDIR}/sysconfig
create-service-dir:
install -d -m ${DIRMODE} ${LIBDIR}
install-nvidia-powerd:
install -m755 nvidia-sleep /usr/bin
install -m ${MODE} nvidia-powerd ${EXTDIR}/rc.d/init.d/
ln -sf ../init.d/nvidia-powerd ${EXTDIR}/rc.d/rc0.d/K22nvidia-powerd
ln -sf ../init.d/nvidia-powerd ${EXTDIR}/rc.d/rc1.d/K22nvidia-powerd
ln -sf ../init.d/nvidia-powerd ${EXTDIR}/rc.d/rc2.d/S36nvidia-powerd
ln -sf ../init.d/nvidia-powerd ${EXTDIR}/rc.d/rc3.d/S36nvidia-powerd
ln -sf ../init.d/nvidia-powerd ${EXTDIR}/rc.d/rc4.d/S36nvidia-powerd
ln -sf ../init.d/nvidia-powerd ${EXTDIR}/rc.d/rc5.d/S36nvidia-powerd
ln -sf ../init.d/nvidia-powerd ${EXTDIR}/rc.d/rc6.d/K22nvidia-powerd
uninstall-nvidia-powerd:
rm -f /usr/bin/nvidia-sleep
rm -f ${EXTDIR}/rc.d/init.d/nvidia-powerd
rm -f ${EXTDIR}/rc.d/rc0.d/K22nvidia-powerd
rm -f ${EXTDIR}/rc.d/rc1.d/K22nvidia-powerd
rm -f ${EXTDIR}/rc.d/rc2.d/S36nvidia-powerd
rm -f ${EXTDIR}/rc.d/rc3.d/S36nvidia-powerd
rm -f ${EXTDIR}/rc.d/rc4.d/S36nvidia-powerd
rm -f ${EXTDIR}/rc.d/rc5.d/S36nvidia-powerd
rm -f ${EXTDIR}/rc.d/rc6.d/K22nvidia-powerd

View File

@ -0,0 +1,66 @@
#!/bin/sh
########################################################################
# Begin nvidia-powerd
#
# Description : nvidia-powerd Boot Script
#
# Authors : Zeckma - zeckma.tech@gmail.com
#
# Version : GLFS #779fd
#
########################################################################
### BEGIN INIT INFO
# Provides: nvidia-powerd
# Required-Start: $local_fs dbus
# Should-Start: $syslog
# Required-Stop: $local_fs
# Should-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: NVIDIA power management
# Description: NVIDIA power management
# X-LFS-Provided-By: GLFS
### END INIT INFO
. /lib/lsb/init-functions
case "${1}" in
start)
log_info_msg "Starting the NVIDIA-Powerd Daemon"
start_daemon /usr/bin/nvidia-powerd
evaluate_retval
# log_info_msg "Enabling NVIDIA sleep"
# start_daemon /usr/bin/nvidia-sleep "sleep"
# evaluate_retval
log_info_msg "Enabling NVIDIA suspend"
start_daemon /usr/bin/nvidia-sleep "suspend"
evaluate_retval
log_info_msg "Enabling NVIDIA hibernate"
start_daemon /usr/bin/nvidia-sleep "hibernate"
evaluate_retval
log_info_msg "Enabling NVIDIA resume"
start_daemon /usr/bin/nvidia-sleep "resume"
evaluate_retval
;;
stop)
log_info_msg "Stopping the NVIDIA-Powerd Daemon"
if pidofproc nvidia-powerd >/dev/null; then
/usr/bin/killall nvidia-powerd
fi
evaluate_retval
;;
status)
statusproc nvidia-powerd
;;
*)
echo "Usage: ${0} {start|stop|status}"
exit 1
;;
esac
# End /etc/init.d/nvidia-powerd

View File

@ -0,0 +1,48 @@
#!/bin/bash
if [ ! -f /proc/driver/nvidia/suspend ]; then
exit 0
fi
RUN_DIR="/var/run/nvidia-sleep"
XORG_VT_FILE="${RUN_DIR}"/Xorg.vt_number
PATH="/usr/bin"
RestoreVT() {
# Check if Xorg was determined to be running at the time
# of suspend, and whether its VT was recorded. If so,
# attempt to switch back to this VT.
if [[ -f "${XORG_VT_FILE}" ]]; then
XORG_PID=$(cat "${XORG_VT_FILE}")
rm "${XORG_VT_FILE}"
chvt "${XORG_PID}"
fi
}
case "$1" in
suspend|hibernate)
mkdir -p "${RUN_DIR}"
fgconsole > "${XORG_VT_FILE}"
chvt 63
if [[ $? -ne 0 ]]; then
exit $?
fi
echo "$1" > /proc/driver/nvidia/suspend
RET_VAL=$?
#
# If suspend/hibernate entry fails, switch back to the active VT
#
if [[ $RET_VAL -ne 0 ]]; then
RestoreVT
fi
exit $RET_VAL
;;
resume)
echo "$1" > /proc/driver/nvidia/suspend
RestoreVT
exit 0
;;
*)
exit 1
esac

View File

@ -0,0 +1 @@
1

View File

@ -0,0 +1,6 @@
#!/bin/sh
bs_version=$(cat NVIDIA-sysv-bootscripts/version)
cp -vR NVIDIA-sysv-bootscripts{,-$bs_version}
tar -cJvf ./NVIDIA-sysv-bootscripts-$bs_version.tar.xz \
NVIDIA-sysv-bootscripts-$bs_version
rm -rf NVIDIA-sysv-bootscripts-$bs_version

View File

@ -155,6 +155,7 @@
listed was released -->
<!ENTITY nvidia-version "575.64">
<!ENTITY nv-manifest-version "1">
<!ENTITY nv-sysv-bs "1">
<!ENTITY spirv-version "&vulkan-version;.0">
<!ENTITY spirv-headers-version "&spirv-version;">
<!ENTITY spirv-tools-version "&spirv-version;">

View File

@ -61,6 +61,12 @@
<ulink url="&dl-root;/NVIDIA/manifest-NVIDIA-&nv-manifest-version;"/>
</para>
</listitem>
<listitem revision="sysv">
<para>
Recommended SysVinit bootscripts for NVIDIA-Powerd:
<ulink url="&dl-root;/NVIDIA/NVIDIA-sysv-bootscripts-&nv-sysv-bs;.tar.xz"/>
</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">NVIDIA Dependencies</bridgehead>
@ -83,6 +89,12 @@
page)
</para>
</listitem>
<listitem revision="sysv">
<para>
<xref linkend="dbus"/> and <xref linkend="elogind"/> (for
NVIDIA-Powerd suppport)
</para>
</listitem>
<listitem>
<para>
<ulink url="&blfs-svn;/x/gtk3.html">GTK-3</ulink> (for
@ -351,6 +363,27 @@ install -vm644 ../manifest-NVIDIA-&nv-manifest-version; \
</sect2>
<!-- UNFINISHED, DOES NOT WORK!
<sect2 revision="sysv">
<title>Installation of NVIDIA-Powerd</title>
<para>
If you want <application>NVIDIA-Powerd</application>, which can suspend
and hibernate if asked to, then run the following commands as the &root;
user to install the daemon and the bootscripts:
</para>
<screen role="root"><userinput>mkdir -pv /usr/share/dbus-1/system.d &amp;&amp;
install -vm755 nvidia-powerd /usr/bin &amp;&amp;
cp -v nvidia-dbus.conf \
/usr/share/dbus-1/system.d &amp;&amp;
tar -xf ../NVIDIA-sysv-bootscripts-&nv-sysv-bs;.tar.xz &amp;&amp;
pushd NVIDIA-sysv-bootscripts-&nv-sysv-bs; &amp;&amp;
make install-nvidia-powerd &amp;&amp;
popd &amp;&amp;
rm -rf NVIDIA-sysv-bootscripts-&nv-sysv-bs;</userinput></screen>
</sect2>
-->
<sect2 revision="systemd">
<title>Installation of NVIDIA-Powerd</title>
<para>
@ -398,7 +431,6 @@ done</userinput></screen>
done</userinput></screen>
</sect2>
<sect2 role="configuration">
<title>Configuring NVIDIA</title>