summaryrefslogtreecommitdiffstats
path: root/modules.d/slx-drm/hooks/s3-activate-nvidia-drivers.sh
diff options
context:
space:
mode:
Diffstat (limited to 'modules.d/slx-drm/hooks/s3-activate-nvidia-drivers.sh')
-rwxr-xr-xmodules.d/slx-drm/hooks/s3-activate-nvidia-drivers.sh73
1 files changed, 34 insertions, 39 deletions
diff --git a/modules.d/slx-drm/hooks/s3-activate-nvidia-drivers.sh b/modules.d/slx-drm/hooks/s3-activate-nvidia-drivers.sh
index 00c2334a..28b0c639 100755
--- a/modules.d/slx-drm/hooks/s3-activate-nvidia-drivers.sh
+++ b/modules.d/slx-drm/hooks/s3-activate-nvidia-drivers.sh
@@ -1,42 +1,37 @@
-#!/bin/bash
+#!/bin/ash
-type emergency_shell >/dev/null 2>&1 || . /lib/dracut-lib.sh
-
-detect_nvidia_cards() {
- # hard check on nvidia graphic cards
- local cards="$( lspci -n | grep -o ' 03..: 10de:....' | awk '{print $2}' )"
- if ! [ -d "/drm.cfg.d" ] && [ -n "$cards" ]; then
- warn "Failed to find '/drm.cfg.d', but have nvidia cards - will try nouveau."
- return 1
+# hard check on nvidia graphic cards
+cards="$( lspci -n | grep -o ' 03..: 10de:....' | awk '{print $2}' )"
+if ! [ -d "/drm.cfg.d" ] && [ -n "$cards" ]; then
+ echo "Failed to find '/drm.cfg.d', but have nvidia cards - will try nouveau."
+ exit 1
+fi
+for card in $cards; do
+ driver="$(awk '$1 = /'"$card"'/ {print $2; exit}' /drm.cfg.d/*)"
+ [ -z "$driver" ] && continue
+ driver="${driver#'@'}"
+ driver="${driver//-/\/}"
+ driver_dir="/lib/modules/${driver}"
+ [ -d "$driver_dir" ] || continue
+ driver_target="/lib/modules/$(uname -r)/kernel/drivers/gpu/drm/nvidia"
+ if [ -d "$driver_target" ]; then
+ echo "'$driver_target' exists, will not overwrite!"
+ exit 1
+ fi
+ # all good, move it over
+ if ! mv "$driver_dir" "$driver_target" 2>&1; then
+ echo "Failed to move '$driver_dir' to '$driver_target'."
+ exit 1
+ fi
+ # finally run depmod to make it visible to udev
+ if ! depmod -a 2>&1 ; then
+ echo "Failed to run depmod, udev won't see the nvidia modules."
+ exit 1
fi
- for card in $cards; do
- local driver="$(awk '$1 = /'"$card"'/ {print $2; exit}' /drm.cfg.d/*)"
- [ -z "$driver" ] && continue
- driver="${driver#'@'}"
- driver="${driver//-/\/}"
- local driver_dir="/lib/modules/${driver}"
- [ -d "$driver_dir" ] || continue
- local driver_target="/lib/modules/$(uname -r)/kernel/drivers/gpu/drm/nvidia"
- if [ -d "$driver_target" ]; then
- warn "'$driver_target' exists, will not overwrite!"
- return 1
- fi
- # all good, move it over
- if ! mv "$driver_dir" "$driver_target" 2>&1; then
- warn "Failed to move '$driver_dir' to '$driver_target'."
- return 1
- fi
- # finally run depmod to make it visible to udev
- if ! depmod -a 2>&1 ; then
- warn "Failed to run depmod, udev won't see the nvidia modules."
- return 1
- fi
- # blacklist nouveau
- echo 'blacklist nouveau' > "/lib/modprobe.d/disable-nouveau.conf"
- info "Initialized nvidia drivers."
- return 0
- done
-}
+ # blacklist nouveau
+ echo 'blacklist nouveau' > "/lib/modprobe.d/disable-nouveau.conf"
+ echo "Initialized nvidia drivers."
+ break
+done
-detect_nvidia_cards
-:
+exit 0