summarylogtreecommitdiffstats
path: root/kernel-install.sh
blob: f4d4abbbe8c05f31c07b20131da95f57a7e16cb7 (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
#!/bin/bash

set -euo pipefail
shopt -s inherit_errexit nullglob

cd /

all_kernels=0
declare -A versions

add_file() {
	local kver="$1"
	kver="${kver##usr/lib/modules/}"
	kver="${kver%%/*}"
	versions["$kver"]=""
}

while read -r path; do
	case "$path" in
	usr/lib/modules/*/vmlinuz | usr/lib/modules/*/extramodules/*)
		add_file "$path"
		;;
	*)
		all_kernels=1
		;;
	esac
done

((all_kernels)) && for file in usr/lib/modules/*/vmlinuz; do
	pacman -Qqo "$file" 1>/dev/null 2>/dev/null &&
		add_file "$file"
done

for kver in "${!versions[@]}"; do
	kimage="/usr/lib/modules/$kver/vmlinuz"
	echo >&2 +kernel-install "$@" "$kver" "$kimage"
	kernel-install "$@" "$kver" "$kimage" || true
done