Comment 2 for bug 921078

Revision history for this message
Steve Langasek (vorlon) wrote :

The handling code in the libc6.preinst is as follows:

        # The GNU libc requires a >= 2.6.18 kernel, except on m68k where a
        # 2.6.32 kernel is needed.
        if [ "$realarch" != m68k ]
        then
            # Ubuntu buildd limitation: allow just 2.6.15, although 2.6.18 is required
            # for some patches
            #if linux_compare_versions "$kernel_ver" lt 2.6.18
            vmin=2.6.15
        else
            vmin=2.6.32
        fi
        if linux_compare_versions "$kernel_ver" lt ${vmin}
        then
            echo WARNING: this version of the GNU libc requires kernel version
            echo ${vmin} or later. Please upgrade your kernel before installing
            echo glibc.
            kernel26_help

            exit 1
        fi

So on architectures other than m68k (which is irrelevant for us), the minimum version is *supposedly* 2.6.15. The error message you're getting is triggered by this having been overridden in the source (debian/sysdeps/linux.mk) without updating the preinst script.

I'm updating the preinst script in bzr to match the values included in debian/sysdeps/linux.mk so that these are in sync. I don't know of any reason that arm *needs* to have a higher base version than other archs; it was bumped as part of a global bump, on the grounds that it's always better when eglibc can leverage new kernel features. So I'll lower this requirement as well. Matthias, if you know of any reason this is a problem, please speak up.

Ultimately, though, the version of the *host* kernel is actually completely irrelevant when you're talking about emulation, because the host kernel has nothing to do with the syscall interface that qemu exposes. So I think this is actually a bug in qemu-linaro as well, for not outputting a more suitable value for uname() under emulation by default. Maybe you can work around this by exporting QEMU_UNAME=2.6.32 in the build environment?