Hi Paul,
As per glibc 2.24 you'll need the a 3.2 kernel at least
(https://abi-laboratory.pro/tracker/changelog/glibc/2.24/log.html):
"The minimum Linux kernel version that this version of the GNU C Library
can be used with is 3.2, except on i[4567]86 and x86_64, where Linux
kernel version 2.6.32 or later suffices (on architectures that already
required kernel versions more recent than 3.2, those requirements remain
unchanged). Linux 3.2 or later kernel headers are required on all
architectures."
You could try --enable-kernel=2.6.32 as per instructions on:
http://www.linuxfromscratch.org/lfs/view/7.10/chapter05/glibc.html but
not guaranteed that will work.
We're running into the same issues for our project which uses some
"older open" ARM based chipsets which only have a 3.0 kernel available
for example.
Best regards,
Herman
On 2017-05-15 11:52, Paul Roy wrote:
Hi
I´m using Yocto to create a new machine definition for a Gedeon-LX
board. I can compile the kernel and all the rootfs binaries, but
kernel boot crashes exactly at the /sbin/init load moment. It seems a
problem with some mismatch among kernel and libc library present in my
rootfs, because if I copy the /libs directory from my previous
(old,and working) version, boot process is successful. I think i´ve
narrowed the problem down to libc.so library not been compatible with
my kernel, so some problem happens just when the kernel has to prepare
the right loading enviroment (ld-linux.so / libc etc) for first user
space program (init).
Also, I have NO problems creating my Linux system with same Yocto
enviroment/recipes for other platforms, so I think the problem is I´m
not correctly telling Yocto with libc version to use for my "new"
machine. Trying to change from -march=gedeon to -march=i686 for all
the compilation flags does not change result.
How can I know where exactly is this mismatch? Where do I set specific
librart version for my compilations?
My machine definition:
DEFAULTTUNE ?= "x86"
TARGET_FPU ?= "soft"
TUNE_PKGARCH = "${TUNE_PKGARCH_tune-${DEFAULTTUNE}}"
# ELF32 ABI
TUNEVALID[m32] = "IA32 ELF32 standard ABI"
TUNECONFLICTS[m32] = "m64 mx32"
TUNE_ARCH .= "${@bb.utils.contains("TUNE_FEATURES", "m32", "i586", ""
,d)}"
#TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "m32", " -m32",
"", d)}"
#Add our tunning for this processor
TUNEVALID[geode] = "Optimizations for Geode LX"
TUNE_CCARGS .="-Os -pipe -march=geode -mmmx -m3dnow
-fomit-frame-pointer"
# Another try with no success
# TUNE_CCARGS .="-Os -pipe -march=geode -mno-mmx -mno-sse -mno-sse2
-mno-3dnow -fomit-frame-pointer"
# TUNE_CCARGS .="-Os -pipe -march=i386 -mtune=pentium3
-DU_HAVE_GCC_ATOMICS=0"
# TUNE_CCARGS .="-Os -pipe -march=i686"
# Add our machine in case we want to override with _geode
MACHINEOVERRIDES =. "geode"
# Default Tune configurations
AVAILTUNES += "x86"
TUNE_FEATURES_tune-x86 = "m32"
BASE_LIB_tune-x86 = "lib"
TUNE_PKGARCH_tune-x86 = "x86"
PACKAGE_EXTRA_ARCHS_tune-x86 = "${TUNE_PKGARCH_tune-x86}"
# All this is based on x86-atom-64.conf
#TARGET_ARCH = "i586"
TARGET_ARCH = "i686"
BINARY_LOCALE_ARCHES =. " geode"
PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
KERNEL_IMAGETYPE = "bzImage"
PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
GLIBC_ADDONS = "nptl"
GLIBC_EXTRA_OECONF = "--with-tls"
# GLIBC_EXTRA_OECONF = "--with-tls --with-cpu=geode"
IMAGE_FSTYPES ?= "ext2.gz"
MACHINE_FEATURES = "kernel26 serial screen keyboard pci usbhost acpi
ext2 x86"
MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
BASE_PACKAGE_ARCH = "i586"
require conf/toolchain/i585-glibc-linux.conf
require conf/mvl-lsb.conf --> It contains DISTROOVERRIDES .=
":linuxstdbase"
--
_______________________________________________
yocto mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/yocto