#!/bin/sh -e

# If we've installed a kernel already, we're done.
if ls /target/boot/vmlinu* >/dev/null 2>&1; then
	exit 0
fi

# If no kernel package is installed, we don't need to repair it.
if ! ls /target/boot/System.map* >/dev/null 2>&1; then
	exit 0
fi

# Try some possible locations for the kernel we used to boot.  This lets us
# save a couple of megabytes of CD space.

find_cd_kernel () {
	# Find the boot kernel on the CD, if possible.
	local subarch prefix kernel

	subarch="$(uname -r | cut -d- -f3)"
	for dir in casper install; do
		for prefix in vmlinux vmlinuz; do
			kernel="/cdrom/$dir/$prefix"
			if [ -e "$kernel" ]; then
				echo "$kernel"
				return
			fi

			if [ "$subarch" ]; then
				kernel="/cdrom/$dir/$subarch/$prefix"
				if [ -e "$kernel" ]; then
					echo "$kernel"
					return
				fi

				kernel="/cdrom/$dir/$prefix-$subarch"
				if [ -e "$kernel" ]; then
					echo "$kernel"
					return
				fi
			fi
		done
	done
}

kernel="$(find_cd_kernel)"
if [ "$kernel" ]; then
	prefix="$(basename "$kernel" | cut -d- -f1)"
	release="$(uname -r)"
	target_kernel="/target/boot/$prefix-$release"
	rm -f "$target_kernel"
	cp -a "$kernel" "$target_kernel"
fi

exit 0
