[yocto] kernel/ libc compatibility problems

Paul Roy pauroy2 at gmail.com
Mon May 15 02:52:36 PDT 2017


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"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20170515/0a927616/attachment.html>


More information about the yocto mailing list