1) As mentioned in [2] we need to patch glibc to accept Fremantle's 2.6.28 kernel. You'll need an armhf/armel system running at least kernel 2.6.32 to do all this, so doing it on the N900 itself is no longer an option. I did all of this on my Cubieboard2, which took about 6 hours. Once you have an image running you can create new patched glibc packages on the N900 (if the watchdog doesn't kill it). I would strongly advise against using qemu, at least if you're over 40 and want it done before you retire. If you need newer glibc packages and can't create them on your own drop me a note and I'll build them. But it may take a week or so. a) On a Debian Jessie armhf (or armel) system get the glibc sources Code: apt-get source glibc b) change into the created folder and apply the following changes: This is what dpkg-source recorded of my changes: Code: Description: decrease min kernel version to 2.6.28 for Fremantle compatibility --- glibc-2.19.orig/ports/sysdeps/unix/sysv/linux/tile/configure +++ glibc-2.19/ports/sysdeps/unix/sysv/linux/tile/configure @@ -1,4 +1,4 @@ # This file is generated from configure.ac by Autoconf. DO NOT EDIT! # Local configure fragment for sysdeps/unix/sysv/linux/tile. -arch_minimum_kernel=2.6.32 +arch_minimum_kernel=2.6.28 --- glibc-2.19.orig/ports/sysdeps/unix/sysv/linux/tile/configure.ac +++ glibc-2.19/ports/sysdeps/unix/sysv/linux/tile/configure.ac @@ -1,4 +1,4 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. # Local configure fragment for sysdeps/unix/sysv/linux/tile. -arch_minimum_kernel=2.6.32 +arch_minimum_kernel=2.6.28 Additionally the testsuite checks have to be ignored during the package generation because some of them will fail: Code: # diff -u libc6/glibc-2.19/debian/testsuite-checking/compare.sh.orig libc6/glibc-2.19/debian/testsuite-checking/compare.sh --- libc6/glibc-2.19/debian/testsuite-checking/compare.sh.orig 2014-11-09 14:43:46.809977508 +0000 +++ libc6/glibc-2.19/debian/testsuite-checking/compare.sh @@ -41,5 +41,5 @@ rm -f $expected $results # This would be a lovely place to exit 0 if you wanted to disable hard failures -#exit 0 +exit 0 exit $rv c) We need to tell dpkg that we changed the sources: Code: dpkg-source --commit This will ask you to specify a name for the patch (chose whatever you like) and bring up the standard editor to provide a description for it. d) Now you can build the packages Code: debuild -us -uc
apt-get source glibc
Description: decrease min kernel version to 2.6.28 for Fremantle compatibility --- glibc-2.19.orig/ports/sysdeps/unix/sysv/linux/tile/configure +++ glibc-2.19/ports/sysdeps/unix/sysv/linux/tile/configure @@ -1,4 +1,4 @@ # This file is generated from configure.ac by Autoconf. DO NOT EDIT! # Local configure fragment for sysdeps/unix/sysv/linux/tile. -arch_minimum_kernel=2.6.32 +arch_minimum_kernel=2.6.28 --- glibc-2.19.orig/ports/sysdeps/unix/sysv/linux/tile/configure.ac +++ glibc-2.19/ports/sysdeps/unix/sysv/linux/tile/configure.ac @@ -1,4 +1,4 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. # Local configure fragment for sysdeps/unix/sysv/linux/tile. -arch_minimum_kernel=2.6.32 +arch_minimum_kernel=2.6.28
# diff -u libc6/glibc-2.19/debian/testsuite-checking/compare.sh.orig libc6/glibc-2.19/debian/testsuite-checking/compare.sh --- libc6/glibc-2.19/debian/testsuite-checking/compare.sh.orig 2014-11-09 14:43:46.809977508 +0000 +++ libc6/glibc-2.19/debian/testsuite-checking/compare.sh @@ -41,5 +41,5 @@ rm -f $expected $results # This would be a lovely place to exit 0 if you wanted to disable hard failures -#exit 0 +exit 0 exit $rv
dpkg-source --commit
debuild -us -uc
--- debian/debhelper.in/libc.preinst.orig 2017-10-08 11:32:18.123876676 +0200 +++ debian/debhelper.in/libc.preinst 2017-10-08 11:33:07.583800072 +0200 @@ -357,11 +357,11 @@ # sanity checking for the appropriate kernel on each architecture. kernel_ver=`uname -r` - # The GNU libc requires a >= 2.6.32 kernel, found in squeeze/lucid/RHEL6 - if linux_compare_versions "$kernel_ver" lt 2.6.32 + # The GNU libc requires a >= 2.6.28 kernel, found in squeeze/lucid/RHEL6 + if linux_compare_versions "$kernel_ver" lt 2.6.28 then echo WARNING: this version of the GNU libc requires kernel version - echo 2.6.32 or later. Please upgrade your kernel before installing + echo 2.6.28 or later. Please upgrade your kernel before installing echo glibc. kernel26_help --- debian/sysdeps/linux.mk.orig 2017-10-08 11:32:00.903903345 +0200 +++ debian/sysdeps/linux.mk 2017-10-08 11:32:39.073844230 +0200 @@ -1,5 +1,5 @@ # When changing this, make sure to update debian/debhelper.in/libc.preinst! -MIN_KERNEL_SUPPORTED := 2.6.32 +MIN_KERNEL_SUPPORTED := 2.6.28