#!/bin/bash if [ "$(id -u)" != 0 ] then exec sudo -- "$0" "$@" exit 1 fi loudly() { (set -x "$@") } deb_arch() { dpkg-architecture -q DEB_HOST_ARCH } up_to_date() { local found system_initrd system_initrd=${1%$OUTPUT_TAG} [ -e "$1" ] || return found=$(find "$samizdat_initramfs_conf_dir" \ "$samizdat_initrd_files_dir" \ "$system_initrd" \ -type f -newer "$1" -print -quit) || return [ -z "$found" ] } build_image() { OUTPUT=/boot/initrd.img-$1${OUTPUT_TAG} # Always regenerate when --system specified. # Otherwise, only regenerate if it appears dependencies changed. if [ -z "$OUTPUT_TAG" ] || ! up_to_date "$OUTPUT" then /usr/sbin/mkinitramfs \ -d "$samizdat_initramfs_conf_dir" \ -o "$OUTPUT" \ -k "$1" || return fi loudly ln -sf "${OUTPUT#/}" /initrd.img } . samizdat-paths.sh OUTPUT_TAG=.samizdat while [ $# -gt 0 ] do case "$1" in -s|--system) OUTPUT_TAG=; shift; continue;; --) shift; break;; -?) exit 1;; *) break;; esac done if [ "$1" ] then k=/boot/vmlinuz-$1 if ! [ -e "$k" ] then printf 'Error: No such file: %s\n' "$k" >&2 exit 1 fi build_image "$1" || exit ln -sf "${k#/}" /vmlinuz elif [ -L /vmlinuz ] then l=$(readlink /vmlinuz) mv=${l#boot/vmlinuz-} for v in "$mv" "$mv-$(deb_arch)" do [ -e "/boot/vmlinuz-$v" ] || continue build_image "$v" exit done exit 1 else printf 'Error: Could not determine kernel version. Create /vmlinuz or specify a version.' >&2 exit 1 fi