<div dir="ltr"><div><div><div><div>Hi<br></div>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).<br></div>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.<br><br></div>How can I know where exactly is this mismatch? Where do I set specific librart version for my compilations?<br><br></div>My machine definition:<br> <br><div>DEFAULTTUNE ?= "x86"<br>TARGET_FPU ?= "soft"<br><br>TUNE_PKGARCH = "${TUNE_PKGARCH_tune-${DEFAULTTUNE}}"<br><br># ELF32 ABI<br>TUNEVALID[m32] = "IA32 ELF32 standard ABI"<br>TUNECONFLICTS[m32] = "m64 mx32"<br>TUNE_ARCH .= "${@bb.utils.contains("TUNE_FEATURES", "m32", "i586", "" ,d)}"<br>#TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "m32", " -m32", "", d)}"<br><br>#Add our tunning for this processor<br>TUNEVALID[geode] = "Optimizations for Geode LX"<br>TUNE_CCARGS .="-Os -pipe -march=geode -mmmx -m3dnow -fomit-frame-pointer"<br><br></div><div># Another try with no success<br></div><div># TUNE_CCARGS .="-Os -pipe -march=geode -mno-mmx -mno-sse -mno-sse2 -mno-3dnow -fomit-frame-pointer"<br># TUNE_CCARGS .="-Os -pipe -march=i386 -mtune=pentium3 -DU_HAVE_GCC_ATOMICS=0"<br># TUNE_CCARGS .="-Os -pipe -march=i686"<br><br><br># Add our machine in case we want to override with _geode<br>MACHINEOVERRIDES =. "geode"<br><br># Default Tune configurations<br>AVAILTUNES += "x86"<br>TUNE_FEATURES_tune-x86 = "m32"<br>BASE_LIB_tune-x86 = "lib"<br>TUNE_PKGARCH_tune-x86 = "x86"<br>PACKAGE_EXTRA_ARCHS_tune-x86 = "${TUNE_PKGARCH_tune-x86}"<br><br># All this is based on x86-atom-64.conf<br><br>#TARGET_ARCH = "i586"<br>TARGET_ARCH = "i686"<br>BINARY_LOCALE_ARCHES =. " geode"<br>PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"<br>PREFERRED_PROVIDER_virtual/libgl ?= "mesa"<br><br>KERNEL_IMAGETYPE = "bzImage"<br>PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"<br><br>GLIBC_ADDONS = "nptl"<br>GLIBC_EXTRA_OECONF = "--with-tls"<br># GLIBC_EXTRA_OECONF = "--with-tls --with-cpu=geode"<br><br>IMAGE_FSTYPES ?= "ext2.gz"<br><br>MACHINE_FEATURES = "kernel26 serial screen keyboard pci usbhost acpi ext2 x86"<br>MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"<br><br>BASE_PACKAGE_ARCH = "i586"<br><br>require conf/toolchain/i585-glibc-linux.conf<br>require conf/mvl-lsb.conf  --> It contains DISTROOVERRIDES .= ":linuxstdbase"<br><br></div></div>