LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File pre.sh of Package kernel-source (Project Kernel:HEAD)

# 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 [ @BASE_PACKAGE@ = 1 -a "$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