#!/bin/bash if [ "$(id -u)" != 0 ] then exec sudo -- "$0" "$@" exit 1 fi loudly() { (set -x "$@") } 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" ] } f() { OUTPUT=/boot/initrd.img-$1${OUTPUT_TAG} ([ -z "$OUTPUT_TAG" ] || ! up_to_date "$OUTPUT") && /usr/sbin/mkinitramfs \ -d "$samizdat_initramfs_conf_dir" \ -o "$OUTPUT" \ -k "$1" || return 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 fi f "$1" || exit ln -sf "vmlinuz-$1" /vmlinuz elif [ -L /vmlinuz ] then l=$(readlink /vmlinuz) v=${l#boot/vmlinuz-} [ -e "/boot/vmlinuz-$v" ] || exit f "$v" else printf 'Error: Could not determine kernel version. Create /vmlinuz or specify a version.' >&2 exit 1 fi