[uClibc] rootfs still not working properly

Sean Young iguanadon_terrier at yahoo.com
Sat May 22 16:32:08 UTC 2004


Hi,

I have rebuilt the rootfs a couple of times now and am
still unable to chroot into it. This last time I built
it with the full development environment (bash,
coreutils, etc.) instead of using busybox.  I can now
get further in the process, but am still having
troubles. When I try to chroot in here is what
happens:  

[root at linux1 buildroot]# mount -o loop root_fs_i386
tmproot/
[root at linux1 buildroot]# chroot tmproot/ /bin/bash
Segmentation fault
[root at linux1 /]#

Note that chroot did actually change the root dir
despite the segfault, but this is what happens when I
try to execute even simple commands:

[root at linux1 /]# ls
Segmentation fault
[root at linux1 /]# cc
Segmentation fault
[root at linux1 /]# ldd /bin/bash
Segmentation fault

In esscence I am not sure if this is the result of an
improper configuration, wrong chroot command or build
error. Is the relevant portion of my edited Makefile,
please help point me in the right direction.

# What sortof target system shall we compile this for?
ARCH:=i386
#ARCH:=arm
#ARCH:=mips
#ARCH:=mipsel
#ARCH:=powerpc
#ARCH:=sh4
# Busybox link failing due to needing libgcc functions
that are statics.
#ARCH:=cris
                                                      
                         
# The following currently fail to build since no
shared lib support.
#ARCH:=sh64
#ARCH:=m68k
#ARCH:=v850
#ARCH:=sparc
#ARCH:=whatever
                                                      
                         
# If you are building a native gcc toolchain, do you
want to
# build the old gcc-2.95 based toolchain, or would you
prefer
# a nice and shiny new gcc-3.3.2 toolchain?
# WARNING -- 2.95 currently only builds for i386, arm,
mips*, and powerpc.
# WARNING -- 2.95 does not currently build natively
for the target.
GCC_2_95_TOOLCHAIN:=false
                                                      
                         
# Enable this to use the uClibc daily snapshot instead
of a released
# version.  Daily snapshots may contain new features
and bugfixes. Or
# they may not even compile at all, depending on what
Erik is doing...
#USE_UCLIBC_SNAPSHOT:=true
                                                      
                         
# Enable this to use the busybox daily snapshot
instead of a released
# version.  Daily snapshots may contain new features
and bugfixes. Or
# they may not even compile at all....
#USE_BUSYBOX_SNAPSHOT:=true
                                                      
                         
# Enable large file (files > 2 GB) support
BUILD_WITH_LARGEFILE:=true
                                                      
                         
# Command used to download source code
WGET:=wget --passive-ftp
                                                      
                         
# Optimize toolchain for which type of CPU?
#OPTIMIZE_FOR_CPU=$(ARCH)
#OPTIMIZE_FOR_CPU=i686
# Note... gcc 2.95 does not seem to like anything
higher than i586.
OPTIMIZE_FOR_CPU=i586
#OPTIMIZE_FOR_CPU=whatever
                                                      
                         
# Soft floating point options.
# Notes:
#   Currently builds with gcc 3.3 for arm, mips,
mipsel, powerpc.
#   (i386 support will be added back in at some
point.)
#   Only tested with multilib enabled.
#   For i386, long double is the same as double (64
bits).  While this
#      is unusual for x86, it seemed the best approach
considering the
#      limitations in the gcc floating point emulation
library.
#   For arm, soft float uses the usual libfloat
routines.
#   Custom specs files are used to set the default gcc
mode to soft float
#      as a convenience, since you shouldn't link hard
and soft float
#      together.  In fact, arm won't even let you.
# (Un)comment the appropriate line below.
#SOFT_FLOAT:=true
SOFT_FLOAT:=false
                                                      
                         
TARGET_OPTIMIZATION=-Os
TARGET_DEBUGGING= #-g
                                                      
                         
# Currently the unwind stuff seems to work for
staticly linked apps but
# not dynamic.  So use setjmp/longjmp exceptions by
default.
GCC_USE_SJLJ_EXCEPTIONS:=--enable-sjlj-exceptions
#GCC_USE_SJLJ_EXCEPTIONS:=
                                                      
                         
# Any additional gcc options you may want to
include....
EXTRA_GCC_CONFIG_OPTIONS:=
                                                      
                         
# Enable the following if you want locale/gettext/i18n
support.
# NOTE!  Currently the pregnerated locale stuff only
works for x86!
#ENABLE_LOCALE:=true
ENABLE_LOCALE:=false
                                                      
                         
# If you want multilib enabled, enable this...
MULTILIB:=--enable-multilib
                                                      
                         
# Build/install c++ compiler and libstdc++?
INSTALL_LIBSTDCPP:=true
                                                      
                         
# Build/install java compiler and libgcj? (requires
c++)
# WARNING!!! DOES NOT BUILD FOR TARGET WITHOUT
INTERVENTION!!!  mjn3
#INSTALL_LIBGCJ:=true
INSTALL_LIBGCJ:=false
                                                      
                         
# For SMP machines some stuff can be run in parallel
#JLEVEL=-j3
                                                      
                         
#############################################################
#
# The list of stuff to build for the target filesystem
#
#############################################################
TARGETS:=host-sed
                                                      
                         
ifeq ($(GCC_2_95_TOOLCHAIN),true)
TARGETS+=uclibc-configured binutils gcc2_95 ccache
else
TARGETS+=uclibc-configured binutils gcc3_3 ccache
endif
                                                      
                         
# Are you building your own kernel?  Perhaps you have
a kernel
# you have already configured and you want to use
that?  The
# default is to just use a set of known working kernel
headers.
# Unless you want to build a kernel, I recommend just
using
# that...
TARGETS+=kernel-headers
TARGETS+=linux
#TARGETS+=system-linux
                                                      
                         
# The default minimal set
#TARGETS+=busybox tinylogin
                                                      
                         
# Openssh...
TARGETS+=zlib openssl openssh
# Dropbear sshd is much smaller than openssl + openssh
#TARGETS+=dropbear_sshd
                                                      
                         
# Everything needed to build a full uClibc development
system!
TARGETS+=coreutils findutils bash make diffutils patch
sed
TARGETS+=ed flex bison file gawk tar grep bzip2
                                                      
                         
#If you want a development system, you probably want
gcc built
# with uClibc so it can run within your dev system...
#TARGETS+=gcc2_95_target ccache_target   # NOT
WORKING!!!
TARGETS+=gcc3_3_target ccache_target
                                                      
                         
# Of course, if you are installing a development
system, you
# may want some header files so you can compile
stuff....
TARGETS+=ncurses-headers zlib-headers openssl-headers
                                                      
                         
# More development system stuff for those that want it
                                                      
                         
# Some nice debugging tools
#TARGETS+=gdb strace ltrace
                                                      
                         
# The Valgrind debugger (x86 only)
#TARGETS+=valgrind
                                                      
                         
# Some stuff for access points and firewalls
TARGETS+=iptables hostap wtools dhcp_relay #bridge
#TARGETS+=iproute2 netsnmp
                                                      
                         
# Run customize.mk at the very end to add your own
special config.
# This is useful for making your own distro within the
buildroot
# process.
#TARGETS+=customize
                                                      
                         
#############################################################
#
# Pick your root filesystem type.
#
#############################################################
TARGETS+=ext2root

# Must mount cramfs with 'ramdisk_blocksize=4096'
#TARGETS+=cramfsroot
                                                      
                         
# You may need to edit make/jffs2root.mk to change
target
# endian-ness or similar, but this is sufficient for
most
# things as-is...
#TARGETS+=jffs2root
                                                      
                         
#############################################################
#
# You should probably leave this stuff alone unless
you know
# what you are doing.
#
#############################################################


Thanks,
Sean



	
		
__________________________________
Do you Yahoo!?
Yahoo! Domains – Claim yours for only $14.70/year
http://smallbusiness.promotions.yahoo.com/offer 



More information about the uClibc mailing list