diff options
3 files changed, 0 insertions, 671 deletions
diff --git a/recipes-core/swupd-client/oe-swupd-helpers/kernel_updater.sh~ b/recipes-core/swupd-client/oe-swupd-helpers/kernel_updater.sh~ deleted file mode 100755 index 0060be0..0000000 --- a/recipes-core/swupd-client/oe-swupd-helpers/kernel_updater.sh~ +++ /dev/null @@ -1,395 +0,0 @@ -#!/bin/bash - -####################################### -# Clear Linux Kernel update script -# Author Brad Peters <brad.t.peters@intel.com> -# kernel_updater.sh: Provides a minimal-copy wrapper which finesses -# the VFAT /boot fs to minimize writes, while implementing Clear Linux -# update/install and fix policies -####################################### - -VERSION=3.60 -HASH="/usr/bin/sha256sum" - -function printUsage() -{ - echo "kernel_updater.sh [--path <path to chroot>]" - echo " -v | --version : Prints version of kernel_updater.sh" - echo " -h | --help : Prints usage" - echo " -p | --path : Optional. Used when creating new image " - echo " in a subdir. Should be absolute path" -} - -function cleanDuplicates() -{ - # Move duplicate kernels out of the way in /boot, if necessary. - # Kernels in /usr are considered 'correct' - SRCFILES=org.clearlinux.* - - for f in $SRCFILES - do - destfile="$SUBDIR/boot/$f" - if [ ! -f $destfile ] - then - continue - fi - - srcsha=$(sha1sum $f) - destsha=$(sha1sum $destfile) - - srcsha=$(echo $srcsha | awk '{print $1}') - destsha=$(echo $destsha | awk '{print $1}') - - if [ "$srcsha" != "$destsha" ] - then - newname="${destfile/clearlinux/clearTMP}" -# echo "Renaming $destfile to $newname prior to replacement" - mv $destfile $newname - fi - done -} - -function cleanDuplicatesEFI() -{ - # Move duplicate kernels out of the way in /boot, if necessary. - # Kernels in /usr are considered 'correct' - SRCFILES=*.efi - - for f in $SRCFILES - do - destfile="$SUBDIR/boot/EFI/Linux/$f" - if [ ! -f $destfile ] - then - continue - fi - - srcsha=$(sha1sum $f) - destsha=$(sha1sum $destfile) - - srcsha=$(echo $srcsha | awk '{print $1}') - destsha=$(echo $destsha | awk '{print $1}') - - if [ "$srcsha" != "$destsha" ] - then - newname="${destfile/clearlinux/clearTMP}" -# echo "Renaming $destfile to $newname prior to replacement" - mv $destfile $newname - fi - done -} - - -function cleanOldEFI() -{ - # Clean up old kernels - - # Get list of all kernels in reverse sorted order (based only on release ID) - LS_KERNELS_SORTED=$(ls org.clearlinux*.efi | sort --field-separator=- -n -k3 -r) - - i=0 - for k in $LS_KERNELS_SORTED - do - if [[ "$i" -ge 3 ]] - then - cur_kernel=$(uname -r | cut -f1,2,3 -d.) - ls_kernel=$(echo $k | cut -f4,5,6 -d.) - - #Do not clean up currently running kernel - if [[ $ls_kernel = $cur_kernel ]] - then - echo "Keeping $k. Is currently running kernel" - continue; - fi - - echo "Clean up old kernel: $k" - echo "Clean up modules $SUBDIR/lib/modules/$ls_kernel" - rm "$k" - rm -Rf "$SUBDIR/lib/modules/$ls_kernel" - fi - i=$((i + 1)) - done -} - -function cleanOld() -{ - # Clean up old kernels - - # Get list of all kernels in reverse sorted order (based only on release ID) - LS_KERNELS_SORTED=($(ls org.clearlinux.* | sort --field-separator=- -n -k3 -r)) - - i=0 - for k in $LS_KERNELS_SORTED[*] - do - if [[ "$i" -ge 3 ]] - then - cur_kernel=$(uname -r | cut -f1,2,3 -d.) - ls_kernel=$(echo $k | cut -f4,5,6 -d.) - - #Do not clean up currently running kernel - if [[ $ls_kernel = $cur_kernel ]] - then - echo "Keeping $k. Is currently running kernel" - continue; - fi - - echo "Clean up old kernel: $k" - if [[ -z "${SUBDIR}" ]]; then - ${KINSTALL} remove "${ls_kernel}" - else - ${KINSTALL} --root "${SUBDIR}" remove "${ls_kernel}" - fi - fi - i=$((i + 1)) - done -} - -#Set the "default" entry option in file /boot/loader/loader.conf -#requires /boot partition mounted -function updateDefaultEntry() -{ - LOADER_CONF_FILE="/boot/loader/loader.conf" - if [ ! -f "$SUBDIR""$LOADER_CONF_FILE" ]; then - mkdir -p "$(dirname "$SUBDIR""$LOADER_CONF_FILE" )" - touch "$SUBDIR""$LOADER_CONF_FILE" - fi - - for typename in "native" "kvm" "container" ; do - TPATH="${SUBDIR}/usr/lib/kernel/default-${typename}" - if [[ -e "${TPATH}" ]] ; then - kfile="$(basename $(readlink ${TPATH}))" - - ktype="$(echo $kfile|cut -d. -f 3)" - kversion="$(echo $kfile|cut -f4,5,6 -d.|cut -d - -f 1)" - krelease="$(echo $kfile|cut -d - -f 2)" - defaultConf="Clear-linux-${ktype}-${kversion}-${krelease}" - break - fi - done - - if [[ -z "${defaultConf}" ]]; then - echo "Default loader cannot be found" - return - fi - - configFile="$SUBDIR""$LOADER_CONF_FILE" - hashFile="${configFile}.sha256sum" - - sync - echo "default ${defaultConf}" > "${configFile}" - sync - - echo "Updated default to: ${defaultConf}" - - if [[ -e "${hashFile}" ]]; then - echo "Removing legacy file: ${hashFile}" - rm -v "${hashFile}" - sync - fi -} - -# Copies kernel from /usr to /boot. Checks each kernel to -# ensure modules are installed, and only copies if so -function copyKernelBlobs() -{ - pushd "$SUBDIR/usr/lib/kernel" > /dev/null - LS_KERNELS_SORTED=$(ls org.clearlinux.* | sort --field-separator=- -n -k3 -r) - popd > /dev/null - - for k in $LS_KERNELS_SORTED - do - kernel_version=$(echo "$k" | cut -f4,5,6 -d.) - kernel_file="${SUBDIR}/usr/lib/kernel/$(basename ${k})" - kernel_blob=$(echo "$k" | cut -f5 -d/) - echo "Kernel version = $kernel_version , blob = $kernel_blob" - kmods=$(ls $SUBDIR/lib/modules | sed -n "/$kernel_version/p") - kmods_len=${#kmods} - - # Proceed with cp if kernel modules are present and kernel is not - # already installed - if [ $kmods_len -gt 0 ] && [ ! -e "$SUBDIR/boot/$kernel_blob" ] - then - echo " Installing $k to $SUBDIR/boot/" - if [[ -z "${SUBDIR}" ]]; then - ${KINSTALL} add "${kernel_version}" "${kernel_file}" - else - ${KINSTALL} --root "${SUBDIR}" add "${kernel_version}" "${kernel_file}" - fi - - if [[ $? -eq 0 ]]; then - echo "Installed $k to /boot/" - else - echo "Failed to copy $k to /boot" - fi - - else - if [ ! $kmods_len -gt 0 ] - then - echo "Skipping kernel $kernel_version - No modules found." - fi - if [ -e "$SUBDIR/boot/$kernel_blob" ] - then - echo "Skipping kernel $kernel_version - Already installed." - fi - fi - - done -} - -##################### Main ##################### -if [[ $# > 2 ]] -then - printUsage -fi - -# Parse cmdline -if [[ $# > 0 ]] -then - case "$1" in - -h|--help) - printUsage - exit 0 - ;; - -v|--version) - echo "kernel_updater.sh version $VERSION" - exit 0 - ;; - -p|--path) - if [[ $# = 1 ]] - then - echo "Invalid arguments. --path requires a second argument." - exit 1 - fi - SUBDIR="$2" - ;; - *) - echo "Unrecognized argument ($1). Try again" - printUsage - exit 1 - ;; - esac -fi - -if [[ $EUID -ne 0 ]]; then - echo "Must be root to execute kernel_updater.sh" - exit 1 -fi - -KINSTALL="${SUBDIR}/usr/bin/kernel-install" - -# Clean up /usr/lib/kernel to the minimal 3 kernels we want to install -pushd "$SUBDIR/usr/lib/kernel/" > /dev/null - -have_blobs=0 -have_legacy=0 -for test in org.clearlinux.*; do - have_blobs=1 - if [[ "${test}" == *.efi ]] ; then - have_legacy=1 - fi - break; -done -if [[ "$have_blobs" -eq 1 ]]; then - cleanOld - if [[ "$have_legacy" -eq 1 ]]; then - cleanOldEFI - fi -else - echo "No kernel blobs found." - echo "kernel update complete." - exit 0 -fi - -# Note that if we are given a --SUBDIR or if there are no org.clearlinux blobs -# in /usr/lib/kernel, we do not attempt a mount of /boot -if [ -z "${SUBDIR}" ]; then - # Get boot partition UUID - BOOTUUIDENTRY=$(ls /sys/firmware/efi/efivars/LoaderDevicePartUUID*) - if [[ -e $BOOTUUIDENTRY ]]; then - UUID=$(cat $BOOTUUIDENTRY | tr -cd '[[:alnum:]]._-' | tr '[:upper:]' '[:lower:]') - fi - - strlen=${#UUID} - - IS_MOUNTED=$(mount | sed -n '/boot/p' | sed -n '/vfat/p') - if [[ -z "$IS_MOUNTED" ]]; - then - if [ "$strlen" -gt 0 ] - then - echo "Mounting boot partition with UUID=$UUID" - mount /dev/disk/by-partuuid/$UUID /boot -o rw -t vfat - else - echo "Failed to identify boot partition using /sys/firmware/efi/efivars." - echo " Attempting to mount by-partlabel" - mount /dev/disk/by-partlabel/ESP /boot -o rw -t vfat - fi - else - if [ "$strlen" -gt 0 ] - then - echo "Mounting boot partition with UUID=$UUID" - mount -o remount,rw /dev/disk/by-partuuid/$UUID /boot -t vfat - else - echo "Failed to identify boot partition using /sys/firmware/efi/efivars." - echo " Attempting to remount by-partlabel" - mount -o remount,rw /dev/disk/by-partlabel/ESP /boot -t vfat - fi - fi - - IS_MOUNTED=$(mount | sed -n '/boot/p' | sed -n '/vfat/p') - if [[ -z "$IS_MOUNTED" ]]; - then - echo "/boot partition was not found. Unable to continue" - exit 1 - fi -fi - -echo "Updating kernel... please wait..." -# Identify kernels in /boot/EFI/Linux which are different from those -# in /usr. Assume /usr is 'correct', and remove those in /boot -cleanDuplicates -cleanDuplicatesEFI - -# Sync after cleanup to protect against VFAT corruption -pushd "$SUBDIR/boot" > /dev/null -sync -popd > /dev/null - -# Copy new kernels from /usr/lib/kernel into /boot/ -copyKernelBlobs - -# Step 3 - Cleanup kernels which were repaired, then sync -if [[ -e "$SUBDIR/boot/EFI/Linux/" ]]; then - pushd "$SUBDIR/boot/EFI/Linux/" > /dev/null - rm -f *clearTMP* 2>/dev/null - sync - popd > /dev/null -fi - -pushd "$SUBDIR/boot/" > /dev/null -rm -f *clearTMP* 2>/dev/null -sync -popd > /dev/null - -# Clean up legacy EFI blobs which are no longer needed -if [[ -e "$SUBDIR/boot/EFI/Linux" ]]; then - pushd "$SUBDIR/boot/EFI/Linux" > /dev/null - cleanOldEFI - sync - popd > /dev/null -fi - -# Finally, clean up kernels which are no longer needed -pushd "$SUBDIR/boot" > /dev/null -cleanOld -sync -popd > /dev/null - -#Update default kernel with the latest version -updateDefaultEntry - -if [ -z "${SUBDIR}" ]; then - umount /boot -fi - -popd > /dev/null - -echo "kernel update complete." diff --git a/recipes-core/swupd-client/oe-swupd-helpers/systemdboot_updater.sh~ b/recipes-core/swupd-client/oe-swupd-helpers/systemdboot_updater.sh~ deleted file mode 100755 index d8cdc7e..0000000 --- a/recipes-core/swupd-client/oe-swupd-helpers/systemdboot_updater.sh~ +++ /dev/null @@ -1,267 +0,0 @@ -#!/bin/bash - -####################################### -# Clear Linux systemd bootloader installer -# Author Brad Peters <brad.t.peters@intel.com> -# systemdboot_updater.sh provides a minimal-copy wrapper which finesses -# the VFAT /boot fs to minimize writes, while implementing Clear Linux -# update/install and fix policies -####################################### - - -VERSION=3.60 - -mountedBoot=0 - -function printUsage() -{ - echo "systemdboot_updater.sh [--path <path to chroot>]" - echo " -v | --version : Prints version of bootloader_updater.sh" - echo " -h | --help : Prints usage" - echo " -p | --path : Optional. Used when creating new image " - echo " in a subdir. Should be absolute path" -} - -# Compares the sha1_sum of two files -# Sets $sha1_cmp_res to 0 if equal, 1 if not -function sha1_cmp() -{ - src=$1 - dest=$2 - - if [[ ! -e $src ]]; then - echo "In sha1_cmp - $src File not found" - exit 1 - fi - - if [[ ! -e $dest ]]; then - # dest file does not exist, therefore we know the - # sha1_sum is different - sha1_cmp_res=1 - return 1 - fi - - srcsha=$(sha1sum $src) - destsha=$(sha1sum $dest) - - srcsha=$(echo $srcsha | awk '{print $1}') - destsha=$(echo $destsha | awk '{print $1}') - - if [ $srcsha == $destsha ] - then - sha1_cmp_res=0 - else - sha1_cmp_res=1 - fi -} - - - -#Checks if there is enough space to copy 2 files to /boot -# Sets enoughSpace_res to 0 if not enough space to do the copy, -# 1 if can saftely proceed -function enoughSpace() -{ - src1=$1 - src2=$2 - - fileSize1=$(ls -la $src1 | cut -f5 -d" ") - fileSize2=$(ls -la $src2 | cut -f5 -d" ") - # Add a buffer to space requirements to ensure we don't fill up boot - fileSize=$(($fileSize1 + $fileSize2 + 4096)) - freeSpace=$(df --output=avail $SUBDIR/boot | sed -n '1!p') - # Get free space in bytes - freeBytes=$(expr $freeSpace \* 1000) - - if [ $fileSize -lt $freeBytes ]; then - enoughSpace_res=1 - else - enoughSpace_res=0 - fi -} - -# Compares sha1_sum's of srcfile and destfile, creates backup of destfile -# if the two differ -# This backup will then be available for restoration via UEFI command line -# if the new binary fails to boot -function preCopyBackup() -{ - srcfile=$1 - destfile=$2 - - if [ ! -f $srcfile ] - then - echo " $srcfile not found. Nothing to do." - exit 1; - fi - - if [ ! -f $destfile ] - then - return 0 - fi - - sha1_cmp $srcfile $destfile - if [ $sha1_cmp_res ] - then - newname="${destfile}.old" - cp $destfile $newname - fi - - return 0 -} - - -##################### Main ##################### -if [[ $# > 2 ]] -then - printUsage -fi - -# Parse cmdline -if [[ $# > 0 ]] -then - case $1 in - -h|--help) - printUsage - exit 0 - ;; - -v|--version) - echo "bootloader_updater.sh version $VERSION" - exit 0 - ;; - -p|--path) - if [[ $# = 1 ]] - then - echo "Invalid arguments. --path requires a second argument." - exit 1 - fi - SUBDIR="$2" - ;; - *) - echo "Unrecognized argument ($1). Try again" - printUsage - exit 1 - ;; - esac -fi - -if [[ $EUID -ne 0 ]]; then - echo "Must be root to execute bootloader_updater.sh" - exit 1 -fi - -##### Mount /boot ###### -if [ -z "${SUBDIR}" ]; then - # Get boot partition UUID - BOOTUUIDENTRY=$(ls /sys/firmware/efi/efivars/LoaderDevicePartUUID*) - if [[ -e $BOOTUUIDENTRY ]]; then - UUID=$(cat $BOOTUUIDENTRY | tr -cd '[[:alnum:]]._-' | tr '[:upper:]' '[:lower:]') - fi - - strlen=${#UUID} - - IS_MOUNTED=$(mount | sed -n '/boot/p' | sed -n '/vfat/p') - if [[ -z "$IS_MOUNTED" ]]; - then - if [ "$strlen" -gt 0 ] - then - echo "Mounting boot partition with UUID=$UUID" - mount /dev/disk/by-partuuid/$UUID /boot -o rw -t vfat - else - echo "Failed to identify boot partition using /sys/firmware/efi/efivars." - echo " Attempting to mount by-partlabel" - mount /dev/disk/by-partlabel/ESP /boot -o rw -t vfat - fi - mountedBoot=1 - fi - - IS_MOUNTED=$(mount | sed -n '/boot/p' | sed -n '/vfat/p') - if [[ -z "$IS_MOUNTED" ]]; - then - echo "/boot partition was not found. Unable to continue with systemd bootloader install" - exit 1 - fi -fi - - -echo "Installing new systemd bootx binary... please wait..." -src1="$SUBDIR/usr/lib/systemd/boot/efi/systemd-bootx64.efi" -dest1="$SUBDIR/boot/EFI/systemd/systemd-bootx64.efi" -preCopyBackup $src1 $dest1 -src2="$SUBDIR/usr/lib/systemd/boot/efi/systemd-bootx64.efi" -dest2="$SUBDIR/boot/EFI/Boot/BOOTX64.EFI" -preCopyBackup $src2 $dest2 - - -if [ ! -d "$SUBDIR/boot/EFI/systemd/" ]; then - mkdir -p "$SUBDIR/boot/EFI/systemd" -fi - -if [ ! -d "$SUBDIR/boot/EFI/Boot/" ]; then - mkdir -p "$SUBDIR/boot/EFI/Boot" -fi - -function fail_msg() -{ - echo "$* - Aborting" - exit 1 -} - -# use clear's bootctl only. -function installSystemd() -{ - if [[ -z "${SUBDIR}" ]]; then - /usr/bin/bootctl install || fail_msg "Installing systemd bootloader failed" - else - # HACK - chroot "${SUBDIR}" /usr/bin/bootctl install --no-variables --force || fail_msg "Installing systemd bootloader failed" - fi -} - -function updateSystemd() -{ - if [[ -z "${SUBDIR}" ]]; then - /usr/bin/bootctl update || fail_msg "Updating systemd bootloader failed" - else - chroot "${SUBDIR}" /usr/bin/bootctl update --no-variables --force || fail_msg "Updating systemd bootloader failed" - fi -} - -# Space check before copy -enoughSpace $src1 $src2 -if [ $enoughSpace_res -eq 1 ]; then - if [[ ! -e "${dest1}" ]] || [[ ! -e "${dest2}" ]]; then - # absolutely require an install - installSystemd - fi - sha1_cmp "$src1" "$dest1" - if [ $sha1_cmp_res -eq 1 ]; then - updateSystemd - fi -else - echo "Insufficient space on /boot to install new bootloader binary" - exit 1 -fi - - -# Sync after copy to protect against VFAT corruption -pushd "$SUBDIR/boot" > /dev/null -sync -popd > /dev/null - -# Ensure older bootloader binary is not present -# Note this will only occur if the new systemd bootloader was installed -rm -Rf "$SUBDIR/boot/EFI/gummiboot" - -# Sync after cleanup to protect against VFAT corruption -pushd "$SUBDIR/boot" > /dev/null -sync -popd > /dev/null - -if [ -z "${SUBDIR}" ]; then - if [[ "${mountedBoot}" -eq 1 ]]; then - umount /boot - fi -fi - -echo "systemd bootloader update sucessful." diff --git a/recipes-core/swupd-client/oe-swupd-helpers/update-triggers.target~ b/recipes-core/swupd-client/oe-swupd-helpers/update-triggers.target~ deleted file mode 100644 index 3c2e394..0000000 --- a/recipes-core/swupd-client/oe-swupd-helpers/update-triggers.target~ +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Post system update triggers -Wants=ldconfig-trigger.service -#Wants=mandb-trigger.service -#Wants=python-trigger.service -Wants=catalog-trigger.service -Wants=tmpfiles-trigger.service -#Wants=locale-archive-trigger.service -Wants=systemd-modules-trigger.service |