home *** CD-ROM | disk | FTP | other *** search
- #! /bin/sh -e
- #
- ### BEGIN INIT INFO
- # Provides: glibc
- # Required-Start:
- # Required-Stop:
- # Default-Start: S
- # Default-Stop:
- ### END INIT INFO
- #
- # This script is existed for detecting depreciated kernel version to
- # check glibc incompatibility.
-
- if [ "`uname -s`" = Linux ]; then
- # glibc kernel version check: KERNEL_VERSION_CHECK
- kernel_compare_versions () {
- verA=$(($(echo "$1" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100 + \3/')))
- verB=$(($(echo "$3" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100 + \3/')))
-
- test $verA -$2 $verB
- }
-
- exit_check () {
- sleep 5
- exit 1
- }
-
- # Test to make sure z < 255, in x.y.z-n form of kernel version
- # Also make sure we don't trip on x.y.zFOO-n form
- #kernel_rev=$(uname -r | tr -- - . | cut -d. -f3 | tr -d '[:alpha:]')
- kernel_rev=$(uname -r | sed 's/\([0-9]*\.[0-9]*\.\)\([0-9]*\)\(.*\)/\2/')
- if [ "$kernel_rev" -ge 255 ]
- then
- echo WARNING: Your kernel version indicates a revision number
- echo of 255 or greater. Glibc has a number of built in
- echo assumptions that this revision number is less than 255.
- echo If you\'ve built your own kernel, please make sure that any
- echo custom version numbers are appended to the upstream
- echo kernel number with a dash or some other delimiter.
-
- exit_check
- fi
-
- # sanity checking for the appropriate kernel on each architecture.
- realarch=`uname -m`
- kernel_ver=`uname -r`
-
- # convert "armv4l" and similar to just "arm", and "mips64" and similar
- # to just "mips"
- case $realarch in
- arm*) realarch="arm";;
- mips*) realarch="mips";;
- esac
-
-
- # intel i386 requires a recent kernel
- if [ "$realarch" = i386 ]
- then
- # From glibc 2.3.5-7 and linux-2.6 2.6.12-1, real-i386 is dropped.
- #if kernel_compare_versions "$kernel_ver" lt 2.4.24
- #then
- echo WARNING: This machine has real i386 class processor.
- echo Debian etch and later does not support such old hardware
- echo any longer.
- echo The reason is that \"bswap\" instruction is not supported
- echo on i386 class processors, and some core libraries have
- echo such instruction. You\'ll see illegal instruction error
- echo when you upgrade your Debian system.
- exit_check
- #fi
- fi
-
- # The GNU libc is now built with --with-kernel= >= 2.4.1, except on m68k
- if [ "$realarch" != m68k ]
- then
- if kernel_compare_versions "$kernel_ver" lt 2.4.1
- then
- echo WARNING: This version of glibc requires that you be running
- echo kernel version 2.4.1 or later. Earlier kernels contained
- echo bugs that may render the system unusable if a modern version
- echo of glibc is installed.
- exit_check
- fi
- fi
- # SPARC sun4m requires a recent kernel
- if [ "$realarch" = sparc ]
- then
- cputype=`egrep '^type.*:.*sun4m' /proc/cpuinfo 2> /dev/null` || true
-
- if [ "$cputype" != "" ]
- then
- if kernel_compare_versions "$kernel_ver" lt 2.4.21
- then
- echo WARNING: You have a cpu which requires kernel 2.4.21
- echo or greater in order to install this version of glibc.
- echo Please upgrade the kernel before installing this package.
- echo
- echo You should be able to install the latest version of the
- echo sparc kernel-image in order to satisfy this need. You
- echo can also download and compile the latest kernel source
- echo yourself from a kernel mirror \(see http://www.kernel.org/\).
- exit_check
- fi
- fi
- fi
- # HPPA boxes require latest fixes in the kernel to function properly.
- if [ "$realarch" = parisc ]
- then
- if kernel_compare_versions "$kernel_ver" lt 2.4.17
- then
- echo WARNING: This version of glibc requires that you be running
- echo atleast a 2.4.17 kernel in order to work properly. Earlier
- echo kernels did not provide the proper functionality in order
- echo for the system to be stable.
- exit_check
- fi
- fi
- # parisc64 boxes require latest fixes in the kernel 2.4.19-pa17 or later
- # (in 2.4.x), 2.5.53-pa3 or later (in 2.5.x), to function properly.
- # Note that parisc64 kernel version scheme is "`uname -r`-64".
- if [ "$realarch" = parisc64 ]
- then
- kernel_ver_pa=$(echo "$kernel_ver" | sed 's/pa//')
- if [ "$kernel_ver" = "$kernel_ver_pa" ]
- then
- if kernel_compare_versions "$kernel_ver" lt 2.4.19-64
- then
- echo WARNING: This version of glibc requires that you be
- echo running at least a 2.4.19-64 to work properly.
- echo Earlier kernels did not provide the proper functionality
- echo in order for the system to be stable.
- exit_check
- fi
- else
- if kernel_compare_versions "$kernel_ver" lt 2.4.19-pa17
- then
- echo WARNING: This version of glibc requires that you be
- echo running at least a 2.4.19-pa17 in \(2.4\) or 2.5.53-pa3
- echo \(in 2.5\) to work properly.
- echo Earlier kernels did not provide the proper functionality
- echo in order for the system to be stable.
- exit_check
- fi
- fi
- fi
-
- if [ "$realarch" = mips ] \
- && [ i386 = mips ]
- then
- # MIPS (but not mipsel) require a kernel update for the msq fixes.
- if kernel_compare_versions "$kernel_ver" lt 2.4.22
- then
- echo WARNING: System V message queues require kernel 2.4.22 to
- echo work correctly on this architecture. Some programs
- echo "(including perl) may not operate correctly."
- exit_check
- fi
- fi
-
- # amd64 requires 2.6 kernel because we drop to support linuxthreads
- if [ "$realarch" = x86_64 ] \
- && [ i386 = amd64 ]
- then
- if kernel_compare_versions "$kernel_ver" lt 2.6.0
- then
- echo WARNING: POSIX threads library NPTL requires 2.6 and
- echo later kernel on amd64. If you use 2.4 kernel, please
- echo upgrade your kernel before installing glibc.
- exit_check
- fi
- fi
-
- # In Ubuntu, we have dropped LinuxThreads. We require the 2.6 kernel.
- if kernel_compare_versions "$kernel_ver" lt 2.6.0
- then
- echo WARNING: POSIX threads library NPTL requires 2.6 and
- echo later kernel. You are using a 2.4 kernel, please
- echo upgrade your kernel before installing glibc.
- exit_check
- fi
-
- fi
-
- : exit 0
-