]> code.delx.au - monosys/blob - clean-dkms
146efa3f744dc0a041a94d303f200ec98c4e2d9b
[monosys] / clean-dkms
1 #!/bin/bash
2
3 architecture="x86_64"
4 linux_packages="linux linux-lts"
5
6 declare -A module2package
7 module2package[vboxhost]=virtualbox-host-dkms
8 module2package[broadcom-wl]=broadcom-wl-dkms
9
10 echo "# Running: $(uname -r)"
11 for linux in $linux_packages; do
12 echo "# Installed: $(pacman -Q "$linux")"
13 done
14
15 echo
16 find /var/lib/dkms/ -maxdepth 2 -type l -name 'kernel-*' | while read line; do
17 module_name="$(echo "$line" | cut -d/ -f5)"
18 package_name="${module2package[$module_name]}"
19 if [ -z "$package_name" ]; then
20 echo "Unknown module: $module_name"
21 exit 1
22 fi
23 module_version="$(pacman -Q "${package_name}" | cut -d' ' -f2 | cut -d'-' -f1)"
24 long_kernel_version="$(echo "$line" | cut -d/ -f6)"
25 kernel_version="$(echo "$long_kernel_version" | sed -e 's/^kernel-//' -e "s/-${architecture}\$//")"
26 if [ "$kernel_version" = "$(uname -r)" ]; then
27 continue
28 fi
29 echo dkms remove -m "$module_name" -v "$module_version" -k "$kernel_version"
30 done
31
32 echo
33 find /lib/modules/ -maxdepth 1 -type d -name '[0-9]*' | while read line; do
34 if pacman -Qo "$line" &> /dev/null; then
35 continue
36 fi
37 echo rm -rf "$line"
38 done
39