kernel-source/pre.sh

63 lines
2.1 KiB
Bash

# see bug #259303
# this script runs when the kernel gets updated with YaST
# YaST calls rpm always with -U
# -U replaces all packages with the new one
# rpm removes the files from the old packages after the postinstall script ran
# this will double the required space below /boot
# remove the files from the old packages to make room for the new initrd
# rpm may complain about low disk space if /boot/vmlinux does not fit
if [ "$YAST_IS_RUNNING" != "" ]; then
mydf="$( POSIXLY_CORRECT=1 df -P /boot/ | awk '/^(\/|-[[:blank:]])/{ print $4}' )"
if test "$mydf" != "" ; then
echo "Free diskspace below /boot: $mydf blocks"
# echo "512 byte blocks: $(( 2 * 1024 * 20 ))"
if test "$mydf" -lt "40960" ; then
echo "make room for new kernel '@FLAVOR@' because there are less than 20MB available."
# disabled because it breaks patch rpms
#rm -fv /boot/@IMAGE@-*-@FLAVOR@
rm -fv /boot/initrd-*-@FLAVOR@
fi
fi
fi
# On AArch64 we switched from 64k PAGE_SIZE to 4k PAGE_SIZE. Unfortunately
# btrfs can only use file systems created with the same PAGE_SIZE. So we
# check if the user has any btrfs file systems mounted and refuse to install
# in that case.
if [ $( uname -m ) = aarch64 -a \
"$( zgrep CONFIG_ARM64_64K_PAGES=y /proc/config.gz )" -a \
@FLAVOR@ = default ]; then
if [ "$FORCE_4K" = 1 ]; then
# The user knows what he's doing, let him be.
exit 0
fi
if [ "$YAST_IS_RUNNING" = "instsys" ]; then
# We're probably test installing the kernel, that should succeed
exit 0
fi
cat >&2 <<-EOF
You are running on a 64kb PAGE_SIZE kernel. The default kernel
switched to 4kb PAGE_SIZE which will prevent it from mounting btrfs
or the swap partition.
To ensure that your system still works, I am refusing to install
this kernel. If you want to force installation regardlesss, reinstall
with the environment variable FORCE_4K set to 1.
To stay with a 64kb PAGE_SIZE kernel, please follow these steps:
$ zypper in kernel-64kb
[ reboot into the new kernel ]
$ zypper rm kernel-default
You will then be on the 64kb PAGE_SIZE kernel and can update your
system normally.
EOF
exit 1
fi