summarylogtreecommitdiffstats
path: root/load-kernelsu.in
blob: 76b96b6b99fc85828f08bc64a3aa094d0783566c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/bash

[ $EUID = 0 ] || {
  echo "${0##*/}: Please run as root."
  exit 1
}

KVERSION=$(uname -r)

KSU_MODULE=$(modinfo kernelsu | grep filename | awk '{print $2}')
[ "$KSU_MODULE" ] || KSU_MODULE=$(find /usr/lib/modules/"$KVERSION"/{extras,updates} -iname 'kernelsu.ko*' 2>/dev/null)

[ "$KSU_MODULE" ] || {
  echo "${0##*/}: Module kernelsu is not available for kernel '$KVERSION'!"
  exit 1
}

# Ensure dependencies are installed
if ! grep -wq ext4 /proc/modules; then
  modprobe ext4
fi

case "$1" in
-d|--unload-first) if lsmod | grep -q kernelsu; then
  rmmod kernelsu
fi ;;
esac

case "$KSU_MODULE" in
  *.zst) GET_CMD="zstdcat" ;;
  *.xz) GET_CMD="xzcat" ;;
  *.gz) GET_CMD="gzip -dc" ;;
  *) GET_CMD="cat" ;;
esac

$GET_CMD "$KSU_MODULE" | modloader -