summaryrefslogtreecommitdiffstats
path: root/kcleanup-fedora
blob: 81fc57bee849cef567c36cf582c7f53dc382db4e (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
37
38
39
#!/bin/sh

# args
version="$1"

# config
grubby="grubby"
if test -f /boot/extlinux/extlinux.conf; then
	grubby="$grubby --extlinux"
fi

if test "$version" = ""; then
	echo "usage: $0 <version>"
	echo "kernels:"
	ls /boot/vmlinu*-* | sed -e 's|/boot/vm[^-]\+-|   |'
	exit 1
fi

kernels="$(ls /boot/vmlinu*-${version}* 2>/dev/null | grep -v 'old$')"
for kernel in $kernels; do
	version="${kernel#/boot/vm*-}"
	test -f "$kernel" || continue
	if rpm -qf "$kernel" 2>/dev/null | grep -q kernel; then
		echo "# skip $version [rpm-installed]"
		continue
	fi		
	if test "$version" = "$(uname -r)"; then
		echo "# skip $version [running-now]"
		continue
	fi		
	echo "# kill $version"
	$grubby --remove-kernel="${kernel}"
	rm -f "${kernel}"
	rm -f "${kernel}.old"
	rm -f "${kernel//vmlinuz/System.map}"
	rm -f "${kernel//vmlinuz/System.map}.old"
	rm -f "${kernel//vmlinuz/initramfs}.img"
	rm -rf "/lib/modules/${version}"
done