PK!âÏ««install.d/20-grub.installnuȯÝí#!/bin/bash if ! [[ $KERNEL_INSTALL_MACHINE_ID ]]; then exit 0 fi [[ -f /etc/default/grub ]] && . /etc/default/grub [[ -f /etc/os-release ]] && . /etc/os-release COMMAND="$1" KERNEL_VERSION="$2" BOOT_DIR_ABS="$3" KERNEL_IMAGE="$4" KERNEL_DIR="${KERNEL_IMAGE%/*}" MACHINE_ID=$KERNEL_INSTALL_MACHINE_ID # Remove it, since for grub2 the images are always installed in /boot rm -rf "${BOOT_DIR_ABS%/*}" BLS_DIR="/boot/loader/entries" mkbls() { local kernelver=$1 && shift local datetime=$1 && shift local debugname="" local debugid="" local flavor="" if [[ "$kernelver" == *\+* ]] ; then local flavor=-"${kernelver##*+}" if [[ "${flavor}" == "-debug" ]]; then local debugname=" with debugging" local debugid="-debug" fi fi cat </dev/null && \ restorecon -R "/boot/${i##*/}-${KERNEL_VERSION}" done # hmac is .vmlinuz-.hmac so needs a special treatment i="$KERNEL_DIR/.${KERNEL_IMAGE##*/}.hmac" if [[ -e "$i" ]]; then rm -f "/boot/.${KERNEL_IMAGE##*/}-${KERNEL_VERSION}.hmac" cp -a "$i" "/boot/.${KERNEL_IMAGE##*/}-${KERNEL_VERSION}.hmac" command -v restorecon &>/dev/null && \ restorecon "/boot/.${KERNEL_IMAGE##*/}-${KERNEL_VERSION}.hmac" fi # symvers is symvers-.gz symlink, needs a special treatment i="$KERNEL_DIR/symvers.gz" if [[ -e "$i" ]]; then rm -f "/boot/symvers-${KERNEL_VERSION}.gz" ln -s "$i" "/boot/symvers-${KERNEL_VERSION}.gz" command -v restorecon &>/dev/null && \ restorecon "/boot/symvers-${KERNEL_VERSION}.gz" fi fi if [[ "x${GRUB_ENABLE_BLSCFG}" = "xtrue" ]] || [[ ! -f /sbin/new-kernel-pkg ]]; then eval "$(grub2-get-kernel-settings)" || true [[ -d "$BLS_DIR" ]] || mkdir -m 0700 -p "$BLS_DIR" BLS_ID="${MACHINE_ID}-${KERNEL_VERSION}" BLS_TARGET="${BLS_DIR}/${BLS_ID}.conf" mkbls "${KERNEL_VERSION}" \ "$(date -u +%Y%m%d%H%M%S -d "$(stat -c '%y' "${KERNEL_DIR}")")" \ >"${BLS_TARGET}" command -v restorecon &>/dev/null && restorecon -R "${BLS_TARGET}" LINUX="$(grep '^linux[ \t]' "${BLS_TARGET}" | sed -e 's,^linux[ \t]*,,')" INITRD="$(grep '^initrd[ \t]' "${BLS_TARGET}" | sed -e 's,^initrd[ \t]*,,')" LINUX_RELPATH="$(grub2-mkrelpath /boot${LINUX})" BOOTPREFIX="$(dirname ${LINUX_RELPATH})" ROOTPREFIX="$(dirname "/boot${LINUX}")" if [[ $LINUX != $LINUX_RELPATH ]]; then sed -i -e "s,^linux.*,linux ${BOOTPREFIX}${LINUX},g" "${BLS_TARGET}" sed -i -e "s,^initrd.*,initrd ${BOOTPREFIX}${INITRD},g" "${BLS_TARGET}" fi if ( [[ "$KERNEL_VERSION" != *${GRUB_DEFAULT_KERNEL_TYPE}* ]] && \ [ "x$GRUB_NON_STANDARD_KERNEL" == "xtrue" ] ) || \ ( echo "$KERNEL_VERSION" | grep -E -q "64k|auto|rt|uki" && \ [ "x$GRUB_NON_STANDARD_KERNEL" != "xtrue" ] ) || \ ( [[ "$KERNEL_VERSION" == *debug* ]] && [ "x$GRUB_DEFAULT_TO_DEBUG" != "xtrue" ] ); then GRUB_UPDATE_DEFAULT_KERNEL=false fi if [ "x$GRUB_UPDATE_DEFAULT_KERNEL" = "xtrue" ]; then NEWDEFAULT="${BLS_ID}" fi if [ "x$GRUB_LINUX_MAKE_DEBUG" = "xtrue" ]; then ARCH="$(uname -m)" BLS_DEBUG_ID="$(echo ${BLS_ID} | sed -e "s/${KERNEL_VERSION}/${KERNEL_VERSION}~debug/")" BLS_DEBUG="$(echo ${BLS_TARGET} | sed -e "s/${KERNEL_VERSION}/${KERNEL_VERSION}~debug/")" cp -aT "${BLS_TARGET}" "${BLS_DEBUG}" TITLE="$(grep '^title[ \t]' "${BLS_DEBUG}" | sed -e 's/^title[ \t]*//')" sed -i -e "s/^title.*/title ${TITLE}${GRUB_LINUX_DEBUG_TITLE_POSTFIX}/" "${BLS_DEBUG}" sed -i -e "s/^id.*/id ${BLS_DEBUG_ID}/" "${BLS_DEBUG}" sed -i -e "s/^options.*/options \$kernelopts ${GRUB_CMDLINE_LINUX_DEBUG}/" "${BLS_DEBUG}" if [ -n "$NEWDEFAULT" -a "x$GRUB_DEFAULT_TO_DEBUG" = "xtrue" ]; then NEWDEFAULT="${BLS_DEBUG_ID}" fi fi if [ -n "$NEWDEFAULT" ]; then grub2-editenv - set "saved_entry=${NEWDEFAULT}" fi # this probably isn't the best place to do this, but it will do for now. if [ -e "${ROOTPREFIX}${INITRD}" -a -e "${ROOTPREFIX}${LINUX}" -a \ "${ROOTPREFIX}${INITRD}" -ot "${ROOTPREFIX}${LINUX}" -a \ -x /usr/lib/kernel/install.d/50-dracut.install ]; then rm -f "${ROOTPREFIX}${INITRD}" fi exit 0 fi /sbin/new-kernel-pkg --package "kernel${flavor}" --install "$KERNEL_VERSION" || exit $? /sbin/new-kernel-pkg --package "kernel${flavor}" --mkinitrd --dracut --depmod --update "$KERNEL_VERSION" || exit $? /sbin/new-kernel-pkg --package "kernel${flavor}" --rpmposttrans "$KERNEL_VERSION" || exit $? # If grubby is used there's no need to run other installation plugins exit 77 ;; remove) if [[ "x${GRUB_ENABLE_BLSCFG}" = "xtrue" ]] || [[ ! -f /sbin/new-kernel-pkg ]]; then ARCH="$(uname -m)" BLS_TARGET="${BLS_DIR}/${MACHINE_ID}-${KERNEL_VERSION}.conf" BLS_DEBUG="$(echo ${BLS_TARGET} | sed -e "s/${KERNEL_VERSION}/${KERNEL_VERSION}~debug/")" rm -f "${BLS_TARGET}" "${BLS_DEBUG}" for i in vmlinuz System.map config zImage.stub dtb; do rm -rf "/boot/${i}-${KERNEL_VERSION}" done # hmac is .vmlinuz-.hmac so needs a special treatment rm -f "/boot/.vmlinuz-${KERNEL_VERSION}.hmac" # symvers is symvers-.gz symlink, needs a special treatment rm -f "/boot/symvers-${KERNEL_VERSION}.gz" exit 0 fi /sbin/new-kernel-pkg --package "kernel${flavor+-$flavor}" --rminitrd --rmmoddep --remove "$KERNEL_VERSION" || exit $? # If grubby is used there's no need to run other installation plugins exit 77 ;; *) ;; esac PK!.©qËË"install.d/99-grub-mkconfig.installnuȯÝí#!/bin/bash if ! [[ $KERNEL_INSTALL_MACHINE_ID ]]; then exit 0 fi ARCH=$(uname -m) [[ -f /etc/default/grub ]] && . /etc/default/grub # Can't assume a BLS capable bootloader on ppc64 if [[ x$GRUB_ENABLE_BLSCFG != xfalse && $ARCH != "ppc64" && $ARCH != "ppc64le" ]]; then exit 0 fi COMMAND="$1" case "$COMMAND" in add|remove) grub2-mkconfig --no-grubenv-update -o /boot/grub2/grub.cfg >& /dev/null ;; *) ;; esac PK!ðöçryyinstall.d/50-dracut.installnuȯÝí#!/bin/bash COMMAND="$1" KERNEL_VERSION="$2" BOOT_DIR_ABS="$3" KERNEL_IMAGE="$4" # If KERNEL_INSTALL_MACHINE_ID is defined but empty, BOOT_DIR_ABS is a fake directory. # So, let's skip to create initrd. if ! [[ ${KERNEL_INSTALL_MACHINE_ID-x} ]]; then exit 0 fi if [[ -d "$BOOT_DIR_ABS" ]]; then INITRD="initrd" else BOOT_DIR_ABS="/boot" INITRD="initramfs-${KERNEL_VERSION}.img" fi ret=0 case "$COMMAND" in add) INITRD_IMAGE_PREGENERATED=${KERNEL_IMAGE%/*}/initrd if [[ -f ${INITRD_IMAGE_PREGENERATED} ]]; then # we found an initrd at the same place as the kernel # use this and don't generate a new one cp "$INITRD_IMAGE_PREGENERATED" "$BOOT_DIR_ABS/$INITRD" \ && chown root:root "$BOOT_DIR_ABS/$INITRD" \ && chmod 0600 "$BOOT_DIR_ABS/$INITRD" \ && exit 0 fi if [[ -f /etc/kernel/cmdline ]]; then read -r -d '' -a BOOT_OPTIONS < /etc/kernel/cmdline elif [[ -f /usr/lib/kernel/cmdline ]]; then read -r -d '' -a BOOT_OPTIONS < /usr/lib/kernel/cmdline else read -r -d '' -a BOOT_OPTIONS < /proc/cmdline fi unset noimageifnotneeded for ((i=0; i < "${#BOOT_OPTIONS[@]}"; i++)); do if [[ ${BOOT_OPTIONS[$i]} == root\=PARTUUID\=* ]]; then noimageifnotneeded="yes" break fi done dracut -f ${noimageifnotneeded:+--noimageifnotneeded} "$BOOT_DIR_ABS/$INITRD" "$KERNEL_VERSION" ret=$? ;; remove) rm -f -- "$BOOT_DIR_ABS/$INITRD" ret=$? ;; esac exit $ret PK!…¨žÌÌinstall.d/20-grubby.installnuȯÝí#!/bin/bash if [[ ! -x /sbin/new-kernel-pkg ]]; then exit 0 fi COMMAND="$1" KERNEL_VERSION="$2" BOOT_DIR_ABS="$3" KERNEL_IMAGE="$4" KERNEL_DIR="${KERNEL_IMAGE%/*}" [[ "$KERNEL_VERSION" == *\+* ]] && flavor=-"${KERNEL_VERSION##*+}" case "$COMMAND" in add) if [[ "${KERNEL_DIR}" != "/boot" ]]; then for i in \ "$KERNEL_IMAGE" \ "$KERNEL_DIR"/System.map \ "$KERNEL_DIR"/config \ "$KERNEL_DIR"/zImage.stub \ "$KERNEL_DIR"/dtb \ ; do [[ -e "$i" ]] || continue cp -aT "$i" "/boot/${i##*/}-${KERNEL_VERSION}" command -v restorecon &>/dev/null && \ restorecon -R "/boot/${i##*/}-${KERNEL_VERSION}" done # hmac is .vmlinuz-.hmac so needs a special treatment i="$KERNEL_DIR/.${KERNEL_IMAGE##*/}.hmac" if [[ -e "$i" ]]; then cp -a "$i" "/boot/.${KERNEL_IMAGE##*/}-${KERNEL_VERSION}.hmac" command -v restorecon &>/dev/null && \ restorecon "/boot/.${KERNEL_IMAGE##*/}-${KERNEL_VERSION}.hmac" fi # symvers is symvers-.gz so needs a special treatment i="$KERNEL_DIR/symvers.gz" if [[ -e "$i" ]]; then cp -a "$i" "/boot/symvers-${KERNEL_VERSION}.gz" command -v restorecon &>/dev/null && \ restorecon "/boot/symvers-${KERNEL_VERSION}.gz" fi fi /sbin/new-kernel-pkg --package "kernel${flavor}" --install "$KERNEL_VERSION" || exit $? /sbin/new-kernel-pkg --package "kernel${flavor}" --mkinitrd --dracut --depmod --update "$KERNEL_VERSION" || exit $? /sbin/new-kernel-pkg --package "kernel${flavor}" --rpmposttrans "$KERNEL_VERSION" || exit $? ;; remove) /sbin/new-kernel-pkg --package "kernel${flavor+-$flavor}" --rminitrd --rmmoddep --remove "$KERNEL_VERSION" || exit $? ;; *) ;; esac # skip other installation plugins, if we can't find a boot loader spec conforming setup if ! [[ -d /boot/loader/entries || -L /boot/loader/entries ]]; then exit 77 fi PK!¿¶„Õppinstall.d/50-depmod.installnuȯÝí#!/bin/bash # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- # ex: ts=8 sw=4 sts=4 et filetype=sh [[ $2 ]] || exit 1 case "$1" in add) exec depmod -a "$2" ;; remove) exec rm -f /lib/modules/"$2"/modules.{alias{,.bin},builtin.bin,dep{,.bin},devname,softdep,symbols{,.bin}} ;; *) exit 0 esac PK!òÁK·· install.d/90-loaderentry.installnuȯÝí#!/bin/bash # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- # ex: ts=8 sw=4 sts=4 et filetype=sh COMMAND="$1" KERNEL_VERSION="$2" BOOT_DIR_ABS="$3" KERNEL_IMAGE="$4" if ! [[ $KERNEL_INSTALL_MACHINE_ID ]]; then exit 0 fi if ! [[ -d "$BOOT_DIR_ABS" ]]; then exit 0 fi MACHINE_ID=$KERNEL_INSTALL_MACHINE_ID BOOT_DIR="/$MACHINE_ID/$KERNEL_VERSION" BOOT_ROOT=${BOOT_DIR_ABS%$BOOT_DIR} LOADER_ENTRY="$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION.conf" if [[ $COMMAND == remove ]]; then exec rm -f "$LOADER_ENTRY" fi if ! [[ $COMMAND == add ]]; then exit 1 fi if ! [[ $KERNEL_IMAGE ]]; then exit 1 fi if [[ -f /etc/os-release ]]; then . /etc/os-release elif [[ -f /usr/lib/os-release ]]; then . /usr/lib/os-release fi if ! [[ $PRETTY_NAME ]]; then PRETTY_NAME="Linux $KERNEL_VERSION" fi if [[ -f /etc/kernel/cmdline ]]; then read -r -d '' -a BOOT_OPTIONS < /etc/kernel/cmdline elif [[ -f /usr/lib/kernel/cmdline ]]; then read -r -d '' -a BOOT_OPTIONS < /usr/lib/kernel/cmdline else declare -a BOOT_OPTIONS read -r -d '' -a line < /proc/cmdline for i in "${line[@]}"; do [[ "${i#initrd=*}" != "$i" ]] && continue BOOT_OPTIONS+=("$i") done fi cp "$KERNEL_IMAGE" "$BOOT_DIR_ABS/linux" && chown root:root "$BOOT_DIR_ABS/linux" && chmod 0644 "$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 } exit 0 PK!„Ýgðxxinstall.d/92-tuned.installnuȯÝí#!/bin/bash COMMAND="$1" KERNEL_VERSION="$2" BOOT_DIR_ABS="$3" KERNEL_IMAGE="$4" if ! [[ $KERNEL_INSTALL_MACHINE_ID ]]; then exit 0 fi MACHINE_ID=$KERNEL_INSTALL_MACHINE_ID # with grub2 always /boot BOOT_ROOT="/boot" LOADER_ENTRIES="$BOOT_ROOT/loader/entries" [ -d "$LOADER_ENTRIES" ] || exit 0 [ "$COMMAND" = "add" ] || exit 0 ARCH=`uname -m` pushd "$LOADER_ENTRIES" &> /dev/null for f in `basename "$MACHINE_ID"`-*.conf; do # Skip non-files and rescue entries if [ ! -f "$f" -o "${f: -12}" == "-rescue.conf" ]; then continue fi # Skip boom managed entries if [[ "$f" =~ \w*-[0-9a-f]{7,}-.*-.*.conf ]]; then continue fi if [ "${ARCH:0:4}" = "s390" ]; then # On s390(x), the zipl bootloader doesn't support variables, # unpatch TuneD variables which could be there from the previous TuneD # versions grep -q '^\s*options\s\+.*\$tuned_params' "$f" && sed -i '/^\s*options\s\+/ s/\s\+\$tuned_params\b//g' "$f" grep -q '^\s*initrd\s\+.*\$tuned_initrd' "$f" && sed -i '/^\s*initrd\s\+/ s/\s\+\$tuned_initrd\b//g' "$f" else # Not on s390(x), add TuneD variables if they are not there grep -q '^\s*options\s\+.*\$tuned_params' "$f" || sed -i '/^\s*options\s\+/ s/\(.*\)/\1 \$tuned_params/' "$f" grep -q '^\s*initrd\s\+.*\$tuned_initrd' "$f" || sed -i '/^\s*initrd\s\+/ s/\(.*\)/\1 \$tuned_initrd/' "$f" fi done popd &> /dev/null exit 0 PK!Z"öinstall.d/60-kdump.installnuȯÝí#!/usr/bin/bash COMMAND="$1" KERNEL_VERSION="$2" KDUMP_INITRD_DIR_ABS="$3" KERNEL_IMAGE="$4" if ! [[ ${KERNEL_INSTALL_MACHINE_ID-x} ]]; then exit 0 fi if [[ -d "$KDUMP_INITRD_DIR_ABS" ]]; then KDUMP_INITRD="initrdkdump" else # If `KDUMP_BOOTDIR` is not writable, then the kdump # initrd must have been placed at `/var/lib/kdump` if [[ ! -w "/boot" ]]; then KDUMP_INITRD_DIR_ABS="/var/lib/kdump" else KDUMP_INITRD_DIR_ABS="/boot" fi KDUMP_INITRD="initramfs-${KERNEL_VERSION}kdump.img" fi ret=0 case "$COMMAND" in add) # Do nothing, kdump initramfs is strictly host only # and managed by kdump service ;; remove) rm -f -- "$KDUMP_INITRD_DIR_ABS/$KDUMP_INITRD" ret=$? ;; esac exit $ret PK!+©‹£ "install.d/51-dracut-rescue.installnuȯÝí#!/bin/bash export LANG=C COMMAND="$1" KERNEL_VERSION="$2" BOOT_DIR_ABS="${3%/*}/0-rescue" KERNEL_IMAGE="$4" dropindirs_sort() { suffix=$1; shift args=("$@") files=$( while (( $# > 0 )); do for i in ${1}/*${suffix}; do [[ -f $i ]] && echo ${i##*/} done shift done | sort -Vu ) for f in $files; do for d in "${args[@]}"; do if [[ -f "$d/$f" ]]; then echo "$d/$f" continue 2 fi done done } [[ -f /etc/os-release ]] && . /etc/os-release if [[ ${KERNEL_INSTALL_MACHINE_ID+x} ]]; then MACHINE_ID=$KERNEL_INSTALL_MACHINE_ID elif [[ -f /etc/machine-id ]] ; then read MACHINE_ID < /etc/machine-id fi if ! [[ $MACHINE_ID ]]; then exit 0 fi if [[ -f /etc/kernel/cmdline ]]; then read -r -d '' -a BOOT_OPTIONS < /etc/kernel/cmdline elif [[ -f /usr/lib/kernel/cmdline ]]; then read -r -d '' -a BOOT_OPTIONS < /usr/lib/kernel/cmdline else read -r -d '' -a line < /proc/cmdline for i in "${line[@]}"; do [[ "${i#initrd=*}" != "$i" ]] && continue BOOT_OPTIONS+=("$i") done fi if [[ -d "${BOOT_DIR_ABS%/*}" ]]; then BOOT_DIR="/${MACHINE_ID}/0-rescue" BOOT_ROOT=${BOOT_DIR_ABS%$BOOT_DIR} LOADER_ENTRY="$BOOT_ROOT/loader/entries/${MACHINE_ID}-0-rescue.conf" KERNEL="linux" INITRD="initrd" else BLS_DIR="/boot/loader/entries" BOOT_DIR_ABS="/boot" LOADER_ENTRY="$BLS_DIR/${MACHINE_ID}-0-rescue.conf" KERNEL="vmlinuz-0-rescue-${MACHINE_ID}" INITRD="initramfs-0-rescue-${MACHINE_ID}.img" fi ret=0 case "$COMMAND" in add) [[ -f "$LOADER_ENTRY" ]] && [[ -f "$BOOT_DIR_ABS/$KERNEL" ]] \ && [[ -f "$BOOT_DIR_ABS/$INITRD" ]] && exit 0 # source our config dir for f in $(dropindirs_sort ".conf" "/etc/dracut.conf.d" "/usr/lib/dracut/dracut.conf.d"); do [[ -e $f ]] && . "$f" done [[ $dracut_rescue_image != "yes" ]] && exit 0 [[ -d "$BOOT_DIR_ABS" ]] || mkdir -p "$BOOT_DIR_ABS" if ! cp "$KERNEL_IMAGE" "$BOOT_DIR_ABS/$KERNEL"; then echo "Can't copy '$KERNEL_IMAGE to '$BOOT_DIR_ABS/$KERNEL'!" >&2 fi if [[ ! -f "$BOOT_DIR_ABS/$INITRD" ]]; then dracut -f --no-hostonly -a "rescue" "$BOOT_DIR_ABS/$INITRD" "$KERNEL_VERSION" ((ret+=$?)) fi if [[ "${BOOT_DIR_ABS}" != "/boot" ]]; then { echo "title $PRETTY_NAME - Rescue Image" echo "version $KERNEL_VERSION" echo "machine-id $MACHINE_ID" echo "options ${BOOT_OPTIONS[@]} rd.auto=1" echo "linux $BOOT_DIR/linux" echo "initrd $BOOT_DIR/initrd" } > $LOADER_ENTRY else if [[ -e "${BLS_DIR}/${MACHINE_ID}-${KERNEL_VERSION}.conf" ]]; then cp -aT "${BLS_DIR}/${MACHINE_ID}-${KERNEL_VERSION}.conf" $LOADER_ENTRY else cp -aT "${KERNEL_IMAGE%/*}/bls.conf" $LOADER_ENTRY fi sed -i 's/'$KERNEL_VERSION'/0-rescue-'${MACHINE_ID}'/' $LOADER_ENTRY fi ((ret+=$?)) ;; remove) exit 0 ;; *) usage ret=1;; esac exit $ret PK!âÏ««install.d/20-grub.installnuȯÝíPK!.©qËË"ôinstall.d/99-grub-mkconfig.installnuȯÝíPK!ðöçryyinstall.d/50-dracut.installnuȯÝíPK!…¨žÌÌÕ%install.d/20-grubby.installnuȯÝíPK!¿¶„Õppì.install.d/50-depmod.installnuȯÝíPK!òÁK·· §0install.d/90-loaderentry.installnuȯÝíPK!„Ýgðxx®8install.d/92-tuned.installnuȯÝíPK!Z"öp>install.d/60-kdump.installnuȯÝíPK!+©‹£ "ÑAinstall.d/51-dracut-rescue.installnuȯÝíPK B-O