X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fkernel-install%2Fkernel-install;h=3ae1d77e33e026507891a84076d1fc6c5a1065bf;hp=be4a8e274d0e89f513b2c363a4b22e8b1a64dd4c;hb=04e0ffb9d5856dfe572f2c697ad25f237a240e6f;hpb=6886b0449dbf264f6b7db2a93a1cfee0e4d4080a diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install index be4a8e274..3ae1d77e3 100644 --- a/src/kernel-install/kernel-install +++ b/src/kernel-install/kernel-install @@ -21,9 +21,9 @@ usage() { - echo "Usage:" >&2 - echo " $0 add " >&2 - echo " $0 remove " >&2 + echo "Usage:" + echo " $0 add KERNEL-VERSION KERNEL-IMAGE" + echo " $0 remove KERNEL-VERSION" } dropindirs_sort() @@ -54,19 +54,22 @@ dropindirs_sort() export LC_COLLATE=C -COMMAND="$1" -KERNEL_VERSION="$2" -KERNEL_IMAGE="$3" - -if [[ -f /etc/os-release ]]; then - . /etc/os-release +for i in "$@"; do + if [ "$i" == "--help" -o "$i" == "-h" ]; then + usage + exit 0 + fi +done + +if [[ "${0##*/}" == 'installkernel' ]]; then + COMMAND='add' +else + COMMAND="$1" + shift fi -if ! [[ $ID ]]; then - echo "Could not determine the distribution name from /etc/os-release." >&2 - echo "Please specify ID=... in /etc/os-release. See man:os-release(5)" >&2 - exit 1 -fi +KERNEL_VERSION="$1" +KERNEL_IMAGE="$2" if [[ -f /etc/machine-id ]]; then read MACHINE_ID < /etc/machine-id @@ -78,28 +81,12 @@ if ! [[ $MACHINE_ID ]]; then exit 1 fi -if [[ -f /etc/kernel/cmdline ]]; then - readarray -t BOOT_OPTIONS < /etc/kernel/cmdline -fi - -if ! [[ ${BOOT_OPTIONS[*]} ]]; then - readarray -t BOOT_OPTIONS < /proc/cmdline -fi - -if ! [[ $BOOT_OPTIONS ]]; then - echo "Could not determine the kernel command line parameters." >&2 - echo "Please specify the kernel command line in /etc/kernel/cmdline!" >&2 - exit 1 -fi - if [[ ! $COMMAND ]] || [[ ! $KERNEL_VERSION ]]; then - usage + echo "Not enough arguments" >&2 exit 1 fi -BOOT_DIR="/$MACHINE_ID/$KERNEL_VERSION" -BOOT_DIR_ABS="/boot$BOOT_DIR" -LOADER_ENTRY="/boot/loader/entries/$MACHINE_ID-$KERNEL_VERSION.conf" +BOOT_DIR_ABS="/boot/$MACHINE_ID/$KERNEL_VERSION" ret=0 readarray -t PLUGINS < <( @@ -110,8 +97,8 @@ readarray -t PLUGINS < <( case $COMMAND in add) - if [[ ! $KERNEL_IMAGE ]]; then - usage + if [[ ! "$KERNEL_IMAGE" ]]; then + echo "Command 'add' requires an argument" >&2 exit 1 fi @@ -121,49 +108,29 @@ case $COMMAND in } for f in "${PLUGINS[@]}"; do - [[ -x $f ]] && "$f" add "$KERNEL_VERSION" "$BOOT_DIR_ABS" - ((ret+=$?)) + if [[ -x $f ]]; then + "$f" add "$KERNEL_VERSION" "$BOOT_DIR_ABS" "$KERNEL_IMAGE" + ((ret+=$?)) + fi done - - cp --preserve "$KERNEL_IMAGE" "$BOOT_DIR_ABS/linux" || { - echo "Could not copy '$KERNEL_IMAGE to '$BOOT_DIR_ABS/linux'." >&2 - exit 1 - } - - mkdir -p "${LOADER_ENTRY%/*}" || { - echo "Could not create loader entry directory '${LOADER_ENTRY%/*}'." >&2 - exit 1 - } - - { - echo "title $PRETTY_NAME" - echo "version $KERNEL_VERSION" - echo "machine-id $MACHINE_ID" - echo "options ${BOOT_OPTIONS[*]}" - echo "linux $BOOT_DIR/linux" - [[ -f $BOOT_DIR_ABS/initrd ]] && \ - echo "initrd $BOOT_DIR/initrd" - } > "$LOADER_ENTRY" || { - echo "Could not create loader entry '$LOADER_ENTRY'." >&2 - exit 1 - } ;; remove) for f in "${PLUGINS[@]}"; do - [[ -x $f ]] && "$f" remove "$KERNEL_VERSION" "$BOOT_DIR_ABS" - ((ret+=$?)) + if [[ -x $f ]]; then + "$f" remove "$KERNEL_VERSION" "$BOOT_DIR_ABS" + ((ret+=$?)) + fi done - rm -rf "$LOADER_ENTRY" "$BOOT_DIR_ABS" + rm -rf "$BOOT_DIR_ABS" + ((ret+=$?)) ;; *) - usage + echo "Unknown command '$COMMAND'" >&2 exit 1 ;; esac -((ret+=$?)) - exit $ret